手把手教你怎么用Python实现zip文件密码的破解
Python有一个内置模块zipfile可以干这个事情,测试一波,一个测试文件,设置解压密码为123。
import zipfile
# 创建文件句柄
file = zipfile.ZipFile("测试.zip", 'r')
# 提取压缩文件中的内容,注意密码必须是bytes格式,path表示提取到哪
file.extractall(path='.', pwd='123'.encode('utf-8'))
运行效果如下图所示,提取成功。
好了开始破解老文件的密码,为了提高速度我加了多线程最初的代码:
import zipfile
import itertools
from concurrent.futures import ThreadPoolExecutor
def extract(file, password):
if not flag: return
file.extractall(path='.', pwd=''.join(password).encode('utf-8'))
def result(f):
exception = f.exception()
if not exception:
# 如果获取不到异常说明破解成功
print('密码为:', f.pwd)
global flag
flag = False
if __name__ == '__main__':
# 创建一个标志用于判断密码是否破解成功
flag = True
# 创建一个线程池
pool = ThreadPoolExecutor(100)
nums = [str(i) for i in range(10)]
chrs = [chr(i) for i in range(65, 91)]
# 生成数字+字母的6位数密码
password_lst = itertools.permutations(nums + chrs, 6)
# 创建文件句柄
zfile = zipfile.ZipFile("加密文件.zip", 'r')
for pwd in password_lst:
if not flag: break
f = pool.submit(extract, zfile, pwd)
f.pwd = pwd
f.pool = pool
f.add_done_callback(result)
这个代码有个问题,跑一会儿内存就爆了!原因:ThreadPoolExecutor默认使用的是无界队列,尝试密码的速度跟不上生产密码的速度,会把生产任务无限添加到队列中。导致内存被占满。内存直接飙到95:
然后程序奔溃:
看了一下源码发现ThreadPoolExecutor内部使用的是无界队列,所以导致内存直接飙满,重写ThreadPoolExecutor类中的_work_queue属性,将无界队列改成有界队列,这样就不会出现内存爆满的问题,看代码:
import queue
from concurrent.futures import ThreadPoolExecutor
class BoundedThreadPoolExecutor(ThreadPoolExecutor):
def __init__(self, max_workers=None, thread_name_prefix=''):
super().__init__(max_workers, thread_name_prefix)
self._work_queue = queue.Queue(self._max_workers * 2) # 设置队列大小
最后破解成功,如下图所示。
(资源库 www.zyku.net)
原文链接:https://blog.csdn.net/aaahtml/article/details/117249121
栏 目:Python教程
下一篇:python plt.plot bar 如何设置绘图尺寸大小
本文标题:手把手教你怎么用Python实现zip文件密码的破解
本文地址:https://www.zyku.net/python/9761.html
您可能感兴趣的文章
- 11-14linux 解压中文zip文件乱码
- 02-20采用mod_gzip加速Zope和Apache
- 01-17wampserver开启gzip网页压缩的方法
- 01-13dedecms网页压缩seo之gzip设置技巧
- 02-23Nginx开启Gzip压缩大幅提高页面加载速度的方法
- 11-28apache2.4开启gzip压缩的方法
- 10-26抖音语音直播开启方法介绍
- 12-10钉钉会议录音转文字步骤分享
- 03-25oppoa93还原出厂设置方法
- 12-22魅族16sPro更换主题指南
- 01-08WiFi随身连-WiFi随身连应用软件功能介
- 11-01OPPOreno7怎么设置返回键
- 11-18扫描全能王去除水印教程分享
- 12-01必剪添加视频标签方法介绍
- 09-13荣耀50se关闭软件广告教程介绍
- 01-12蒸汽涂鸦-蒸汽涂鸦应用软件功能介绍
- 08-13picsart修眉教程介绍
- 03-02WordPress修改登录后跳转的后台默认首
- 12-25早典-早典应用软件功能介绍
- 08-14微信位置授权在哪里打开
最近更新
阅读排行
猜你喜欢
- 02-18Yii使用find findAll查找出指定字段的
- 04-18oppofindx3个人热点开启教程
- 07-05Linux mmd命令
- 04-15一加9pro快捷锁屏键设置方法
- 02-23真我V13微信视频通话开启美颜教程
- 08-13支付宝小程序功能在哪里
- 02-22DedeCMS内容页调用当前文章栏目的seo
- 01-11春暖爱阅读课程-春暖爱阅读课程应用软
- 07-12jQuery+Ajax请求本地数据加载商品列表
- 01-09蜜蜂漫画-蜜蜂漫画应用软件功能介绍