Android keystore 密碼找回

鴨脖發表於2015-06-23
本帖最後由 遼東小小 於 2014-5-14 15:15 編輯

昨天準備給自己的應用釋出一個新版本,在apk打包時,發現之前的用的keystore密碼忘了。
蛋碎了一地,我把我所能想到的密碼都試了一遍(注:我平常在各個入口網站註冊基本上用的都是那幾個字母和數字組合做密碼),無果。
折騰到凌晨一點半,死的心都有了。

Google和百度搜個底朝天,也沒找到解決辦法,Stackoverflow上的大牛們說,只有兩個辦法:1.想出密碼 ;2.重新修改包名,重新生成keystore,重新釋出一個新的應用。

後來在知乎上看到有人給出一個連結,抱著試試看的態度進去看了一下,結果真的可以!

下邊分享一下經驗:
    【軟體】:Android Keystore Password Recovery
    【網址】:https://code.google.com/p/android-keystore-password-recover/
    【執行環境】:JDK7

     下載jar包:https://drive.google.com/file/d/0B_Rw7kNjv3BATldrLXMwcVRud2c/edit?usp=sharing,試了多次,證明已經被天朝河蟹掉了,只能翻牆下載。下載下來:AndroidKeystoreBrute_v1.05.jar

       官方提供3中方法來破解密碼:
        [mw_shl_code=java,true]There are 3 Methods to recover your keystore password:
- Simply Bruteforce          (簡單的暴力破解)
- Dictionary Attack           (字典破解)
- Smart Wordlist Attack   (智慧單詞列表破解)       英文不好,直譯的![/mw_shl_code]
用法:
[mw_shl_code=java,true]execute with
java -jar AndroidKeystoreBrute.jar <args>
possible args
-m <1..3> Method
-k <path>  path to your keystore
-d <path> dictionary (for method 2 and 3)
-p use common replacements like '@' for 'a'(for method 3) WARNING - very slow!! 
-start <String> sets the start String for the password (for brute force)
-w writes a new keystore with same password than the key
-h prints helpscreen
example for brute-force attack
java -jar AndroidKeystoreBrute_v1.05.jar -m 1 -k <...keystore> -start AAAAAA
example for dictionary attack
java -jar AndroidKeystoreBrute_v1.05.jar -m 2 -k "C:\\mykeystore.keystore" -d "wordlist.txt" 
example for smart wordlist attack (recommend)

java -jar AndroidKeystoreBrute_v1.05.jar -m 3 -k "C:\\mykeystore.keystore" -d "wordlist.txt" [/mw_shl_code]


開始我用的是方法一,跑了一宿,也沒跑完。預設的字母組合的密碼太多了,用這種方法破解出密碼太渺茫了。

後來我嘗試使用方法三,其實我沒注意,官方推薦就使用方法三:
          先建立一個txt,比如passlib.txt: 在文字文件裡輸入自己常用的設定密碼的短語,或者你隱約記得當初建立時可能用到的單詞,反正能想到的統統寫下來:
         [mw_shl_code=java,true]helloworld
         ILoveYou
         java 
         android
         com.ldxx.firstapp[/mw_shl_code]

然後執行:
       [mw_shl_code=java,true] java -jar AndroidKeystoreBrute_v1.05.jar -m 3 -k "C:\\mykeystore.keystore" -d "passlib.txt" [/mw_shl_code]
若要是你建立的passlib.txt中的短語確實在你的keystore密碼中出現過,那找回密碼是瞬間的事:
       我的執行結果:


    [mw_shl_code=java,true] Got Password in 0 seconds
     Password is: android521 for alias ldxxfirstapp[/mw_shl_code]


注:命令列執行java -jar 命令時,根目錄一定是 AndroidKeystoreBrute_v1.05.jar所在的目錄,比如 AndroidKeystoreBrute_v1.05.jar放在
C:\key\ AndroidKeystoreBrute_v1.05.jar下,先得cd C:\key 然後在執行,否則會報錯的。

相關文章