我怎么能以编程方式在android中读取wifi密码

时间:2014-01-24 10:40:23

标签: android wifi manifest

我正在尝试从非root用户设备上以编程方式获取WiFi密码。

我只需要能够读取密码,我不需要能够编辑它们。

我可以在清单文件中获得许可吗?

4 个答案:

答案 0 :(得分:7)

如果您的应用程序是特权应用程序(例如,安装在/system/priv-app中,例如使用SuperUser),那么您可以在Lollipop和更新版本中使用新的WifiManager#getPrivilegedConfiguredNetworks() API。

请参阅:https://android.googlesource.com/platform/frameworks/base/+/758bdf4a915c313f1c3bef0b95b494c91f363f03%5E%21/#F1

答案 1 :(得分:6)

这是不可能的,因为这将是一个主要的安全风险。

如果手机已植根但我不知道,你可能会想到,并希望,即使你可以到达手机上存储的地方,它也会被加密。

答案 2 :(得分:6)

大多数情况下,Wi-Fi凭据由wpa_supplicant守护程序管理,该守护程序将其存储在/data/misc/wifi/wpa_supplicant.conf等配置文件中。

在此文件中,您将找到network个结构,用于存储记住的网络,如下所示:

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

此文件通常由wifiroot等系统用户拥有。如果你想直接阅读它,你必须是root

尽管如此,您可以使用ssid命令获取记住网络的wpa_cli或其他网络变量:

$ wpa_cli get_network <id> ssid
"example"

但如果您尝试使用psk,则会收到*,因为这会带来安全风险:

$ wpa_cli get_network <id> psk
*

答案 3 :(得分:3)

没有API支持读取/写入未使用系统密钥签名的APK的WiFi密码。所以你将无法检索它。