
Открытая реализация протокола обмена паролями Wi-Fi от Apple на Python.
Реализация с открытым исходным кодом роли предоставляющего в протоколе общего доступа к паролям Wi-Fi от Apple.
OpenWifiPass — это экспериментальное программное обеспечение, являющееся результатом усилий по обратному инжинирингу проекта Open Wireless Link. Код служит исключительно документальным и образовательным целям. Он не протестирован и не завершён. Например, код не проверяет личность запрашивающей стороны. Поэтому не используйте данную реализацию с критичными учётными данными Wi-Fi. OpenWifiPass не связан с Apple Inc. и не одобрен ею.
Аппаратное обеспечение: Радиомодуль Bluetooth Low Energy, например, Raspberry Pi 4
ОС: Linux (из-за зависимости от bluepy)
Клонируйте этот репозиторий и установите его:
git clone [email protected]/seemoo-lab/openwifipass.git
pip3 install ./openwifipass
Запустите openwifipass, чтобы предоставить учётные данные Wi-Fi (SSID и PSK) любому запрашивающему (для использования подсистемы Bluetooth требуются права суперпользователя):
sudo -E python3 -m openwifipass --ssid <SSID> --psk <PSK>
Используйте кавычки вашей оболочки, чтобы убрать специальное значение определённых символов в SSID/PSK. В примере ниже мы используем одинарные кавычки ('), чтобы предотвратить раскрытие оболочкой символа $ в PSK.
Успешный запуск протокола выглядит следующим образом:
pi@raspberrypi:~/openwifipass $ sudo -E python3 -m openwifipass --ssid OWL --psk '$uper$ecretPassword'
Start scanning...
SSID match in PWS advertisement from aa:bb:cc:dd:ee:ff
Connect to device aa:bb:cc:dd:ee:ff
Send PWS1
Receive PWS2
Send M1
Receive M2
Send M3
Receive M4
Send PWS3
Receive PWS4
Wi-Fi Password Sharing completed
Этот проект содержит переиспользуемый (де)сериализатор OPACK. Подробнее читайте в OPACK.md.
OpenWifiPass распространяется по лицензии GNU General Public License v3.0.