手把手教你怎么用Python实现zip文件密码的破解


Posted in Python onMay 27, 2021

Python有一个内置模块zipfile可以干这个事情,测试一波,一个测试文件,设置解压密码为123。

手把手教你怎么用Python实现zip文件密码的破解

import zipfile
 
# 创建文件句柄
file = zipfile.ZipFile("测试.zip", 'r')
# 提取压缩文件中的内容,注意密码必须是bytes格式,path表示提取到哪
file.extractall(path='.', pwd='123'.encode('utf-8'))

运行效果如下图所示,提取成功。

手把手教你怎么用Python实现zip文件密码的破解

好了开始破解老文件的密码,为了提高速度我加了多线程最初的代码:

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:

手把手教你怎么用Python实现zip文件密码的破解

然后程序奔溃:

手把手教你怎么用Python实现zip文件密码的破解

看了一下源码发现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) # 设置队列大小

最后破解成功,如下图所示。

手把手教你怎么用Python实现zip文件密码的破解

到此这篇关于手把手教你怎么用Python实现zip文件密码的破解的文章就介绍到这了,更多相关Python破解zip密码内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中转换角度为弧度的radians()方法
May 18 Python
python实现文件路径和url相互转换的方法
Jul 06 Python
简单谈谈python中的多进程
Nov 06 Python
11月编程语言排行榜 Python逆袭C#上升到第4
Nov 15 Python
Python+selenium 获取一组元素属性值的实例
Jun 22 Python
pygame游戏之旅 python和pygame安装教程
Nov 20 Python
python 杀死自身进程的实现方法
Jul 01 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
Jan 17 Python
python3 xpath和requests应用详解
Mar 06 Python
Python类的动态绑定实现原理
Mar 21 Python
python logging.info在终端没输出的解决
May 12 Python
python从Oracle读取数据生成图表
Oct 14 Python
Python基础学习之奇异的GUI对话框
教你使用pyinstaller打包Python教程
Matplotlib绘制混淆矩阵的实现
只需要100行Python代码就可以实现的贪吃蛇小游戏
PyTorch dropout设置训练和测试模式的实现
May 27 #Python
pytorch Dropout过拟合的操作
浅谈pytorch中的dropout的概率p
May 27 #Python
You might like
奇怪的PHP引用效率问题分析
2012/03/23 PHP
php保存二进制原始数据为图片的程序代码
2014/10/14 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
2016/03/03 PHP
Symfony模板的快捷变量用法实例
2016/03/17 PHP
header与缓冲区之间的深层次分析
2016/07/30 PHP
php+resumablejs实现的分块上传 断点续传功能示例
2017/04/18 PHP
DIV菜单层实现代码
2010/11/19 Javascript
dojo随手记 gird组件引用
2011/02/24 Javascript
Extjs4 GridPanel的主要配置参数详细介绍
2013/04/18 Javascript
JavaScript动态插入script的基本思路及实现函数
2013/11/11 Javascript
javascript比较两个日期相差天数的方法
2015/07/23 Javascript
去除字符串左右两边的空格(实现代码)
2016/05/12 Javascript
JS for循环中i++ 和 ++i的区别介绍
2016/07/20 Javascript
springmvc接收jquery提交的数组数据代码分享
2017/10/28 jQuery
Vue实现textarea固定输入行数与添加下划线样式的思路详解
2018/06/28 Javascript
vue.js高德地图实现热点图代码实例
2019/04/18 Javascript
vue缓存的keepalive页面刷新数据的方法
2019/04/23 Javascript
vue项目部署到nginx/tomcat服务器的实现
2019/08/26 Javascript
TypeScript之调用栈的实现
2019/12/31 Javascript
JS document内容及样式操作完整示例
2020/01/14 Javascript
vue 解决IOS10低版本白屏的问题
2020/11/17 Javascript
django模板语法学习之include示例详解
2017/12/17 Python
python数据批量写入ScrolledText的优化方法
2018/10/11 Python
Python 处理图片像素点的实例
2019/01/08 Python
Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解
2019/06/04 Python
Python定时任务随机时间执行的实现方法
2019/08/14 Python
Python面向对象封装操作案例详解
2019/12/31 Python
tensorflow 实现打印pb模型的所有节点
2020/01/23 Python
Django rest framework分页接口实现原理解析
2020/08/21 Python
Pycharm安装第三方库失败解决方案
2020/11/17 Python
用纯CSS3实现网页中常见的小箭头
2017/10/16 HTML / CSS
公证委托书
2014/08/01 职场文书
国际商务专业毕业生自我鉴定2014
2014/09/27 职场文书
小学优秀教师事迹材料
2014/12/16 职场文书
初中家长评语和期望
2014/12/26 职场文书
2016大学生社会实践单位评语
2015/12/01 职场文书