作一個本身的WiFi密碼查看器——Android

若是本文幫助到你,本人不勝榮幸,若是浪費了你的時間,本人深感抱歉。 但願用最簡單的大白話來幫助那些像我同樣的人。若是有什麼錯誤,請必定指出,以避免誤導你們、也誤導我。 本文來自:www.jianshu.com/users/320f9… 感謝您的關注。java

WiFi密碼查看器 配合 WiFi萬能鑰匙 太爽了。 有時候用萬能鑰匙破解了密碼以後想要讓電腦連上卻又不知道密碼,或者想告訴別人密碼裝一把逼的時候,找不到密碼,就蛋疼了。 以前在小米市場下載了一個,後來更新了就不能用了,每次去翻 re文件管理 也挺麻煩的。 乾脆本身作一個,省的懼怕別人的App作什麼手腳。 最終成品: 當、當、噹噹~~~~~android

目前市面流行的查看WiFi密碼的方法基本相同, 就是想辦法進入 data/misc/wifi 目錄下,找到 wpa_supplicant.conf 文件,而後讀取裏面的數據。git

因此咱們的步驟也很是簡單github

  1. 一切的前提是應用要獲取到root權限;
  1. 用命令行的方式,獲取 /data/misc/wifi/wpa_supplicant.conf 文件的數據;
  2. 解析數據,用列表顯示;

這裏要先聲明一點,Android 上你獲取到root權限,只是表明你可使用 su 了,你依然沒法直接讀取 /data/misc/wifi/ 這個路徑的,你想要作的一切「非法」操做,都必須經過 su 來完成,也就是經過 shell 命令。 關於 shell 的方法,有個工具類,挺好用。 ShellUtils.javashell


而後來開始作:app

1. 一切的前提是應用要獲取到root權限

這個就很少說了,我的的手機如何獲取root權限,得靠本身了。工具

2. 用命令行的方式,獲取 /data/misc/wifi/wpa_supplicant.conf 文件的數據;

其實也特別簡單,直接上代碼,要點在註釋中說。spa

StringBuffer wifiConf = new StringBuffer();

Process process = null;
DataOutputStream dataOutputStream = null;
DataInputStream dataInputStream = null;
try {
	// 獲取 root 環境
    process = Runtime.getRuntime().exec("su"); 
    dataOutputStream = new DataOutputStream(process.getOutputStream());
    dataInputStream = new DataInputStream(process.getInputStream());
	// cat file 打印文件的內容
	// 獲取 /data/misc/wifi/wpa_supplicant.conf 數據,
    dataOutputStream.writeBytes("cat /data/misc/wifi/wpa_supplicant.conf\n"); 
    dataOutputStream.writeBytes("exit\n");
    dataOutputStream.flush();
    InputStreamReader inputStreamReader = new InputStreamReader(dataInputStream, "UTF-8");
    BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
    String line = null;
	// 保存數據,這裏都是最基本的 IO 操做,不作過多介紹
    while ((line = bufferedReader.readLine()) != null) {
        wifiConf.append(line);
    }
    bufferedReader.close();
    inputStreamReader.close();
    process.waitFor(); // 線程等待
} catch (Exception e) {
    return;
} finally {
    try {
        if (dataOutputStream != null) {
            dataOutputStream.close();
        }
        if (dataInputStream != null) {
            dataInputStream.close();
        }
        process.destroy(); // 線程銷燬
    } catch (Exception e) {
    }
}
複製代碼

這樣 /data/misc/wifi/wpa_supplicant.conf  文件的內容就被保存在剛開始定義的 StringBuffer 當中,接下來,咱們經過本身喜歡的方式,將數據解析出來便可。命令行

3. 解析數據,用列表顯示

都已經拿到數據了,解析完成以後,使用 ListView 進行顯示便可。線程


總體的核心就是使用 shell 獲取到 /data/misc/wifi/wpa_supplicant.conf 文件的內容,拿到數據以後,一切都變得簡單了,都是最基本的操做。

源碼在這裏: WifiPassword 裏面有 Apk 的下載連接哦~~~ wifi密碼查看我仍是用的比較多的,每次給這個 apk root 權限的時候總懼怕他幹了什麼壞事,如今終於不怕啦。

相關文章
相關標籤/搜索