利用python破解zip压缩文件密码
在日常工作生活中,可能会遇到压缩文件后忘记解压密码的情况,也许你大概知道密码构成及位数,一个一个手动输入的试密码显然很麻烦,那么利用程序自动测试密码就非常方便
目录
- zip密码字典破解
- 报错处理
- zip密码排列破解
- Excel密码排列破解
zip密码字典破解
1,新建一个zip压缩文件(破解测试.zip),设置密码为123456或987654
2,创建一个txt文件(密码字典.txt),保存可能的密码
from itertools import permutationsdef password_txt():filename = r'E:\测试\密码字典.txt'with open(filename, 'w', encoding='utf-8') as file:# 写入数字10选6所有排列151200种str_n = '0123456789'for i in permutations(str_n, 6):file.write('{}\n'.format(''.join(i)))print('所有排列写入完成')
if __name__ == '__main__':password_txt()
3,编写python破解代码
import zipfile
from threading import Thread
from time import timei = 0
pwd_return = None # 多线程返回值,正确的密码
def extractfile(zfile, password):# 密码破解函数try:zfile.extractall(pwd=bytes(password, 'utf8'))print('文件解压密码为: ', password)global pwd_returnpwd_return = passwordreturn Trueexcept:return False# 以下为测试使用#global i#i = i + 1#print('密码错误第{}次\n'.format(i))def extract1():# 直接破解start_time = time()zip_file = r'E:\测试\破解测试.zip'pass_file = r'E:\测试\密码字典.txt'zfile = zipfile.ZipFile(zip_file)pfile = open(pass_file)for line in pfile.readlines(): # 按行读取密码pwd = line.strip('\n')if extractfile(zfile, pwd): # 直接调用函数,非多线程print('密码{},用时{:.2f}秒'.format(pwd, time()-start_time))break # 跳过剩余密码def extract2():# 多线程破解start_time = time()zip_file = r'E:\测试\破解测试.zip'pass_file = r'E:\测试\密码字典.txt'zfile = zipfile.ZipFile(zip_file)pfile = open(pass_file)for line in pfile.readlines():pwd = line.strip('\n')t = Thread(target=extractfile, args=(zfile, pwd)) # 运用子进程加快运行t.start()if pwd_return != None:break # 跳过剩余密码print('密码{},用时{:.2f}秒'.format(pwd_return, time()-start_time))if __name__ == '__main__':extract1()
4,测试结果
测试数字10选6所有排列151200种密码
密码 | extract1()耗时(秒) | extract2()耗时(秒) |
---|---|---|
第17047行密码123456 | 1.76 | 3.2 |
第151200行密码987654 | 10.86 | 28.76 |
可以发现多线程并没有什么作用;测试过程中还发现,在不使用多线程时CPU占用 <1%,而使用时CPU占用在15%-20%
报错处理
可能存在代码无法正确运行,报错 PermissionError: [Errno 13] Permission denied 的情况,这是由于使用正确的密码破解文件时,会在python.exe所在文件夹生成一个解压文件,而如果该文件夹属性是只读则会无法写入而导致运行错误。
解决方法:文件夹属性修改取消只读,如果无法修改,则可以在文件夹权限中修改为完全控制,如图
zip密码排列破解
创建密码字典也挺麻烦的,直接使用python排列组合itertools模块排列功能
同样调用上面的extractfile()函数
import zipfile
from time import time
from itertools import permutations # 标准库排列迭代器
from math import factorial # 阶乘def extract_permut():# 排列破解start_time = time()zip_file = r'E:\测试\破解测试98765432.zip'str_n = '0123456789' # 排列元素m = 8 # 抽取元素piece = 10*10000 # 分段num = 19 # 第num个分段[(num-1)*piece, num*piece],为0则查找全部zfile = zipfile.ZipFile(zip_file)count = 0count_max = int(factorial(len(str_n)) / factorial(len(str_n)-m))count_s = (num-1)*piece if num > 0 else 0count_e = num*piece if num > 0 else count_maxif count_s > count_max:print('超出范围,最大排列数为{}'.format(count_max))returnfor i in permutations(str_n, m):if count >= count_s and count <= count_e:pwd = ''.join(i)if extractfile(zfile, pwd):print('密码{},用时{:.2f}秒'.format(pwd, time()-start_time))breakcount = count + 1if pwd_return == None:print('密码排列{}-{}错误,用时{:.2f}秒'.format(count_s, count_e, time()-start_time))if __name__ == '__main__':extract_permut()
破解密码测试
密码排列 | 10选6共151200种排列 | 10选8共1814400种排列 |
---|---|---|
耗时(秒) | 15.66 | 190.68 |
破解速度近10000个/秒,速度还是比较快的
Excel密码排列破解
from time import time
from itertools import permutations
from win32com.client import Dispatch
excel = Dispatch('Excel.Application')
excel.Application.Visible = 0 # 后台运行,不显示界面
excel.Application.DisplayAlerts = 0 # 不显示警告信息
def excel_extract(filename, password):# excel密码破解函数try:wb = excel.Workbooks.Open(Filename=filename, UpdateLinks=False, ReadOnly=False, Format=None, Password=password, WriteResPassword=password)print('excel打开密码为: ', password)wb.Close()excel.Application.Quit()return Trueexcept:return Falsedef excel_password():# 排列破解start_time = time()xlsx = r'E:\测试\密码cba321.xlsx'str_n = '123abc' # 排列元素m = 6 # 抽取元素for i in permutations(str_n, m):pwd = ''.join(i)if excel_extract(xlsx, pwd):print('密码{},用时{:.2f}秒'.format(pwd, time()-start_time))breakif __name__ == '__main__':excel_password()
测试结果
速度很一般,6选6共720种排列,用时80.85秒,较VBA破解方式稍慢
《Excel·VBA破解密码》
利用python破解zip压缩文件密码相关推荐
- macos\Linux下使用fcrackzip破解zip压缩文件密码
加密解密:http://www.lybbn.cn/data/datas.php?yw=133 1.fcrackzip简介 fcrackzip是一款专门破解zip类型压缩文件密码的工具,工具小巧方便.破 ...
- 利用 Python 破解 ZIP 或 RAR 文件密码
利用 Python 破解 ZIP 或 RAR 文件密码 破解原理 实验环境 库 利用 Pipenv 安装 rarfile 编码 准备密码本 读取压缩文件 尝试解压 暴力破解 程序入口 使用 运行结果: ...
- Python读写zip压缩文件
摘要: Python自带模块zipfile可以完成zip压缩文件的读写,而且使用非常方便,下面我们就来演示一下Python读写zip文件. Python读zip文件 下面的代码给出了用Python读取 ...
- Python读写zip压缩文件的方法
Python 内置的 zipfile 模块可以对文件(夹)进行ZIP格式的压缩和读取操作.要进行相关操作,首先需要实例化一个 ZipFile 对象.ZipFile 接受一个字符串格式压缩包名称作为它的 ...
- ZIP压缩文件密码忘记了怎么办?怎么破解?
首先强力声明一点:zip.rar密码,绝对没有直接获取密码.清除密码的方式,那样说的一概是骗人的! 唯一的办法:破解. 破解方式有两种: 第一种是枚举破解, 也就是暴力破解,按规律逐一尝试各种组合, ...
- 破解rar压缩文件密码(Windows环境)
Unrar解压rar包 最近在下载很多附件,附件中有很多的格式,.doc,.xls,rar,zip等等.在处理这些附件的时候还是遇到了很多的坑,这里记录一下,希望对后来的朋友有所帮助. Unrar解压 ...
- Python处理zip压缩文件
文章目录 ZipFile对象 写入压缩文件 读取和解压缩 常用属性 ZipInfo ZipFile对象 顾名思义,zipfile是处理zip文件的模块,其中最重要的类是ZipFile,其构造函数为 Z ...
- 如何解开ZIP压缩文件密码?
ZIP是我们经常使用的压缩包格式,加密压缩包文件大家应该也不陌生,我们可以给自己的压缩包进行加密来保护压缩包的文件,在网上下载的文件也有可能是加密的压缩包文件. 加密的压缩包文件,需要输入正确的密码才 ...
- 【Mac 教程系列】如何在 Mac 上破解带有密码的 ZIP 压缩文件 ?
如何使用 fcrackzip 在 Mac 上破解带有密码的 ZIP 压缩文件? 用 markdown 格式输出答案. 在 Mac 上破解带有密码的 ZIP 压缩文件 使用解压缩软件,如The Unar ...
- 破解压缩文件密码rarcrack
2019独角兽企业重金招聘Python工程师标准>>> 破解压缩文件密码rarcrack 常见的压缩文件格式有ZIP.RAR和7z.这三种格式都支持使用密码进行加密压缩.前面讲过破解 ...
最新文章
- [译] PHP7 数组:HashTable
- 绕过安卓SSL验证证书的四种方式
- 前端生成Excel 表格
- Linux 进阶笔记(二)
- power bi_如何将Power BI模型的尺寸减少90%!
- nginx反向代理初探
- 常州模拟赛d7t2 数组
- HFSS(ANSYS Electronics)建立工程和基本绘图方法
- Junos: 使用之前
- 视频课程:CMOS模拟集成电路版图设计
- 台式电脑主板插线步骤图_图解台式电脑电源与主板对接安装详细过程。
- 汽车EE架构 发展过程
- HTML小游戏2—— 2048网页版(附完整源码)
- iOS category内部实现原理
- PC软件-实用工具 True Launch Bar
- 安装PHPStudy(小皮)V8.1最详细安装教程
- SQL Server 的几个故障
- 计算机win7内容已满,Win7电脑C盘满了如何清理?
- ps-色彩模式与图像色彩调整
- 人与自然,《棕熊之王-下》
热门文章
- 教你分割视频,几分钟快速分割多个视频
- php 路由器设置密码,登陆192.168.1.1路由器如何设置密码
- 计算机计算累计公式,““请问Excel表格求的合计数为什么和用计算器累加出的合计数不一致...
- Excel公式不自动计算出结果
- 为缺少调色板的png图片添加调色板
- FAT12文件系统详解
- repo clean
- Typora+PicGo+LskyPro打造舒适写作环境
- 上行带宽,下行带宽;上传速度,下载速度
- 【springboot】启动流程之starting