【发布时间】:2022-01-15 18:31:39
【问题描述】:
我试图破解一个 6 字符长的密码,但即使过了 10 分钟,它也没有任何进展。所以,我决定找出每秒找到多少个哈希值。
以下代码需要破解密码,即'zzzz',h是crypt给出的hash,s是使用的salt和hash算法。
import crypt
#zzzz
h='$6$XR2ZpTWwyJL90BVD$HpFiwwuLyHOVbWnk/G/gUW.Hz0SutY4F9io4zjWkLL8bK6F3A4WCdSWQNgtq8fTx6PuzM1cdyQdlN2Qv/HlzH.'
s = '$6$XR2ZpTWwyJL90BVD$'
def brute(hash, salt, charSet="abcdefghijklmnopqrtuvxyz"):
# for pwd_len in range(7):
for guess in product(charSet,repeat= 4):
guess=''.join(guess)
if hash == crypt.crypt(guess,salt):
return guess
return -1
print(brute(h, s))
这是 456,976 个哈希,但是破解密码的时间是 9 分 20 秒,非常慢。我知道单线程并不理想,但它不是仍然很低吗?
【问题讨论】:
-
好吧,哈希创建 IS 很慢……在程序运行时观察你的 CPU 负载 - 如果它已经满负荷运行,多线程将不会也无济于事。如果不是,则使用多线程。