我正在分析一段时间内破解的哈希数。我希望每10秒保存一次裂缝的当前状态。
''
已恢复……..:132659/296112(44.80%(挖掘,0/1(0.00%(盐已恢复/时间…:CUR:3363,N/A,N/A AVG:14170358502198204052756(分钟、小时、天(进度………:15287255040/76819139595(1.99%(
''
我希望这3行状态每隔10秒左右保存一次。有可能在hashcat中做到这一点吗?或者我需要在python中制作一个单独的脚本吗?
每10秒获取一次状态
您可以使用--status
启用打印状态,也可以将状态设置为使用--status-timer X
每X秒打印一次。您可以在hashcat选项wiki页面或hashcat --help
上看到这些命令行参数。
示例:hashcat -a 0 -m 0 example.hash example.dict --status --status-timer 10
保存所有状态
我假设您只想保存hashcat运行时打印的所有内容。一个简单的方法就是将stdout中的所有内容复制到一个文件中。这是一个流行的s/o问题,所以我们只使用这个答案。
为了安全起见,让我们使用-a
,它会附加到文件中,这样我们就不会意外地覆盖以前的运行。我们所需要做的就是将| tee -a file.txt
放在hashcat调用之后。
解决方案
尝试一下,它应该将所有状态(以及stdout中的其他所有状态(保存到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与您正在使用的参数互换即可。
如果你需要帮助从这个输出文件中获取"恢复的"行,或者如果这在你的计算机上不起作用(我在OSX上(,请在评论中告诉我。
除了Andrew Zick的回答之外,请注意,对于机器可读的状态,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