引言
Hashcat 是一个强大且流行的密码恢复工具。在运行破解会话时,尤其是可能耗时较长的会话,监控其进度和性能至关重要。Hashcat 提供了一个详细的实时状态屏幕,让你能够了解攻击速度、预计完成时间、硬件性能等信息。
在本实验中,你将学习如何启动一个基本的 Hashcat 会话并解读其实时统计数据。完成后,你将能够有效地监控你的密码破解任务,以确保它们以最佳状态运行。
Hashcat 是一个强大且流行的密码恢复工具。在运行破解会话时,尤其是可能耗时较长的会话,监控其进度和性能至关重要。Hashcat 提供了一个详细的实时状态屏幕,让你能够了解攻击速度、预计完成时间、硬件性能等信息。
在本实验中,你将学习如何启动一个基本的 Hashcat 会话并解读其实时统计数据。完成后,你将能够有效地监控你的密码破解任务,以确保它们以最佳状态运行。
在此步骤中,你将使用 Hashcat 启动一个密码破解会话。我们将使用位于你的 ~/project 目录中的预配置哈希文件和字典文件。
首先,让我们检查一下我们将要使用的文件。hashes.txt 文件包含一个 MD5 哈希,而 wordlist.txt 文件包含一个潜在密码的小列表。
启动 Hashcat 字典攻击的基本命令是 hashcat -m <hash_type> -a <attack_mode> <hash_file> <wordlist_file>。
-m 0 指定哈希类型为 MD5。-a 0 指定攻击模式为“Straight”(直通)或字典攻击。现在,打开终端并运行以下命令来启动会话。Hashcat 将会初始化并开始尝试破解哈希。
hashcat -m 0 -a 0 hashes.txt wordlist.txt
当 Hashcat 启动时,你将看到类似以下的输出。暂时不用担心所有细节;让它运行即可。
hashcat (v6.2.x) starting...
...
OpenCL Platform #1: The pocl project
====================================
* Device #1: pthread-skylake-avx512, 2047/4095 MB (1023 MB allocatable), 2MCU
...
Session..........: hashcat
Status...........: Running
Hash.Name........: MD5
Hash.Target......: hashes.txt
Time.Started.....: ...
Time.Estimated...: ...
Guess.Base.......: File (wordlist.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: XX.X kH/s (X.XXms) @ Accel:X Loops:X Thr:X Vec:X
Recovered........: 0/1 (0.00%) Digests
Progress.........: 0/5 (0.00%)
Rejected.........: 0/0 (0.00%)
Restore.Point....: 0/1 (0.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: password -> hashcat
Hardware.Mon.#1..: Temp: N/A Util: N/A Core: N/A Mem: N/A Bus: N/A
[s]tatus [p]ause [b]ypass [c]heckpoint [q]uit =>
让会话运行,然后继续下一步。
在此步骤中,你将学习如何手动请求正在运行的 Hashcat 会话的状态更新。
当 Hashcat 运行时,它会监听键盘输入来控制会话。在输出的底部,你会看到一个类似 [s]tatus [p]ause [b]ypass [c]heckpoint [q]uit => 的提示。这表明了可用的命令。
要获取最新的统计数据,只需按下键盘上的 s 键,然后按 Enter。Hashcat 将立即在终端打印一个更新的状态屏幕。
现在就去按下 s 吧。
s
你将看到一新块文本,其外观与初始状态报告非常相似。这就是实时统计屏幕,我们将在后续步骤中对其进行剖析。
Session..........: hashcat
Status...........: Running
Hash.Name........: MD5
Hash.Target......: hashes.txt
Time.Started.....: ...
Time.Estimated...: ...
Guess.Base.......: File (wordlist.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: XX.X kH/s (X.XXms) @ Accel:X Loops:X Thr:X Vec:X
Recovered........: 1/1 (100.00%) Digests, 1/1 (100.00%) Salts
Progress.........: 4/5 (80.00%)
Rejected.........: 0/4 (0.00%)
Restore.Point....: 4/5 (80.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: labex -> labex
Hardware.Mon.#1..: Temp: N/A Util: N/A Core: N/A Mem: N/A Bus: N/A
请注意,像 Recovered 和 Progress 这样的值已经发生了变化。
在此步骤中,我们将重点关注状态屏幕上的三个最重要指标:Speed(速度)、Progress(进度)和 ETA(预计到达时间)。理解这些字段有助于你评估破解会话的性能和持续时间。
让我们分别看一下每个字段的示例状态行:
Speed.Dev.#1.........: XX.X kH/s (X.XXms)
#1、#2 等进行标识。速度以每秒哈希数(H/s、kH/s、MH/s)衡量。数字越大越好。在我们的例子中,虚拟机使用的是 CPU。Progress.........: 4/5 (80.00%)
4/5 意味着已从我们的 wordlist.txt 中测试了 5 个单词中的 4 个。Time.Estimated...: 0 secs
Time.Estimated,提供了当前攻击完成的估计时间。这是根据当前速度和 Progress 字段中剩余的工作量计算得出的。对于像我们这样非常短的任务,它会很快变为 0 秒。这三个指标为你提供了破解会话性能的快速、高层级的概览。
在此步骤中,我们将检查状态屏幕上的其他几个有用字段:Recovered、Rejected 和 Restore.Point。
让我们再次查看示例输出:
Recovered........: 1/1 (100.00%) Digests
1/1 意味着目标文件中的一个哈希已被找到。一旦发生这种情况,Hashcat 就会将破解的密码打印到终端。Rejected.........: 0/4 (0.00%)
Restore.Point....: 4/5 (80.00%)
通过监控这些字段,你可以跟踪成功的破解并诊断字典中可能存在的问题。
在最后一步中,你将了解 Hashcat 状态屏幕的硬件监控部分以及如何正确退出会话。
密码破解是一项非常密集的任务,可能会将你的硬件推向极限。Hashcat 内置了监控功能,可以帮助你关注系统的健康状况。
查看状态输出中的 Hardware.Mon 行:
Hardware.Mon.#1..: Temp: N/A Util: N/A Core: N/A Mem: N/A Bus: N/A
注意:在我们的虚拟化实验环境中,这些值显示为 N/A(不适用),因为 Hashcat 无法直接访问主机的硬件传感器。在配备独立 GPU 的物理机器上,这些字段将显示实时数据,这对于防止过热和确保稳定性能至关重要。
现在我们的短会话已完成,并且我们已经分析了状态屏幕,是时候退出 Hashcat 了。为此,请按 q 然后按 Enter。
q
Hashcat 将停止会话并返回到命令提示符。
恭喜你完成了本次实验!
你已经学会了如何有效地监控正在运行的 Hashcat 会话。你现在知道如何:
s 命令查看实时状态屏幕。这些技能是管理任何密码破解任务的基础,它们能让你跟踪进度、诊断问题,并确保你的硬件安全高效地运行。