我正在尝试使用Python构建字典攻击脚本(用于教育目的),它只解决了我文件中的最后一个SHA-256哈希。
逻辑如下:
它适用于我文件中的最后一项,但是说我找不到其他人的匹配。
我的哈希文件如下:
9F86D081884C7D659A2FEAA0C55AD015A3BF4F1B2B0B822CD15D6C15B0F00A08
5E884898DA28047151D0E56F8DC6292773603D0D6AABBDD62A11EF721D1542D8
包含“test”和“password”的散列值。
我的word文件包含超过70,000个单词,我确保这两个单词都在文件中,当我调试时,如果我调用表达式,它们都会在字典中有值。
这是我在我的文件中迭代哈希的地方:
with open(hashFile) as f:
for c in f:
findMatch(str(c).lower(),wordMap)
我编写的函数用于将散列值与字典中的每个值进行比较:
def findMatch(hv,m):
#k is the key, m is the dictionary
for k in m:
if(m[k].lower() == hv):
print("Match was found: " + k )
return
print("Match was not found, searched through " + str(len(wordMap)) + " words")
感谢任何帮助,谢谢!
答案 0 :(得分:1)
在findMatch(str(c).lower(),wordMap)
中,无需拨打str()
(因为c
已经是字符串),但 需要剥离尾随换行符:findMatch(c.strip().lower(),wordMap)
。否则,它包含在哈希值计算中。显然,文件的最后一行没有尾随换行符,这就是它被正确识别的原因。