2017-05-18 37 views
0

我正尝试使用Python构建字典攻击脚本(用于教育目的),它只解决了我文件中的最后一个SHA-256散列。Python字典攻击只能解决最后一个散列

的逻辑如下:

  • 读取文件包含字
  • 存储字的与字典中的词作为键 - 值对沿所述散列值
  • 扫描线含SHA-256哈希值(每行1个散列值)
  • 遍历字典中的项和打印键的文本文件的一个值的散列相匹配

它适用于我文件中最后一个项目,但表示找不到所有其他项目的匹配项。

我的散列文件看起来像:

9F86D081884C7D659A2FEAA0C55AD015A3BF4F1B2B0B822CD15D6C15B0F00A08 
5E884898DA28047151D0E56F8DC6292773603D0D6AABBDD62A11EF721D1542D8 

包含散列值“测试”和“密码”。

我的单词文件包含超过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") 

任何帮助表示赞赏, 谢谢!

回答

1

findMatch(str(c).lower(),wordMap),没有必要再调用str()(因为c已经是一个字符串),但需要剥去尾随换行符:findMatch(c.strip().lower(),wordMap)。否则,它将包含在散列值计算中。显然,文件的最后一行没有尾随的换行符,这就是为什么它被正确识别的原因。

+0

是的,这工作完美,电枢错误! – CS2020