手把手教你使用Python解决简单的zip文件解压密码
简介
使用的核心模块是python标准库中的zipfile模块。这个模块可以实现zip文件的各种功能,具体可以查看官方参考文档。这里的暴力破解的意思是对密码可能序列中的值一个一个进行密码尝试,这对人来说是很难的,可是对计算机而言并不难。有时候我们下载的zip文件需要密码解压而我们不知道,需要付费才知道。所以这里主要介绍两种暴力破解的密码:纯数字密码和英文数字组合密码。
文件创建
首先测试文件为test.txt(仅包含单行文本),压缩后文件为test.zip,压缩密码为2340,压缩后删除目录下的txt文件。。
上图注意勾选传统加密。
纯数字密码
指的是不用0开头的数字密码,0开头见后面的字母组合。原理就是zipfile模块解压压缩文件时,一旦密码不正确,程序会终止,在try语句只有成功解压的密码才会执行到extract函数调用后面的语句。
代码:
import zipfile
import time
import threading
startTime = time.time()
# 判断线程是否需要终止
flag = Truedef 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 = Falseexcept 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 zipfile
import random
import time
import sysclass MyIterator():# 单位字符集合letters = 'abcdefghijklmnopqrstuvwxyz012345678'min_digits = 0max_digits = 0def __init__(self, min_digits, max_digits):# 实例化对象时给出密码位数范围,一般4到10位if min_digits < max_digits:self.min_digits = min_digitsself.max_digits = max_digitselse:self.min_digits = max_digitsself.max_digits = min_digits# 迭代器访问定义def __iter__(self):return selfdef __next__(self):rst = str()for item in range(0, random.randrange(self.min_digits, self.max_digits+1)):rst += random.choice(MyIterator.letters)return rstdef 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:passif __name__ == '__main__':extract()
字符的序列组合很多,需要等待。
补充说明
很多人反馈这个方法无效,这主要是因为文件路径不正确(我的代码是默认该Python脚本所在目录下的zip文件进行解压的)和加密方式并非传统加密。这种暴力破解方法只在自己大致记得密码位数和密码格式(如只有字母等)时比较实用,完全的暴力破解是不现实的,毕竟做加密的也不是白做的。
关于Python技术储备
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、学习软件
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
三、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
Python资料、技术、课程、解答、咨询也可以直接点击下面名片,
添加官方客服斯琪
↓
手把手教你使用Python解决简单的zip文件解压密码相关推荐
- Python实战-暴力破解zip文件解压密码
简介 使用的核心模块是python标准库中的zipfile模块.这个模块可以实现zip文件的各种功能,具体可以查看官方参考文档.这里的暴力破解的意思是对密码可能序列中的值一个一个进行密码尝试,这对人来 ...
- linux 解压文件乱码,云服务器:解决linux下zip文件解压乱码问题
云服务器:解决linux下zip文件解压乱码问题 原因 由于zip格式并没有指定编码格式,Windows下生成的zip文件中的编码是GBK/GB2312等,因此,导致这些zip文件在Linux下解压时 ...
- linux中zip文件编码错误,解决linux下zip文件解压乱码问题
原标题:解决linux下zip文件解压乱码问题 解决linux下zip文件解压乱码问题 原因 由于zip格式并没有指定编码格式,Windows下生成的zip文件中的编码是GBK/GB2312等,因此, ...
- python 解压zip密码正确但解压失败,Python实现加密的ZIP文件解压(密码已知
当ZIP文件的压缩密码已知时,可以通过调用zipfile库进行解压: import zipfile zip_file = zipfile.ZipFile(r'C:\test.zip') # 文件的路径 ...
- linux php 压缩中文乱码,linux下zip文件解压乱码问题的解决办法分享
本篇文章主要介绍了解决linux下zip文件解压乱码问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下. 原因 由于zip格式并没有指定编码格式,Windows下生成的zip文件中的编码是GBK/ ...
- python编程例子 输入 输出-推荐 :手把手教你用Python创建简单的神经网络(附代码)...
原标题:推荐 :手把手教你用Python创建简单的神经网络(附代码) 作者:Michael J.Garbade:翻译:陈之炎:校对:丁楠雅 本文共2000字,9分钟. 本文将为你演示如何创建一个神经网 ...
- [转载] python zip 文件解压中文乱码问题解决
参考链接: Python zip() 今天突然碰到zip文件解压后中文乱码问题.百度了下觉得这篇文章不错.保存保存. 来源:http://blog.sina.com.cn/s/blog_5805e98 ...
- python基础教程zip密码_python基础教程Python实现加密的RAR文件解压的方法(密码已知)...
博主之前在网上找了很多资料,发现rarfile库不能直接调用,需要安装unrar模块,下面将详细介绍整个实现流程. 第一步:安装unrar模块,直接pip install unrar可能会找不到库,需 ...
- 独家 | 手把手教你用Python创建简单的神经网络(附代码)
作者:Michael J.Garbade 翻译:陈之炎 校对:丁楠雅 本文共2000字,建议阅读9分钟. 本文将为你演示如何创建一个神经网络,带你深入了解神经网络的工作方式. 了解神经网络工作方式的最 ...
最新文章
- 026-请问你怎么测试网络协议
- 通过poi操作ppt中的图片
- 总结:一款Loading动画的实现思路
- hadoop调优之一:概述
- 在centos 下安装和使用MySQL
- 三角形一条边在另一条的投影长度计算
- 刷题总结——飞飞侠(bzoj2143 最短路)
- python panda3d教程_panda3d基础学习
- IDEA的postfix自定义,自定义postfix
- 查找 EXC_BAD_ACCESS 问题根源的方法
- 【Kafka】命令行管理topic
- Java中的System.exit()
- SharePoint 2010 Form 认证 之 配制
- 单片机C语言12864绘画,单片机驱动lcd12864液晶绘图功能程序+仿真
- abaqus2021详细安装教程
- linux pbs 安装包,【Linux】单计算机安装PBS系统(Torque)与运维
- R语言入门-数据分析实操(tyidyverse工作流+代码)
- 迅捷路由器重新设置后服务器无响应,迅捷路由器恢复出厂设置后怎么重新设置...
- C盘爆满,电脑卡顿,笔记本电脑一键重置,让电脑运行重新变快!
- 在公路路肩施工阶段中机械设备与路平石模具配合显威力