如何在Android中以编程方式读取WiFi密码

13
我正在尝试从非root的Android设备中以程序方式获取WiFi密码。 我只需要能够读取密码,不需要能够编辑它们。 我可以在清单文件中获取权限吗?

这个问题的答案声称适用于早期版本的Android,但对于更近期的版本不起作用:https://dev59.com/aG855IYBdhLWcg3wYjOF - ThomasW
4个回答

9

11
我想知道谷歌家庭应用程序在引导 Chromecast/Home 设备时是否就是这样做的。这确实使得引导过程更加顺畅。 - scottyab

7
大多数情况下,Wi-Fi凭据由wpa_supplicant守护程序管理,并存储在像/data/misc/wifi/wpa_supplicant.conf这样的配置文件中。在此文件中,您将找到存储记住的网络的network结构,如下所示:
network={
    ssid="example"
    key_mgmt=WPA-PSK
    psk="passphrase"
}

这个文件通常归属于像wifi或者root这样的系统用户。因此,如果想要直接读取它,你必须是root用户。

然而,你可以使用wpa_cli命令获取已经连接过的网络的ssid或其他网络变量:

$ wpa_cli get_network <id> ssid
"example"

但是如果你使用psk,你会得到一个*,因为这是一种安全风险:

$ wpa_cli get_network <id> psk
*

1
这个文件在最新的安卓系统(奇巧巧克力)中没有这样的信息。如何在奇巧巧克力中实现它? - Jitendra Pancholi

7

这是不可能的,因为这将会是一个重大的安全风险。

如果手机已经被root过,你可能可以这样做,但我不确定。即使你能够找到它在手机上存储的位置,我希望并相信它也会被加密。


我可以获取连接的 WiFi 网络的密码吗? - fergany
不,再次这将是一个安全风险,而且如果您已连接,为什么需要这样做呢?您可能已经知道密码了。 - Boardy
3
谷歌 Chromecast(现在是 Home)可以读取当前的 Wi-Fi 密码并提供给 Chromecast 使用。 - mtrakal
嗯,Home有必要的特权来这样做,虽然不公平,但这就是Google ;) - w00ly

3

对于未使用系统密钥签名的APK,没有API支持读取/写入WiFi密码。因此,您将无法检索它。


我可以获取已连接WiFi网络的密码吗? - fergany
连接的WiFi网络密码存储在您的手机中。但是,您需要Root访问权限才能读取此文件。 - Bishan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接