文章详情
用python利用字典破解zip文件
日期:2020/9/9 11:00:10
前几天在一本书上看到一篇可以利用字典破解zip文件密码的文章,觉得比较有意思于是研究了一番,在这里分享一下
原理
主要是利用python里自带的zipfile库中的extractall函数来实现的,简单导入zipfile之后,实例化一个ZipFile类。利用extractall()来解压这个文件,并在参数pwd上填入正确密码
这时我们发现执行脚本之后,fate.zip会被正确解压,而填入错误密码则会入下图一样报错
因此我们可以利用因口令不正确而抛出的异常来测试字典文件中是否有zip文件的密码,并利用try expect来处理异常信息。
代码
假定zip文件密码为fate,pwd.txt为字典文件
import zipfile zFile = zipfile.ZipFile(r"D:\python\fate.zip") passFile = open(r"D:\python\pwd.txt") for line in passFile.readlines(): password = line.strip('\n') # noinspection PyBroadException try: zFile.extractall(pwd=password.encode("utf=8")) print("password="+password) except Exception as e: pass
需要注意的是python3以及不支持自动ascii码了,在extractall的pwd参数后需手动添加编码类型,# noinspection PyBroadException则是为了防止PyCharm报错
提高性能
将程序模块化后,在利用多线程处理可以提高程序性能,可以利用Thread来实现多线程处理
import zipfile from threading import Thread def extractfile(zFile,password): # noinspection PyBroadException try: zFile.extractall(pwd=password.encode("utf=8")) print("password="+password) except Exception as e: pass def main(): zFile = zipfile.ZipFile(r"D:\python\fate.zip") passFile = open(r"D:\python\pwd.txt") for line in passFile.readlines(): password = line.strip('\n') t = Thread(target=extractfile(zFile , password)) t.start() if __name__ == "__main__": main()
利用if __name__ == "__main__"使函数只在当前模块运行,当被导入时不运行
结语
以上就是利用字典破解zip文件的全部内容
上一文章:web安全入门路线及资源整理
下一文章:网络安全行业入门的职业各项介绍
相关推荐
- 05-23怎么解决电脑会卡这个问题?
- 09-09web安全入门路线及资源整理
- 01-10黑客入门的第一本书推荐这一本
- 10-28web安全问题有哪些?包括哪些方面?web安全分
- 06-10怎么样让Edge浏览器更好用?
- 05-02少儿编程网课平台哪个好
- 09-16web安全和网络安全哪个更难?
- 06-035G网络时代,是否需要更换手机?
- 02-16网站设置安全http头,配置示例讲解
- 05-11程序员如何做好职业规划(两年半普通前端年薪
- 02-28奥利给是什么意思和屎有什么关系
- 04-11实战sql注入绕过安全狗
- 01-15学程序员大概要多少钱?学编程一年大概多少钱
- 12-21浅谈php一句话木马工作原理