我正在尝试从非root用户设备上以编程方式获取WiFi密码。
我只需要能够读取密码,我不需要能够编辑它们。
我可以在清单文件中获得许可吗?
答案 0 :(得分:7)
如果您的应用程序是特权应用程序(例如,安装在/system/priv-app
中,例如使用SuperUser),那么您可以在Lollipop和更新版本中使用新的WifiManager#getPrivilegedConfiguredNetworks()
API。
答案 1 :(得分:6)
这是不可能的,因为这将是一个主要的安全风险。
如果手机已植根但我不知道,你可能会想到,并希望,即使你可以到达手机上存储的地方,它也会被加密。
答案 2 :(得分:6)
大多数情况下,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
*
答案 3 :(得分:3)
没有API支持读取/写入未使用系统密钥签名的APK的WiFi密码。所以你将无法检索它。