在日常工作生活中,可能会遇到压缩文件后忘记解压密码的情况,也许你大概知道密码构成及位数,一个一个手动输入的试密码显然很麻烦,那么利用程序自动测试密码就非常方便

目录

  • 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压缩文件密码相关推荐

  1. macos\Linux下使用fcrackzip破解zip压缩文件密码

    加密解密:http://www.lybbn.cn/data/datas.php?yw=133 1.fcrackzip简介 fcrackzip是一款专门破解zip类型压缩文件密码的工具,工具小巧方便.破 ...

  2. 利用 Python 破解 ZIP 或 RAR 文件密码

    利用 Python 破解 ZIP 或 RAR 文件密码 破解原理 实验环境 库 利用 Pipenv 安装 rarfile 编码 准备密码本 读取压缩文件 尝试解压 暴力破解 程序入口 使用 运行结果: ...

  3. Python读写zip压缩文件

    摘要: Python自带模块zipfile可以完成zip压缩文件的读写,而且使用非常方便,下面我们就来演示一下Python读写zip文件. Python读zip文件 下面的代码给出了用Python读取 ...

  4. Python读写zip压缩文件的方法

    Python 内置的 zipfile 模块可以对文件(夹)进行ZIP格式的压缩和读取操作.要进行相关操作,首先需要实例化一个 ZipFile 对象.ZipFile 接受一个字符串格式压缩包名称作为它的 ...

  5. ZIP压缩文件密码忘记了怎么办?怎么破解?

    首先强力声明一点:zip.rar密码,绝对没有直接获取密码.清除密码的方式,那样说的一概是骗人的! 唯一的办法:破解. 破解方式有两种: 第一种是枚举破解, 也就是暴力破解,按规律逐一尝试各种组合, ...

  6. 破解rar压缩文件密码(Windows环境)

    Unrar解压rar包 最近在下载很多附件,附件中有很多的格式,.doc,.xls,rar,zip等等.在处理这些附件的时候还是遇到了很多的坑,这里记录一下,希望对后来的朋友有所帮助. Unrar解压 ...

  7. Python处理zip压缩文件

    文章目录 ZipFile对象 写入压缩文件 读取和解压缩 常用属性 ZipInfo ZipFile对象 顾名思义,zipfile是处理zip文件的模块,其中最重要的类是ZipFile,其构造函数为 Z ...

  8. 如何解开ZIP压缩文件密码?

    ZIP是我们经常使用的压缩包格式,加密压缩包文件大家应该也不陌生,我们可以给自己的压缩包进行加密来保护压缩包的文件,在网上下载的文件也有可能是加密的压缩包文件. 加密的压缩包文件,需要输入正确的密码才 ...

  9. 【Mac 教程系列】如何在 Mac 上破解带有密码的 ZIP 压缩文件 ?

    如何使用 fcrackzip 在 Mac 上破解带有密码的 ZIP 压缩文件? 用 markdown 格式输出答案. 在 Mac 上破解带有密码的 ZIP 压缩文件 使用解压缩软件,如The Unar ...

  10. 破解压缩文件密码rarcrack

    2019独角兽企业重金招聘Python工程师标准>>> 破解压缩文件密码rarcrack 常见的压缩文件格式有ZIP.RAR和7z.这三种格式都支持使用密码进行加密压缩.前面讲过破解 ...

最新文章

  1. [译] PHP7 数组:HashTable
  2. 绕过安卓SSL验证证书的四种方式
  3. 前端生成Excel 表格
  4. Linux 进阶笔记(二)
  5. power bi_如何将Power BI模型的尺寸减少90%!
  6. nginx反向代理初探
  7. 常州模拟赛d7t2 数组
  8. HFSS(ANSYS Electronics)建立工程和基本绘图方法
  9. Junos: 使用之前
  10. 视频课程:CMOS模拟集成电路版图设计
  11. 台式电脑主板插线步骤图_图解台式电脑电源与主板对接安装详细过程。
  12. 汽车EE架构 发展过程
  13. HTML小游戏2—— 2048网页版(附完整源码)
  14. iOS category内部实现原理
  15. PC软件-实用工具 True Launch Bar
  16. 安装PHPStudy(小皮)V8.1最详细安装教程
  17. SQL Server 的几个故障
  18. 计算机win7内容已满,Win7电脑C盘满了如何清理?
  19. ps-色彩模式与图像色彩调整
  20. 人与自然,《棕熊之王-下》

热门文章

  1. 教你分割视频,几分钟快速分割多个视频
  2. php 路由器设置密码,登陆192.168.1.1路由器如何设置密码
  3. 计算机计算累计公式,““请问Excel表格求的合计数为什么和用计算器累加出的合计数不一致...
  4. Excel公式不自动计算出结果
  5. 为缺少调色板的png图片添加调色板
  6. FAT12文件系统详解
  7. repo clean
  8. Typora+PicGo+LskyPro打造舒适写作环境
  9. 上行带宽,下行带宽;上传速度,下载速度
  10. 【springboot】启动流程之starting