如何使用Python解决简单的zip文件解压密码
发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,小编给大家分享一下如何使用Python解决简单的zip文件解压密码,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!文件创建首先测试文件为test.txt(仅包含单行文本),压缩后文件为
千家信息网最后更新 2024年09月22日如何使用Python解决简单的zip文件解压密码
小编给大家分享一下如何使用Python解决简单的zip文件解压密码,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
文件创建
首先测试文件为test.txt(仅包含单行文本),压缩后文件为test.zip,压缩密码为2340,压缩后删除目录下的txt文件。。
上图注意勾选传统加密。
纯数字密码
指的是不用0开头的数字密码,0开头见后面的字母组合。原理就是zipfile模块解压压缩文件时,一旦密码不正确,程序会终止,在try语句只有成功解压的密码才会执行到extract函数调用后面的语句。
代码:
import zipfileimport timeimport threadingstartTime = time.time()# 判断线程是否需要终止flag = True def extract(password, file): try: password = str(password) file.extractall(path='.', pwd=password.encode('utf-8')) print("the password is {}".format(password)) nowTime = time.time() print("spend time is {}".format(nowTime-startTime)) global flag # 成功解压其余线程终止 flag = False except Exception as e: print(e) def do_main(): zfile = zipfile.ZipFile("test.zip", 'r') # 开始尝试 for number in range(1, 9999): if flag is True: t = threading.Thread(target=extract, args=(number, zfile)) t.start() t.join() if __name__ == '__main__': do_main()
显然,解压成功,这里提一下这种编码 密码的方式只适用于传统zip加密,winrar有一种新式的默认加密方式,是不可以的。
字母数字混合密码
这里情况密码组合太多,为了防止内存溢出,改用迭代器。这种情况费时很久,可以闲来无事挂着脚本。这里再次压缩文件,密码为python。
import zipfileimport randomimport timeimport sys class MyIterator(): # 单位字符集合 letters = 'abcdefghijklmnopqrstuvwxyz012345678' min_digits = 0 max_digits = 0 def __init__(self, min_digits, max_digits): # 实例化对象时给出密码位数范围,一般4到10位 if min_digits < max_digits: self.min_digits = min_digits self.max_digits = max_digits else: self.min_digits = max_digits self.max_digits = min_digits # 迭代器访问定义 def __iter__(self): return self def __next__(self): rst = str() for item in range(0, random.randrange(self.min_digits, self.max_digits+1)): rst += random.choice(MyIterator.letters) return rst def extract(): start_time = time.time() zfile = zipfile.ZipFile("test.zip") for p in MyIterator(5, 6): try: zfile.extractall(path=".", pwd=str(p).encode('utf-8')) print("the password is {}".format(p)) now_time = time.time() print("spend time is {}".format(now_time-start_time)) sys.exit(0) except Exception as e: pass if __name__ == '__main__': extract()
字符的序列组合很多,需要等待。
看完了这篇文章,相信你对"如何使用Python解决简单的zip文件解压密码"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!
密码
文件
成功
数字
加密
组合
传统
字母
字符
开头
情况
方式
篇文章
线程
语句
迭代
新式
闲来无事
上图
不用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
2019国家网络安全优秀教师
aspen中怎么选择数据库
云服务器的数据库
影响网络安全的主要因
java数据库灾备方案
浪潮服务器bmc操作手册
软件开发抵扣所得税
服务器未解之谜大全
网络安全功能模块图
安卓软件开发的内容
滨城区浅蓝软件开发工作室
国外服务器能备案吗
武汉服务器优惠
网络安全课活动感受
mac dlna 服务器
有关数据库设计的书籍
三原色调色软件开发
波兰网络安全法
阿勒泰全力做好两会期间属地网络安全工作
北京国企有没有招聘软件开发的
极睿管理服务器
天刀服务器选择
濡沫江湖无法获取服务器列表
学校中国工业企业数据库
兴业银行网络安全员
观看网络安全宣传周心得
数据库安全的关键是什么
teradata数据库查询进程
企业内部网络安全设备
倍福与数据库通讯