简介
Hashcat 是一款功能强大且广受欢迎的密码恢复工具。当你运行破解任务时,Hashcat 需要一种方式来管理结果。了解哪些密码已成功破解,哪些仍未破解,对于后续工作至关重要。
在本实验中,你将学习管理 Hashcat 输出的基础知识。我们将探索 hashcat.potfile,它会自动存储已破解的密码。你还将学习如何使用命令行选项,例如 --show 来显示已破解的密码,-o 将结果保存到特定文件,以及 --left 来识别哪些哈希值尚未破解。掌握这些功能对于任何有效的密码审计或恢复工作流程都是必不可少的。
理解 hashcat.potfile 的作用
在这一步中,你将了解 hashcat.potfile,它是 Hashcat 的一个关键组件。为了避免在未来的任务中重复破解相同的哈希值,Hashcat 会自动将每个成功破解的哈希值及其对应的明文密码保存到一个文件中。这个文件被称为「potfile」。默认情况下,它的名称为 hashcat.potfile,位于 ~/.local/share/hashcat/ 目录下。
让我们运行一个基础的字典攻击来破解一些哈希值。这将为我们生成 potfile。我们有一个包含 MD5 哈希值的 hashes.txt 文件,以及一个包含潜在密码的 wordlist.txt 文件。
执行以下命令开始攻击:
hashcat -m 0 -a 0 hashes.txt wordlist.txt
命令解析如下:
-m 0: 指定哈希类型,其中0对应 MD5。-a 0: 指定攻击模式,其中0为直接字典攻击。hashes.txt: 包含待破解哈希值的输入文件。wordlist.txt: 包含尝试密码的字典文件。
你将看到 Hashcat 启动。由于我们的字典包含了所有哈希值的正确密码,该过程将很快完成。
...
Session..........: hashcat
Status...........: Cracked
Hash.Name........: MD5
Hash.Target......: hashes.txt
Time.Started.....: ...
Time.Estimated...: 0 secs
Guess.Base.......: File (wordlist.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: ... H/s (0.00ms) @ Accel:128 Loops:1 Thr:1 Vec:8
Recovered........: 4/4 (100.00%) Digests, 0/1 (0.00%) Salts
Progress.........: 5/5 (100.00%)
Rejected.........: 0/5 (0.00%)
Restore.Point....: 5/5 (100.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: password -> testing
Hardware.Mon.#1..: Temp: 46c Fan: 33%
...
Started: ...
Stopped: ...
输出显示所有 4 个哈希值均已恢复。这意味着 hashcat.potfile 现已创建并填充了这些结果。
查看 potfile 中的已破解哈希与密码对
在这一步中,我们将直接检查 hashcat.potfile 的内容。这将帮助你理解 Hashcat 是如何存储已破解凭据的。其格式简单有效:每一行包含哈希值、冒号分隔符以及破解出的明文密码。
要查看 potfile 的内容,请使用 cat 命令。该文件位于你主目录下的一个隐藏文件夹中。
cat ~/.local/share/hashcat/hashcat.potfile
输出将显示在上一步中成功破解的哈希-密码对。
5f4dcc3b5aa765d61d8327deb882cf99:password
e10adc3949ba59abbe56e057f20f883e:123456
d8578edf8458ce06fbc5bb76a58c5ca4:qwerty
f9664ea1803311b35f81d07d8c9e072d:lab
正如你所见,该文件包含了 hashes.txt 中与 wordlist.txt 中的密码相匹配的四个哈希值。虽然直接查看 potfile 对于理解其结构很有用,但在拥有成千上万个已破解密码的实际场景中,它可能会变得杂乱且难以阅读。在下一步中,你将学习一种更高效的方法来查看特定任务的结果。
使用 '--show' 显示特定哈希列表的已破解密码
在这一步中,你将学习一种更实用的检查结果的方法。无需手动读取整个 potfile,你可以使用 Hashcat 的 --show 选项。该命令指示 Hashcat 将给定的哈希列表与 potfile 进行比对,并仅显示该列表中已破解的哈希值。它不会执行任何新的破解操作。
当你想要快速查看特定目标列表的结果,而无需翻阅可能包含来自许多不同任务结果的庞大 potfile 时,此功能非常有用。
运行以下命令以显示 hashes.txt 文件中已破解的哈希值:
hashcat -m 0 --show hashes.txt
Hashcat 将立即检查 potfile 并以清晰、易读的格式打印结果。
5f4dcc3b5aa765d61d8327deb882cf99:password
e10adc3949ba59abbe56e057f20f883e:123456
d8578edf8458ce06fbc5bb76a58c5ca4:qwerty
f9664ea1803311b35f81d07d8c9e072d:lab
输出非常清晰,直接回答了这个问题:「hashes.txt 中哪些哈希值我已经破解了?」这是检查特定任务已破解密码的推荐方式。
使用 '-o' 将已破解密码保存到专用输出文件
在这一步中,你将学习如何将破解结果保存到单独的文件中。虽然 potfile 是 Hashcat 出色的内部数据库,但你通常需要一个干净的输出文件用于报告或分析。这可以通过 -o(或 --outfile)选项来实现。
当你将 -o 添加到结合了 --show 的攻击命令中时,Hashcat 会从 potfile 中检索已破解的哈希-密码对,并将其写入指定的输出文件。当哈希值已经破解并存在于 potfile 中时,此功能特别有用,因为你可以快速提取这些结果并将其保存到专用文件中。
让我们运行同时带有 --show 和 -o 选项的命令来保存破解结果。
hashcat -a 0 -m 0 --show -o cracked.txt hashes.txt wordlist.txt
Hashcat 将立即检查 potfile 并将所有已破解的密码对写入 cracked.txt。
现在,让我们查看新输出文件的内容。
cat cracked.txt
输出将是已破解密码对的清晰列表。
5f4dcc3b5aa765d61d8327deb882cf99:password
e10adc3949ba59abbe56e057f20f883e:123456
d8578edf8458ce06fbc5bb76a58c5ca4:qwerty
f9664ea1803311b35f81d07d8c9e072d:lab
这个 cracked.txt 文件现在是该特定攻击成功结果的便携式记录,与主 potfile 分开。
使用 '--left' 查看哪些哈希值未被破解
在这一步中,你将学习如何识别哪些哈希值仍未破解。这与了解哪些已破解同样重要,因为它能让你在后续攻击中集中精力(例如,使用不同的字典或攻击模式)。Hashcat 为此提供了 --left 选项。
--left 标志会显示输入列表中那些不在 potfile 中的哈希值。
让我们看看 hashes.txt 中还有哪些哈希值未被破解。
hashcat -m 0 --left hashes.txt
由于我们列表中的所有哈希值都已破解,输出将为空(没有剩余未破解的哈希值)。
你也可以将 --left 与 -o 选项结合使用,将这些剩余的哈希值保存到新文件中。这是为下一次破解尝试创建工作列表的常用做法。
hashcat -m 0 --left -o uncracked.txt hashes.txt
现在,检查 uncracked.txt 文件的内容。
cat uncracked.txt
由于所有哈希值都已破解,uncracked.txt 文件将为空。
总结
在本实验中,你学习了管理和解读 Hashcat 输出的基本技术。这些技能对于组织高效的密码破解工作流程至关重要。
你已经掌握了:
hashcat.potfile作为所有已破解密码自动数据库的作用。- 如何使用
hashcat --show清晰地显示特定哈希列表中的已破解密码。 - 如何使用
-o选项将已破解密码保存到专用输出文件中,以便进行报告和分析。 - 如何使用
--left选项筛选出未破解的哈希值,从而有效地集中后续工作。
通过掌握这些输出和文件管理功能,你可以使用 Hashcat 运行更有条理、更高效且更有效的密码恢复任务。



