欢迎光临!
若无相欠,怎会相见

Python学习之ZIP文件密码破解

练手项目

继昨天接着学习,这一次,练手代码是穷举法破解ZIP文件密码。所谓穷举法,就是一个一个的试。

项目代码

此次项目的代码全部在下方

# -*- coding: utf-8 -*-
# @Time    : 2017/11/15 12:44
# @Author  : Darker
# @Site    : www.liangz.org
# @File    : zipfiletest.py
# @Software: PyCharm

import zipfile
import threading


def extractFile(zFile,password):
    try:
        zFile.extractall(pwd=password)
        # print(u"密码:" + password)
        return password
    except:
        pass


def main():
    zFile = zipfile.ZipFile('crypt.zip')
    pwdFile = open('dictionary.txt')
    for line in pwdFile.readlines():
        password = line.strip('\n')
        # t = threading.Thread(target=extractFile, args=(zFile,password))  #此处是多线程的代码,原书自带
        # t.start()


        guess = extractFile(zFile, password)
        if guess:
            print(u'密码 : '+ password)
            return
        else:
            print(u"找不到密码")
            # return  #此处的return如果不注释掉,会出问题



if __name__ == '__main__':
    main()

上方的代码,我自己实验的时候有点儿小瑕疵。我实验时选的文件密码是 www.liangz.org ,密码字典文件是:

11111111111
2222222222222
2312312
1235345342
1231442321
retsdasf
www.liangz.org
2ewdaffa
234fsadf
12312312

实验结果为:

也就是说,如果前面密码不对,提示信息会打印出来,当然,你也可以修改代码,不让提示信息打印出来。

注意事项

另外,还有一点需要注意。这是我自己实验这个代码时的教训。

就是自己写的脚本的命名,千万不要与Python的模块名字相同,不然,会出现下方这种情况。

E:\Projects\Python\20171114
λ python zipfile.py
Traceback (most recent call last):
  File "zipfile.py", line 41, in <module>
    main()
  File "zipfile.py", line 22, in main
    zFile = zipfile.ZipFile('crypt.zip', 'r')
AttributeError: 'module' object has no attribute 'ZipFile'

我就是因为把自己写的脚本命名成zipfile.py,结果,我上网查找错误,查了半个小时。因为Python有zipfile模块,名字就是zipfile.py。希望能注意

赞(0) 打赏
转载请注明:飘零博客 » Python学习之ZIP文件密码破解
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

欢迎光临