比较掩码攻击与字典攻击的性能
在最后这一步,我们将比较你刚刚执行的掩码攻击与传统的字典攻击,以了解它们各自的优势。
如果密码存在于词典中,字典攻击 (-a 0) 会非常快。我们有一个名为 dict.txt 的小词典文件,其中包含上一步中的密码。
让我们对 pattern_hash.txt 运行字典攻击:
hashcat -a 0 -m 1000 pattern_hash.txt dict.txt
因为 labex 在 dict.txt 中,Hashcat 几乎瞬间就找到了它。
hashcat (v6.2.5) starting
OpenCL API (OpenCL 2.0 pocl 1.8 Linux, None+Asserts, RELOC, LLVM 11.1.0, SLEEF, DISTRO, POCL_DEBUG) - Platform #1 [The pocl project]
=====================================================================================================================================
* Device #1: pthread-Intel(R) Xeon(R) Platinum 8575C, 6808/13680 MB (2048 MB allocatable), 4MCU
Minimum password length supported by kernel: 0
Maximum password length supported by kernel: 256
INFO: All hashes found in potfile! Use --show to display them.
Started: Sat Oct 11 16:05:20 2025
Stopped: Sat Oct 11 16:05:20 2025
Hashcat 告知我们哈希值已被找到并存储在 potfile 中。要查看破解出的密码,我们可以使用 --show 选项:
hashcat -a 0 -m 1000 pattern_hash.txt dict.txt --show
输出:
2bf7d33ec706798e0308f5df34bc7d2f:labex
那么,掩码攻击的优势在哪里呢?字典攻击仅当确切的密码存在于词典中时才会成功。如果密码是 testx,而它不在我们的词典中,那么攻击就会失败。
然而,第四步中的掩码攻击 (?l?l?l?l?l) 仍然会成功,因为它系统地生成并测试所有符合该模式的密码,而不管它们是否在词典中。它会测试 labex、testx、hello 等等。
结论:
- 字典攻击 (
-a 0): 最适合破解常见密码或当你拥有高质量、有针对性的词典时。它速度快,但受限于词典的内容。
- 掩码攻击 (
-a 3): 当你知道密码的结构或模式(例如,来自已知的密码策略)时最有效。它比字典攻击更全面,并且比纯粹的暴力破解攻击效率高得多。