Как я могу программно читать пароли wifi в android

Я пытаюсь получить пароли WiFi программно с устройства без привязки к Android.

Все, что мне нужно – это возможность читать пароли, мне не нужно их редактировать.

Могу ли я получить разрешение в файле манифеста?

Это невозможно, так как это будет серьезным риском для безопасности.

Вы можете быть в состоянии, если телефон укоренен, но я не знаю, я бы себе представлял, и надеюсь, даже если вы сможете добраться до того, где он хранится на телефоне, он будет зашифрован.

В большинстве случаев учетные данные Wi-Fi управляются wpa_supplicant , которые хранят это в файле конфигурации, например /data/misc/wifi/wpa_supplicant.conf .

В этом файле вы найдете network структуры, которые хранят запоминаемые сети следующим образом:

 network={ ssid="example" key_mgmt=WPA-PSK psk="passphrase" } 

Обычно этот файл принадлежит пользователю системы, например wifi или root . Поэтому вы должны быть root если хотите прочитать его напрямую.

Тем не менее, вы можете получить ssid или другие сетевые переменные из запоминающих сетей, используя команду wpa_cli :

 $ wpa_cli get_network <id> ssid "example" 

Но если вы попробуете с psk вы получите * как это угроза безопасности:

 $ wpa_cli get_network <id> psk * 

Если ваше приложение является привилегированным приложением (то есть – установлено в /system/priv-app например, с помощью SuperUser), вы можете использовать новый WifiManager#getPrivilegedConfiguredNetworks() в Lollipop и новее.

См. https://android.googlesource.com/platform/frameworks/base/+/758bdf4a915c313f1c3bef0b95b494c91f363f03%5E%21/#F1

Нет поддержки API для чтения / записи паролей WiFi для APK, не подписанных с системным ключом. Таким образом, вы не сможете получить его.