Мы хотим сделать для hostapd путь к расширению технологии WPA PPSK. WPA имеет шаги аутентификации, называемые 4-сторонним рукопожатием. Логика подобна 0) AP знает простой пароль SSID, клиент тоже знает 1) AP генерирует значение random1, отправляя его Wi-Fi-клиенту 2) Клиент генерирует random2 и создает «хеш» из [plain_password.random1.random2] и отправляет этот хеш на hostapd. 3) Hostapd тоже знает plain_password - поэтому он принимает хеш [plain_password.random1.random2] - и если они такие же => клиент тоже знает plain_password 4) Допустим, "хостап отправляет приветственное сообщение клиенту" Этот процесс полностью описан в этой статье Включая названия параметров, как в микроскопе. ============================= Существует технология PPSK, логика которой такова: «AP запрашивает удаленный сервер RADIUS, какой пароль у этого user_mac». Это близко к тому, что нам нужно, оттуда можно брать образцы radius-call, но нам нужна другая логика. Нам нужны подэтапы после 2) 2.1)% milestone1 + 2% После получения хэша [plain_password.random1.random2] и random1 random2 - мы должны в синхронизирующем вызове (мы должны остановить текущий поток) отправить эту информацию на удаленный сервер RADIUS Радиус вернет plain_password для пользователя, а настоящий hostapd пересчитает [plain_password.random1.random2] и перейдет к шагу 3) 2.2)% milestone3% На VPS радиус-сервера будет приложение, которое получит [plain_password.random1.random2] и random1 random2, прочитает простой пароль из файла и пересчитает хэш - они должны быть одинаковыми 2.3)% milestone4% Приложение на VPS должно уметь вычислять хэш для многих простых паролей, определять, какой пароль используется клиентом для его [plain_password.random1.random2], и отправлять этот простой пароль обратно на настоящий hostapd ===================== 1) Добавьте дополнительную синхронизацию (она должна ждать ответа радиуса) вызова freeradius перед 2 4 шагом 4-стороннего рукопожатия WPA. Radius вернет пароль, с которым 2 4 шага 4-стороннего WPA-рукопожатия вычислит PTK hash и отправит его wifi-клиенту. - ожидания - мы из нашего радиуса отправим пользователю действительный и nvalid пароль. С действующим настоящим hostapd должен передать его в 2) Звонок должен содержать всю информацию, необходимую для вычисления «хэша» PTK 2 4 шага 4-стороннего WPA-рукопожатия. - ожидания - мы должны видеть в дополнительных заголовках радиуса (или вы предпочитаете 3) Нам нужен C-исполняемый файл (с исходниками можно взять часть источников hostapd, которые вычисляют такой PTK хеш), который будет - взять информацию с шага 2 - прочитать простой пароль из текстового файла - вычислять хеш как в реальном hostapd - мы ожидаем, что хеш в реальном hostapd и в "remote hostapd" должен быть одинаковым - ожидания - мы должны иметь возможность сохранить действительный пароль в текстовом файле - клиент Wi-Fi будет авторизован. Если пароль неверный - он не сможет подключиться к wifi 4) C-исполняемый файл должен иметь возможность - читать данные из базы данных (MySQL?). Допустим, будет 100 простых паролей - сделать пересчет PTK hash для каждого простого пароля (нужен многопоточный способ) - показать хеш, для которого из plain_passwords было точно такое же, как в информации, полученной от радиуса вызова - ожидания - мы хотим сохранить в базе данных 100 паролей, если один из них будет действительным => пользователь будет авторизован настоящим hostapd ![]() Бюджет: 70000 руб. Город: Москва Вид предложения: Удаленная работа (разовый заказ) Оплата: безопасная сделка Категория: Программирование Добавлено: 27.03.2021 в 19:03 |
|
|
|