我正在尝试编写一个非常简单的暴力破解者来尝试破解受密码保护的zip文件。该文件的密码为"红色"。
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不是正确的密码,但是如果密码不正确,脚本似乎失败了,似乎找到了正确的密码。我想我已经将密码变量设置在循环中的正确位置。
答案 0 :(得分:4)
您需要更改:
password = word.strip('/n')
要:
password = word.strip("\n")
但你可能只是:
password = word.strip()
请参阅条documenation:
返回带有前导和尾随字符的字符串副本 除去。如果省略chars或None,则为空白字符 除去。如果给定而不是None,则字符必须是字符串;那些角色 在字符串中将从字符串的两端剥离掉 调用方法。
并确保red
位于我的单词列表Red
中,因此我必须添加:
zfile.extractall(pwd=password.lower())
在这些改变之后,这一切似乎都很有效:
import zipfile
zfile = zipfile.ZipFile("file.zip")
words = open("/usr/share/dict/words")
for word in words.readlines():
try:
password = word.strip("\n")
zfile.extractall(pwd=password.lower())
print "Password found: "+ password
exit(0)
except Exception, e:
pass