做一個自己的WiFi密碼檢視器——Android

Wing_Li發表於2018-12-03

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

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

做一個自己的WiFi密碼檢視器——Android

目前市面流行的檢視WiFi密碼的方法基本相同, 就是想辦法進入 data/misc/wifi 目錄下,找到 wpa_supplicant.conf 檔案,然後讀取裡面的資料。

所以我們的步驟也非常簡單

  1. 一切的前提是應用要獲取到root許可權;
  1. 用命令列的方式,獲取 /data/misc/wifi/wpa_supplicant.conf 檔案的資料;
  2. 解析資料,用列表顯示;

這裡要先宣告一點,Android 上你獲取到root許可權,只是代表你可以使用 su 了,你依然無法直接讀取 /data/misc/wifi/ 這個路徑的,你想要做的一切“非法”操作,都必須通過 su 來完成,也就是通過 shell 命令。 關於 shell 的方法,有個工具類,挺好用。 ShellUtils.java


然後來開始做:

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

這個就不多說了,個人的手機如何獲取root許可權,得靠自己了。

2. 用命令列的方式,獲取 /data/misc/wifi/wpa_supplicant.conf 檔案的資料;

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

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 許可權的時候總害怕他幹了什麼壞事,現在終於不怕啦。

相關文章