📅  最后修改于: 2020-11-06 05:31:09             🧑  作者: Mango
对标准计算机硬件(例如硬盘)的取证调查和分析已发展成为一门稳定的学科,并且在分析非标准硬件或瞬态证据的技术的帮助下得以跟进。
尽管智能手机越来越多地用于数字调查,但它们仍被认为是非标准的。
法医调查会从智能手机中搜索数据,例如已接电话或已拨电话。它可以包括短信,照片或其他任何有罪证供。大多数智能手机具有使用密码或字母数字字符的屏幕锁定功能。
在这里,我们将以一个示例来说明Python如何帮助破解锁屏密码以从智能手机检索数据。
Android支持使用PIN码或字母数字密码进行密码锁定。两个密码短语的限制必须在4到16位数字或字符。智能手机的密码存储在Android系统中的一个特殊文件中,该文件位于/ data / system中的password.key 。
Android会存储密码的盐化SHA1-hashsum和MD5-hashsum。这些密码可以在以下代码中进行处理。
public byte[] passwordToHash(String password) {
if (password == null) {
return null;
}
String algo = null;
byte[] hashed = null;
try {
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();
} catch (NoSuchAlgorithmException e) {
Log.w(TAG, "Failed to encode string because of missing algorithm: " + algo);
}
return hashed;
}
由于散列密码存储在盐文件中,因此无法借助字典攻击来破解密码。此盐是64位随机整数的十六进制表示形式的字符串。使用Rooted Smartphone或JTAG Adapter可以轻松获取盐。
/data/system/password.key文件的转储存储在SQLite数据库中的lockscreen.password_salt键下。在settings.db下,存储了密码,该值在以下屏幕截图中清晰可见。
可以使用称为JTAG(联合测试操作组)适配器的特殊硬件来访问salt 。同样, Riff-Box或JIG-Adapter也可以用于相同的功能。
使用从Riff-box获得的信息,我们可以找到加密数据的位置,即salt 。以下是规则-
搜索关联的字符串“ lockscreen.password_salt”。
该字节代表盐的实际宽度,即盐的长度。
这是实际搜索以获取存储的智能手机密码/ PIN码的长度。
这些规则集有助于获取适当的盐数据。