理解内置字符集的局限性
在本步骤中,你将了解 Hashcat 的内置字符集以及它们为何并非总是最高效的工具。
Hashcat 在掩码攻击中使用占位符,称为字符集,来表示不同类型的字符:
?l = abcdefghijklmnopqrstuvwxyz
?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
?d = 0123456789
?s = !"#$%&'()*+,-./:;<=>?@[]^_`{|}~
?a = 以上所有字符的组合
这些对于一般情况很有用,但如果我们知道密码是由一个非常特定、有限的字符集组成的,使用这些广泛的字符集就会效率低下。
首先,让我们检查需要破解的目标哈希。设置脚本已在你的当前目录(~/project)中创建了一个名为 hash.txt 的文件。
查看其内容:
cat hash.txt
你应该会看到以下 MD5 哈希:
2a5c3a657a73613391a8e58f1a43161e
此哈希对应一个 8 个字符的密码,该密码仅由字符 l, a, b, e, x, 1, 2, 3 组成。如果我们使用内置的 ?l 和 ?d 字符集,Hashcat 将会浪费时间尝试所有 26 个小写字母和 10 个数字,而不是仅尝试已知的 8 个字符。在下一步中,我们将创建一个自定义字符集来解决这个问题。