1

我正在尝试编写一个非常简单的暴力破解程序来尝试破解受密码保护的 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 不是正确的密码,但脚本似乎因密码错误而失败,并且似乎找到了正确的密码。我想我已经在循环中的正确位置设置了密码变量。

4

1 回答 1

4

你需要改变:

password = word.strip('/n')

至:

password = word.strip("\n")

但你也可以:

password = word.strip()

请参阅带状文档

返回删除了前导和尾随字符的字符串的副本。如果省略 chars 或 None,则删除空白字符。如果给定而不是 None,chars 必须是字符串;字符串中的字符将从调用此方法的字符串的两端剥离。

并确保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
于 2014-07-20T09:06:57.987 回答