如何在Android中以编程方式读取wifi密码
我正在尝试通过编程方式从非根安卓设备获取WiFi密码 所有我需要的是能够读取密码,我不需要能够编辑它们如何在Android中以编程方式读取wifi密码,android,wifi,manifest,Android,Wifi,Manifest,我正在尝试通过编程方式从非根安卓设备获取WiFi密码 所有我需要的是能够读取密码,我不需要能够编辑它们 我可以在清单文件中获得权限吗?这是不可能的,因为这将是一个重大的安全风险 如果手机是根目录的话,你也许可以这样做,但我不知道,我会想象,并且希望,即使你能找到它存储在手机上的地方,它也会被加密 没有API支持读取/写入未使用系统密钥签名的APK的WiFi密码。因此,您将无法检索它。大多数情况下,Wi-Fi凭据由守护进程管理,守护进程将其存储在配置文件中,如/data/misc/wifi/wpa
我可以在清单文件中获得权限吗?这是不可能的,因为这将是一个重大的安全风险
如果手机是根目录的话,你也许可以这样做,但我不知道,我会想象,并且希望,即使你能找到它存储在手机上的地方,它也会被加密 没有API支持读取/写入未使用系统密钥签名的APK的WiFi密码。因此,您将无法检索它。大多数情况下,Wi-Fi凭据由守护进程管理,守护进程将其存储在配置文件中,如
/data/misc/wifi/wpa_supplicant.conf
在此文件中,您将找到存储记住的网络的结构,如下所示:
network={
ssid="example"
key_mgmt=WPA-PSK
psk="passphrase"
}
此文件通常由系统用户(如wifi
或root
)拥有。因此,如果您想直接阅读,您必须是root
但是,您可以使用wpa_cli
命令获取记住网络的ssid
或其他网络变量:
$ wpa_cli get_network <id> ssid
"example"
如果您的应用程序是特权应用程序(例如使用超级用户安装在
/system/priv-app
中),那么您可以在棒棒糖和更新版本中使用新的WifiManager#getPrivilegedConfiguredNetworks()
API
请参阅:我可以获取连接的wifi网络的密码吗?不,这同样是一个安全风险,如果您已连接,您可能知道密码Google Chromecast(现在的Home)可以读取当前的wifi密码并将其提供给Chromecast…Home有必要的特权这样做,这是不公平的,但这是谷歌;)我可以获取已连接wifi网络的密码吗?已连接wifi网络的密码存储在您的手机中。但您需要根访问权限才能读取此文件。此文件在最新的android(kitkat)中没有此类信息。如何在kitkat中做到这一点?这个问题的答案声称适用于早期版本的Android,但不适用于较新版本:我想知道谷歌家庭应用程序在安装chromecast/家庭设备时是否就是这样做的。这真的让入职员工变得更加圆滑。
$ wpa_cli get_network <id> psk
*