美文网首页Python小哥哥pythonkk
用Python实现ZIP文件密码的破解

用Python实现ZIP文件密码的破解

作者: 我爱学python | 来源:发表于2019-04-14 16:01 被阅读3次

    准备材料

    首先在目录C:\Users\hy\Desktop(就是windows10系统下的桌面)下创建test.zip文件,设其密码为123456 

    password.txt是密码字典 ,里面是我随便输入的一些密码。 

    下面使用PyCharm编写代码 

    ZIP FLIE

    在python中操作zip文件, 基本上都是使用zipfile模块,他可以创建、解压文件,获取zip文件的元数据信息。 我们想要操作一个zip文件,第一步就是初始化ZipFile实例。下面我们打开我们准备好的test.zip文件。

    import zipfile

    zF = zipfile.ZipFile(r"C:\Users\hy\Desktop\test.zip");

    目前我们只是传入一个参数地址,实例化了一个对象,想要解压文件还要是要到extractall方法,三个参数,path是解压的路径(默认为解压文件所在路径),members是需要解压出来的文件(默认为全部文件),pwd是密码。 

    extractall(self,path=None,members=None,pwd=None

    我们会发现运行提示错误 

    提示我们的pwd的参数编码不对,  这是因为在python3中pwd需要的是byte,  所以需要我们自己转化 

    zF.extractall(pwd=”1111111”.encode(“ascii”)) 

    再运行提示 

    这才是正常的密码错误提示,这时候更在一下密码即可 

    zF.extractall(pwd=”123456”.encode(“ascii”)) 

    不过因为我们提前不知道密码,所以就用到密码字典啦,首先实例字典引用,然后把它转化为列表

    zpassword=open(r"C:\Users\hy\Desktop\password.txt")

    zpw=zpassword.readlines() #readines()以列表的形式返回一个list,按照每行读取

    这时候可能会提示错误,也有可能不是gbk

    这是因为我系统默认的编码为gbk  但是我的密码字典是utf-8,所以报错。可是如果用sys.getdefaultencoding()查看,你会发现 

    是utf-8,这个并不准确,正确的方法是: 

    在Windows平台下,进入DOS窗口,输入:chcp 

    我的活动代码页为:936,它对于的编码格式为GBK 

    所以要我们自己取设置读取使用的编码:

    zpassword=open(r"C:\Users\hy\Desktop\password.txt",encoding="utf-8")

    另外为了直观的看到进度,我添加了进度条功能,只要用的是

    print("\r"+"这里写内容"+,end=""),#\r代表不换行,然后清空本行从开头书写。

    至于print上面的就是数学上的知识啦。 

    看这篇文章的估计都不是特别新的新手,就不一步一步教了,

    这个程序简单,最主要的是你有个强大的密码字典,另外,感兴趣的还可以添加命令行输入路径功能,多线程解压,破解功能。 

    最后:还望各位看官手下留情,多多指教~

    相关文章

      网友评论

        本文标题:用Python实现ZIP文件密码的破解

        本文链接:https://www.haomeiwen.com/subject/pvhswqtx.html