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

最佳答案

您需要更改:

password = word.strip('/n')


至:

password = word.strip("\n")


但是您可能还只是:

password = word.strip()


参见地带documenation


  返回带有前导和尾随字符的字符串的副本
  删除。如果省略char或None,则空白字符为
  删除。如果给定且不为None,则char必须为字符串;否则为false。那些角色
  字符串中的字符串将从字符串的两端剥去
  方法被调用。


并确保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

关于python - 简单的暴力破解无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24847795/

10-09 12:44