2017-05-18 20 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") 

すべてのヘルプは高く評価され、ありがとう! findMatch(str(c).lower(),wordMap)

答えて

1

は、(cはすでに文字列であるため)str()を呼び出す必要はありませんが、は末尾に改行文字剥ぎする必要がありfindMatch(c.strip().lower(),wordMap)が。それ以外の場合は、ハッシュ値の計算に含まれます。どうやら、ファイルの最後の行に改行文字がないように見えるので、正しく認識されています。

+0

はい、これは完璧に動作し、アーマチュアの間違いです! – CS2020

関連する問題