Hashcat Potfile 和输出文件管理

LinuxBeginner
立即练习

介绍

Hashcat 是一个强大且流行的密码恢复工具。当你运行一个破解会话时,Hashcat 需要一种方法来管理结果。了解哪些密码已成功破解,哪些仍未解决至关重要。

在这个 Lab 中,你将学习管理 Hashcat 输出的基础知识。我们将探讨 hashcat.potfile,它会自动存储已破解的密码。你还将学习如何使用命令行选项,如 --show 来显示已破解的密码,-o 将结果保存到特定文件,以及 --left 来识别哪些哈希仍未被破解。掌握这些功能对于任何有效的密码审计或恢复工作流程都是必不可少的。

这是一个实验(Guided Lab),提供逐步指导来帮助你学习和实践。请仔细按照说明完成每个步骤,获得实际操作经验。根据历史数据,这是一个 初级 级别的实验,完成率为 97%。获得了学习者 83% 的好评率。

理解 hashcat.potfile 的用途

在这一步中,你将了解 hashcat.potfile,它是 Hashcat 的一个关键组成部分。为了避免在未来的会话中重新破解相同的哈希,Hashcat 会自动将每个成功破解的哈希及其对应的明文密码保存到一个文件中。这个文件被称为 "potfile"。默认情况下,它的名称是 hashcat.potfile,位于 ~/.local/share/hashcat/ 目录下。

让我们运行一个基本的字典攻击来破解一些哈希。这将为我们生成 potfile。我们有一个名为 hashes.txt 的文件,其中包含 MD5 哈希,以及一个名为 wordlist.txt 的文件,其中包含潜在的密码。

执行以下命令开始攻击:

hashcat -m 0 -a 0 hashes.txt wordlist.txt

以下是该命令的细分:

  • -m 0: 指定哈希类型,其中 0 对应于 MD5。
  • -a 0: 指定攻击模式,其中 0 是直接字典攻击 (straight dictionary attack)。
  • 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 个哈希都已恢复 (Recovered)。这意味着 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 选项。

当与 --show 一起使用时,--left 标志将显示你的输入列表中 存在于 potfile 中的所有哈希。

让我们看看 hashes.txt 中哪些哈希仍然未被破解。

hashcat -m 0 --show --left hashes.txt

由于我们列表中的所有哈希都已被破解,输出将是空的(没有剩余未破解的哈希)。

你也可以将 --left-o 选项结合使用,将这些剩余的哈希保存到一个新文件中。这是一种常见的做法,用于为你的下一次破解尝试创建一个工作列表(worklist)。

hashcat -m 0 -a 0 hashes.txt wordlist.txt --left -o uncracked.txt

现在,检查 uncracked.txt 文件​​的内容。

cat uncracked.txt

由于所有哈希都已被破解,uncracked.txt 文件​​将是空的。

总结

在这个实验中,你学习了管理和解释 Hashcat 输出的基本技术。这些技能对于组织高效的密码破解工作流程至关重要。

你已经学会了:

  • hashcat.potfile 作为所有已破解密码的自动数据库的作用。
  • 如何使用 hashcat --show 从特定的哈希列表中干净地显示已破解的密码。
  • 如何使用 -o 选项将已破解的密码保存到专用的输出文件中,用于报告和分析。
  • 如何使用 --left 选项来隔离未破解的哈希,使你能够有效地集中未来的精力。

通过掌握这些输出和文件管理功能,你可以使用 Hashcat 运行更有条理、更高效、更有效的密码恢复会话。