引言
Hashcat 是一个强大且流行的密码恢复工具。它实现高效运行的关键功能之一是“potfile”。potfile(“pot of gold file”的缩写)是一个文件,hashcat 会在该文件中自动存储成功破解的哈希值及其对应的明文。这可以防止 hashcat 在之前的会话中已经解决过的哈希值上浪费时间和资源进行重复破解。
在本实验中,你将学习使用 hashcat potfile 管理已破解哈希值的基本知识。你将了解如何定位 potfile、查看其内容,以及使用特定的 hashcat 标志来查询它,甚至在必要时忽略它。
理解 Potfile 的作用
在此步骤中,你将了解 hashcat potfile 的基本作用。
potfile 是 hashcat 实现效率最重要的功能之一。每次 hashcat 成功破解一个哈希值时,它都会将结果保存到 potfile 中。这样做的主要目的是建立一个已解决哈希值的数据库。
在开始新的破解会话之前,hashcat 会将你的输入文件中的哈希值与 potfile 中的条目进行比对。如果一个哈希值已存在于 potfile 中,hashcat 将会跳过它,并显示“Removed”状态。这可以确保你不会在已经完成的工作上浪费宝贵的 CPU/GPU 周期。
potfile 中条目的标准格式简单而有效:
HASH:PLAINTEXT
此步骤纯粹是概念性的,旨在建立你的理解。没有需要执行的命令。你可以继续下一步,了解该文件的位置。
定位默认的 hashcat.potfile
在此步骤中,你将定位 hashcat 创建的默认 potfile。
默认情况下,hashcat 不会在你当前的目录中创建 potfile。相反,它会将其放置在你用户主目录下的一个专门的 hashcat 文件夹中,以使其在不同的破解会话和项目中保持持久性。在 Linux 系统上的默认位置是 ~/.local/share/hashcat/。
让我们来验证一下文件的存在。使用 ls -l 命令列出 hashcat 目录的内容。
ls -l ~/.local/share/hashcat/
你应该在输出中看到 hashcat.potfile,以及其他可能的与会话相关的文件。
total 4
-rw-r--r-- 1 labex labex 42 May 20 10:30 hashcat.potfile
既然你已经找到了文件,下一步将是查看其内容。
查看 Potfile 的内容
在此步骤中,你将检查 hashcat.potfile 的内容,了解破解的哈希值是如何存储的。
由于 potfile 是一个纯文本文件,你可以使用任何标准的命令行文本查看器,如 cat、less 或 more 来查看其内容。对于像我们这样的小文件,cat 是最合适的。
在你的终端中执行以下命令来显示默认 potfile 的内容:
cat ~/.local/share/hashcat/hashcat.potfile
输出将显示在实验设置过程中破解的哈希值,后面跟着一个冒号(:),然后是明文密码。
5f4dcc3b5aa765d61d8327deb882cf99:password
这种简单的 HASH:PLAINTEXT 格式使得文件易于阅读和解析,无论是对人类还是对 hashcat 本身。
使用 --show 标志查询 Potfile
在此步骤中,你将学习如何使用 --show 标志来高效地查询 potfile 中的破解哈希值。
虽然你可以手动使用 cat 和 grep 来处理 potfile,但 hashcat 提供了一种更优雅且集成的方式来检查给定文件中的哈希值是否已被破解。--show 标志就是为此目的而设计的。它以哈希文件作为输入,并打印 potfile 中找到的任何哈希值的已破解明文。
让我们用它来检查我们的 hashes.txt 文件。
hashcat -m 0 --show hashes.txt
让我们分解一下这个命令:
hashcat: 程序本身。-m 0: 指定哈希模式。0代表 MD5,这是我们hashes.txt文件中的哈希类型。--show需要此参数才能正确工作。--show: 这个标志告诉 hashcat 执行一个查询操作,而不是一个破解会话。hashes.txt: 包含你想检查的哈希值的输入文件。
该命令将产生以下输出,由于我们的哈希值已被找到,因此它与 potfile 的内容相同。
5f4dcc3b5aa765d61d8327deb882cf99:password
当你有一个大型哈希列表并想快速查看哪些哈希值之前已被恢复时,这个命令非常有用。
使用 --potfile-disable 从输入中移除已破解的哈希值
在此步骤中,你将了解 hashcat 如何自动避免重复破解哈希值,以及如何使用 --potfile-disable 标志来覆盖此行为。
首先,让我们看看当你再次尝试运行相同的破解任务时会发生什么。由于哈希值已存在于 potfile 中,hashcat 应该会识别这一点并立即完成。
hashcat -m 0 -a 0 hashes.txt wordlist.txt --force
注意输出。Hashcat 将报告所有哈希值都在 potfile 中找到,并且不会重新处理它们。
...
All hashes found in potfile!
NOTE: All hashes loaded from file hashes.txt are already cracked and were skipped.
To re-crack these hashes, you need to remove them from the potfile.
...
现在,如果你 想 重新破解哈希值,也许是为了基准测试目的或测试不同的攻击模式,该怎么办?你可以使用 --potfile-disable 标志。这会告诉 hashcat 完全忽略 potfile 的读取和写入。
再次运行命令,但这次添加该标志:
hashcat -m 0 -a 0 hashes.txt wordlist.txt --force --potfile-disable
这次,hashcat 将执行完整的破解操作,因为它会忽略 potfile。你将看到状态进度和最后的“Cracked”状态。
...
Session..........: hashcat
Status...........: Cracked
...
Cracked (1/1) hashes, (1/1) digests
...
--potfile-disable 是针对特定情况的特定工具。在大多数情况下,你希望利用 potfile 来节省时间。
总结
在本实验中,你学习了使用 hashcat 的 potfile 管理已破解哈希值的基本技能。
你现在知道 potfile 是提高效率的关键功能,它充当已解决哈希值的数据库。你已经学会了如何:
- 在
~/.local/share/hashcat/hashcat.potfile找到默认的 potfile。 - 使用
cat等标准的 Linux 命令查看其内容。 - 使用
--show标志从输入文件中查询特定哈希值的 potfile。 - 使用
--potfile-disable标志在特定用例中绕过 potfile 的功能。
掌握 potfile 的使用是成为熟练的 hashcat 用户的基础一步,它能让你运行更有效率的密码恢复任务。


