昨天准备给自己的应用发布一个新版本,在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,试了多次,证明已经被天朝河蟹掉了,只能FQ下载。下载下来:AndroidKeystoreBrute_v1.05.jar
官方提供3中方法来破解密码:
1 | There are 3 Methods to recover your keystore password: |
2 | - Simply Bruteforce (简单的暴力破解) |
3 | - Dictionary Attack (字典破解) |
4 | - Smart Wordlist Attack (智能单词列表破解) 英文不好,直译的! |
用法:
02 | java -jar AndroidKeystoreBrute.jar <args> |
05 | -k <path> path to your keystore |
06 | -d <path> dictionary ( for method 2 and 3 ) |
07 | -p use common replacements like '@' for 'a' ( for method 3 ) WARNING - very slow!! |
08 | -start <String> sets the start String for the password ( for brute force) |
09 | -w writes a new keystore with same password than the key |
11 | example for brute-force attack |
12 | java -jar AndroidKeystoreBrute_v1. 05 .jar -m 1 -k <...keystore> -start AAAAAA |
13 | example for dictionary attack |
14 | java -jar AndroidKeystoreBrute_v1. 05 .jar -m 2 -k "C:\\mykeystore.keystore" -d "wordlist.txt" |
15 | example for smart wordlist attack (recommend) |
17 | java -jar AndroidKeystoreBrute_v1. 05 .jar -m 3 -k "C:\\mykeystore.keystore" -d "wordlist.txt" |
开始我用的是方法一,跑了一宿,也没跑完。默认的字母组合的密码太多了,用这种方法破解出密码太渺茫了。
后来我尝试使用方法三,其实我没注意,官方推荐就使用方法三: 先创建一个txt,比如passlib.txt: 在文本文档里输入自己常用的设置密码的短语,或者你隐约记得当初创建时可能用到的单词,反正能想到的统统写下来:
然后执行:
1 | java -jar AndroidKeystoreBrute_v1. 05 .jar -m 3 -k "C:\\mykeystore.keystore" -d "passlib.txt" |
若要是你创建的passlib.txt中的短语确实在你的keystore密码中出现过,那找回密码是瞬间的事:
我的执行结果:
1 | Got Password in 0 seconds |
2 | Password is: android521 for alias ldxxfirstapp |
注:命令行执行java -jar 命令时,根目录一定是 AndroidKeystoreBrute_v1.05.jar所在的目录,比如 AndroidKeystoreBrute_v1.05.jar放在 C:\key\ AndroidKeystoreBrute_v1.05.jar下,先得cd C:\key 然后在执行,否则会报错的。