在 hashcat 中随时间输出进度
Output progress over time in hashcat
我正在分析一段时间内破解的哈希值。
我希望每 10 秒保存一次破解的当前状态。
'''
回收........:132659/296112 (44.80%) 摘要,0/1 (0.00%) 盐
Recovered/Time...: CUR:3636,N/A,N/A AVG:141703,8502198,204052756(分、时、日)
进度…………:15287255040/768199139595 (1.99%)
'''
我希望这 3 行状态每 10 秒左右保存一次。
是否可以在 hashcat 中执行此操作,或者我需要在 python 中制作一个单独的脚本?
每 10 秒获取一次状态
您可以使用 --status
启用打印状态,您可以使用 --status-timer X
将状态设置为每 X 秒打印一次。您可以在 hashcat options wiki 页面或 hashcat --help
.
上查看这些命令行参数
示例:hashcat -a 0 -m 0 example.hash example.dict --status --status-timer 10
保存所有状态
我假设您只想保存 hashcat 在 运行 时打印的所有内容。一个简单的方法就是将所有内容从 stdout 复制到一个文件中。这是一个很受欢迎的 s/o 问题,所以我们只使用 this answer.
为了安全起见,让我们使用附加到文件的 -a
,这样我们就不会不小心覆盖以前的运行。我们需要做的就是在 hashcat 调用之后放置 | tee -a file.txt
。
解决方案
试一试,它应该将所有状态(以及来自标准输出的所有其他内容)保存到 output.txt
:
hashcat -a A -m M hashes.txt dictionary.txt --status --status-timer 10 | tee -a output.txt
只需将 A、M、hashes.txt 和 dictionary.txt 替换为您正在使用的参数即可。
如果您需要帮助从这个输出文件中获取 "Recovered" 行,或者如果这在您的计算机上不起作用(我在 OSX),请通过评论。
除了 Andrew Zick 的回答之外,请注意对于机器可读 status,hashcat 具有对机器可读输出的本机支持 - 请参阅 --machine-readable
选项。这会产生制表符分隔的输出,如下所示:
STATUS 5 SPEED 111792 1000 EXEC_RUNTIME 0.007486 CURKU 1 PROGRESS 62 62 RECHASH 0 1 RECSALT 0 1 REJECTED 0 UTIL -1
STATUS 5 SPEED 14247323 1000 EXEC_RUNTIME 0.038953 CURKU 36 PROGRESS 2232 2232 RECHASH 0 1 RECSALT 0 1 REJECTED 0 UTIL -1
STATUS 5 SPEED 36929864 1000 EXEC_RUNTIME 1.661804 CURKU 1296 PROGRESS 80352 80352 RECHASH 0 1 RECSALT 0 1 REJECTED 0 UTIL -1
STATUS 5 SPEED 66538858 1000 EXEC_RUNTIME 3.237319 CURKU 46656 PROGRESS 28926722892672 RECHASH 0 1 RECSALT 0 1 REJECTED 0 UTIL -1
STATUS 5 SPEED 63562975 1000 EXEC_RUNTIME 3.480536 CURKU 1679616 PROGRESS 104136192 104136192 RECHASH 0 1 RECSALT 0 1 REJECTED 0 UTIL -1
...这正是像 Hashtopolis 这样的工具用来为 hashcat 输出提供前端的工具。
对于机器可读的输出,选项--outfile
和--outfile-format
可用。有关 --outfile-format
:
的选项,请参阅 hashcat --help
输出的 Format
部分
- [ Outfile Formats ] -
# | Format
===+========
1 | hash[:salt]
2 | plain
3 | hex_plain
4 | crack_pos
5 | timestamp absolute
6 | timestamp relative
我正在分析一段时间内破解的哈希值。 我希望每 10 秒保存一次破解的当前状态。
'''
回收........:132659/296112 (44.80%) 摘要,0/1 (0.00%) 盐 Recovered/Time...: CUR:3636,N/A,N/A AVG:141703,8502198,204052756(分、时、日) 进度…………:15287255040/768199139595 (1.99%)
'''
我希望这 3 行状态每 10 秒左右保存一次。 是否可以在 hashcat 中执行此操作,或者我需要在 python 中制作一个单独的脚本?
每 10 秒获取一次状态
您可以使用 --status
启用打印状态,您可以使用 --status-timer X
将状态设置为每 X 秒打印一次。您可以在 hashcat options wiki 页面或 hashcat --help
.
示例:hashcat -a 0 -m 0 example.hash example.dict --status --status-timer 10
保存所有状态
我假设您只想保存 hashcat 在 运行 时打印的所有内容。一个简单的方法就是将所有内容从 stdout 复制到一个文件中。这是一个很受欢迎的 s/o 问题,所以我们只使用 this answer.
为了安全起见,让我们使用附加到文件的 -a
,这样我们就不会不小心覆盖以前的运行。我们需要做的就是在 hashcat 调用之后放置 | tee -a file.txt
。
解决方案
试一试,它应该将所有状态(以及来自标准输出的所有其他内容)保存到 output.txt
:
hashcat -a A -m M hashes.txt dictionary.txt --status --status-timer 10 | tee -a output.txt
只需将 A、M、hashes.txt 和 dictionary.txt 替换为您正在使用的参数即可。
如果您需要帮助从这个输出文件中获取 "Recovered" 行,或者如果这在您的计算机上不起作用(我在 OSX),请通过评论。
除了 Andrew Zick 的回答之外,请注意对于机器可读 status,hashcat 具有对机器可读输出的本机支持 - 请参阅 --machine-readable
选项。这会产生制表符分隔的输出,如下所示:
STATUS 5 SPEED 111792 1000 EXEC_RUNTIME 0.007486 CURKU 1 PROGRESS 62 62 RECHASH 0 1 RECSALT 0 1 REJECTED 0 UTIL -1
STATUS 5 SPEED 14247323 1000 EXEC_RUNTIME 0.038953 CURKU 36 PROGRESS 2232 2232 RECHASH 0 1 RECSALT 0 1 REJECTED 0 UTIL -1
STATUS 5 SPEED 36929864 1000 EXEC_RUNTIME 1.661804 CURKU 1296 PROGRESS 80352 80352 RECHASH 0 1 RECSALT 0 1 REJECTED 0 UTIL -1
STATUS 5 SPEED 66538858 1000 EXEC_RUNTIME 3.237319 CURKU 46656 PROGRESS 28926722892672 RECHASH 0 1 RECSALT 0 1 REJECTED 0 UTIL -1
STATUS 5 SPEED 63562975 1000 EXEC_RUNTIME 3.480536 CURKU 1679616 PROGRESS 104136192 104136192 RECHASH 0 1 RECSALT 0 1 REJECTED 0 UTIL -1
...这正是像 Hashtopolis 这样的工具用来为 hashcat 输出提供前端的工具。
对于机器可读的输出,选项--outfile
和--outfile-format
可用。有关 --outfile-format
:
hashcat --help
输出的 Format
部分
- [ Outfile Formats ] -
# | Format
===+========
1 | hash[:salt]
2 | plain
3 | hex_plain
4 | crack_pos
5 | timestamp absolute
6 | timestamp relative