![为什么 John the Ripper 使用简单密码时速度这么慢?](https://linux22.com/image/1396545/%E4%B8%BA%E4%BB%80%E4%B9%88%20John%20the%20Ripper%20%E4%BD%BF%E7%94%A8%E7%AE%80%E5%8D%95%E5%AF%86%E7%A0%81%E6%97%B6%E9%80%9F%E5%BA%A6%E8%BF%99%E4%B9%88%E6%85%A2%EF%BC%9F.png)
我在 Linux Ubuntu 上使用 John the Ripper 1.7.8 版来破解 Linux 用户密码,作为练习。我在虚拟机上运行 Linux。我为系统创建了一个名为“User1”的用户,并为其设置了密码“axby”。然后我使用常用命令获取了密码哈希:
root@machine:~# unshadow /etc/passwd /etc/shadow > filetocrack
然后我用命令运行 John:
root@machine:~# john filetocrack
在我写这个问题的时候,程序已经运行了 30 分钟,试图猜测一个简单的 4 个字母的密码。这是正常的吗?还是我做错了什么?任何加快速度的建议都将不胜感激。
答案1
是的,这很常见,因为John
使用字典攻击或者暴力破解这两种方法都不是很快,尤其是对于许多在单线程上运行的现代哈希算法而言(运行某些哈希算法的成本很高,因为@DavidSchwartz提及)。
John
没有参数也使用相当慢的方法,从常问问题:
问:我应该预计约翰跑多久?
A: 它主要取决于破解模式和密码文件(特别是哈希类型和不同盐的数量(如果适用)。最重要的是,您应该注意到,“增量”模式(默认的 John 运行(没有命令行选项)在完成更快的检查后继续进行)不应该在合理的时间内终止。
尝试获得更好性能的一个选项是启用parallelization
(--fork=N
是N
进程数)或--node
。请参阅选项列表了解详情。
理论上,如果您有两个半智能运行的线程 - 您的执行时间应该会减少一半。(请注意限定词“理论上”,在现实世界中 YMMV)