パスワードで保護されたzipファイルを解読しようとする非常に単純なブルートフォーサーを作成しようとしています。ファイルのパスワードは「red」です。
import zipfile;
zfile = zipfile.ZipFile('password_archive.zip')
words = open('/usr/share/dict/words')
for word in words.readlines():
try:
password = word.strip('/n')
zfile.extractall(pwd=password)
print "Password found: "+ password
exit(0)
except Exception, e:
print e
コンソール:
('Bad password for file', <zipfile.ZipInfo object at 0x1004ca500>)
('Bad password for file', <zipfile.ZipInfo object at 0x1004ca500>)
('Bad password for file', <zipfile.ZipInfo object at 0x1004ca500>)
('Bad password for file', <zipfile.ZipInfo object at 0x1004ca500>)
('Bad password for file', <zipfile.ZipInfo object at 0x1004ca500>)
('Bad password for file', <zipfile.ZipInfo object at 0x1004ca500>)
('Bad password for file', <zipfile.ZipInfo object at 0x1004ca500>)
('Bad password for file', <zipfile.ZipInfo object at 0x1004ca500>)
Password found: Abasgi
ここで何が起こっているのかよくわかりません。Abasgi は正しいパスワードではありませんが、スクリプトは間違ったパスワードで失敗したようで、正しいパスワードを見つけたようです。ループ内の正しい場所にパスワード変数を設定したと思います。