Как программно проверить парольную фразу WPA в Linux?

Я пытаюсь проверить ввод пользователя SSID и парольной фразы WPA для соединения WPA. Моя программа - это программа на Python, работающая на встроенной платформе Linux. Я могу проверить, существует ли точка доступа с SSID, анализируя вывод iwlist scan подпроцесс. Однако проверка парольной фразы не так проста. Пока что единственное решение, которое я придумала, это проанализировать вывод

wpa_supplicant -Dwext -iwlan0 -c/tmp/wpa_supplicant.conf

находясь в поиске

"предварительный ключ может быть неправильным"

или сообщение ядра

"Код причины OnDeAuth (15)"

(что означает WLAN_REASON_4WAY_HANDSHAKE_TIMEOUT в соответствии с источником wpa_supplicant).

Интерпретация тайм-аута рукопожатия как неверной парольной фразы кажется неправильной. Кроме того, этот подход требует ожидания некоторого вывода из подпроцесса и предполагает отсутствие сообщений об ошибках, что означает, что пароль является действительным.

Погуглив это, я получаю много вопросов и советов о том, как взломать WPA-соединение! Нет никаких wpa_cli или же iwevent в репозитории yum для моей целевой платформы, и я не уверен, как сделать так, чтобы сторонний пакет python работал на моей цели.

Вопрос: Какой самый простой способ проверки пароля Wi-Fi WPA?

1 ответ

Решение

Ну, не очень простой (но единственный возможный) способ удовлетворить ваши потребности - начать рукопожатие с AP.
Поскольку вы пишете код на Python, Scapy будет вашим лучшим вариантом для создания пакетов сообщений EAPOL.
Вы должны будете знать структуру пакетов EAPOL и полностью реализовать ее в своем коде.
Вам также придется перекодировать в Python функции для генерации ключей, большинство из которых (если не все) являются PRF **(псевдослучайные функции); в качестве альтернативы, вы можете импортировать готовые.DLL-файлы, чтобы сделать кодировку для вас.

Тем не менее, этого будет достаточно для управления только первыми 3 сообщениями из четырехстороннего рукопожатия:
Если после нескольких попыток подключения AP не отправляет 3-е сообщение ключа, то MIC (проверка целостности сообщения) от STA не совпадает с генерируемым AP, и, таким образом, пароль является недействительным.
В противном случае это так.

Примечание: wpa_supplicant следует той же процедуре для аутентификации и подключения, однако он продолжает для получения дополнительной информации, такой как IP-адрес и что нет... Вот почему я сказал, что это единственный возможный способ.

Другие вопросы по тегам