私はPythonの学習を始めましたが、私はViolent Pythonという本から始めました。その中で、最初の章では、* nixベースのパスワードハッシュを解読するスクリプトについて、crypt
クラスの助けを借りて説明します。ここでは、コードは次のようになります。等しい文字列がtrueに戻らない
import crypt
def testPass(cryptPass):
salt = cryptPass[0:2]
dictFile = open('dictionary.txt','r')
for word in dictFile.readlines():
word = word.strip('\n')
cryptWord = crypt.crypt(word,salt)
print cryptPass+":"cryptWord
if(cryptPass == cryptWord):
print "[+] Password found : "+word
return
print "[-] Password Not Found.\n"
return
def main():
passFile = open('passwords.txt')
for line in passFile.readlines():
if ":" in line:
user = line.split(':')[0]
cryptPass = line.split(':')[1].strip(' ')
print "[*] Cracking Password For: "+user
testPass(cryptPass)
if __name__ == "__main__":
main()
私は、ユーザー名が含まれているpasswords.txtファイルがあります:パスワード(パスワードハッシュ)文字列を、辞書words.Theseが含まれていdictionary.txtという名前の別のファイルにはパスワードの内容です.txtファイル:
apple:HXJintBqUVCEY
mango:HXInAjNhZF7YA
banana:HXKfazJbFHORc
grapes:HXtZSWbomS0xQ
とdictionary.txt:
apple
abcd
efgh
ijkl
mnop
testpassから計算されたパスワードのハッシュ()メソッドとusernためpasswords.txtからパスワードハッシュ私は両方のものを印刷すると、ame appleは同じです。しかし、ここでの4つのユーザー名の出力は「[ - ] Password not found」です。なぜここで==テストが失敗するのですか?
'よりも簡単になります' .strip( '\ n')を使用して2つの 'strip'メソッド呼び出しを連鎖します。 –
'.strip()'は改行と空白の両方に対して行います –
ありがとうございます。それは、Javaのバックグラウンドから来て、最後に後ろに\ nがあると思ったことはありませんでした。 –