最详细Python批量字典暴力破解zip密码
工具破解
前两天在网上下来了一波项目案例,结果全是加密的压缩包,于是去网上找了一个压缩包破解的工具
苦于工具破解太慢,一个压缩包要好久,解压了三个之后就放弃了,准备另寻他法
密码字典
巧的是破解的三个都是4位数字密码,这让我想到了依靠字典破解
说干就干,伸手就来

#生成从0000到9999的密码表
f = open('passdict4.txt','w')
for id in range(10000):
password = str(id).zfill(4)+'\n'
f.write(password)
f.close()
果然猜想没错,破解速度的确快了不
习大大说,科技是第一生产力,创新是引领发展的第一动力
既然有更快速的方法,那为什么不研究个自动的方法出来呢
ZipFile库
Python有个叫ZipFile的库可以解压zip文件,从其相关文档中
ZipFile.extractall(path=None, members=None, pwd=None)
将zip文档内的指定文件解压到当前目录。
参数path指定了解析文件保存的文件夹
参数members指定要解压的文件名称或对应的ZipInfo对象
参数pwd为解压密码。
只需循环读取文件夹下的zip文件然后逐个解压即可
注意:python3有一个中文文件名乱码的,将ZipFile.py中的“cp437”改成“gbk”(两个地方需更改)即可永久解决
# zipfile打开zip文件
z = zipfile.ZipFile(f'{file_path}', 'r'
# path为解压路径,解包后位于该路径下
z.extractall(path=f"{root})
z.close()
在这个基础上再加上循环密码字典
注意:由于解压是密码错误会产生异常,这里可以利用try except进行处理
# 获取字典中的内容
passFile = open(r"D:\python\passdict4.txt")
# 循环获得单个密码
for line in passFile.readlines():
# 去换行
password = line.strip('\n')
try:
zip_file.extractall(path=f"{root}", pwd=password.encode("utf-8"))
print(password)
# 密码对了就不继续下去了
break
except:
# 什么都不做
pass
zip_file.close() # 关闭文件,必须有,释放内存
这么一通操作下来本以为大功告成,没想到事情没那么简单
大多是时候是可以破解的,但是总有些就破解失败了,束手无策的各个网站找方法
刚开始以为是extractall方法调用错了,但是报的错是密码错误,这就让我很迷
偶然见在一个看到一篇文章才得知

默认情况下,WinRAR在CTR模式下使用AES-256加密ZIP文件,而传统加密是通过CRC32加密,即ZIP 2.0传统加密算法,虽然AES-256比ZIP 2.0传统加密算法安全得多,但它可能与一些旧的解压软兼容,而Python标准库中的zipfile模块只支持CRC32加密的zip文件,所以不采用传统加密方式是无法通过zipfile库进行解压的
已经花了这么多心思,要是到这里就放弃,那真的是太淦了
既然加密方式不一样,那么解压软件是怎么做到直接解压的呢
这里产生了一个构想,要是能从代码里调用解压软件,那不就好办了吗
于是我赶紧使用绝技

成功搜索到,7z等多款解压软件有相关功能
调用第三方软件命令行
配置环境变量

命令行验证一下

奈斯,配置成功
passFile = open(r"D:\python\passdict4.txt")
for line in passFile.readlines():
password = line.strip('\n')
# t 测试
command='7z -p'+password+' t '+file_path
child=subprocess.call(command)
if(child==0):
print(password)
break
加密方式不一样的事情是解决了,不过人的贪欲真的是可怕
重复调用命令行这一闪一闪的又让我不爽了
pyzipper库(终极)
恰巧在查加密方式的时候看到有人提出
Python有个pyzipper库可以很好的兼容代替zipfile,可以读写AES加密的zip文件
都走到这了,没有撤退可言
安装pyzipper
pip install pyzipper
会出现中文名乱码情况,记得改下
f1 = open('D:\python\passdict4.txt','r')
with pyzipper.AESZipFile(file_path,'r') as f:
for i in f1:
i = i.rstrip('\n')
f.pwd = str.encode(i)
try:
f.extractall(path=f"{root}")
print(file_path+"\t密码是:"+i)
break
except Exception:
pass
f.close()
f1.close()
这个方法,堪称完美
点击下载相关代码,文件,工具
参考:
1.【补丁破解】ZIP压缩包密码破解工具PassperforZIP_v3.6.0.1
2.python-批量解压zip文件
3.python破解同事的压缩包密码
4.Python实现加密的ZIP文件解压(密码已知)
5.暴力破解(一)——python脚本暴力破解 加密的zip压缩文件
6.7Z命令行详解
7.4.python编写ZIP压缩文件爆破工具
8.Python中的zipfile模块使用详解
9.Python3中zipfile模块文件名乱码问题
最详细Python批量字典暴力破解zip密码的更多相关文章
- 【pyhon】黑客用字典暴力破解Zip文件密码原理性展示
基本原理:用程序把字典文件里拟定好的密码一个个提取出来,去测试zip能否打开 字典文件pass.txt内容: 1224 2121 asdf abcd1234 dwsdsd dssds 程序代码: # ...
- 暴力破解ZIP文件密码
Python 的标准库提供了 ZIP 文件的提取压缩模块 zipfile,现在让我们试着用这个模块,暴力破解出加密的 ZIP 文件!我们可以用 extractall()这个函数抽取文件,密码正确则返回 ...
- 分享一个撩妹、装13神技能,0基础用Python暴力破解WiFi密码
WiFi密码Python暴力破解 Python密码破解部分截图 获取视频资料,转发此文+点击喜欢,然后获取资料请加Python交流群:580478401,就可以获取视频教程+源码 环境准备: py ...
- 忘记秘密利用python模拟登录暴力破解秘密
忘记秘密利用python模拟登录暴力破解秘密: #encoding=utf-8 import itertools import string import requests def gen_pwd_f ...
- 记录ssh暴力破解的密码字典
之前我已经在wooyun和91ri上发表了这篇文章,今天转到51cto上... 默认的ssh日志是不带密码记录功能的,现在想把登录密码记录下来,这样就可以搜集黑客的ssh爆破字典了,从而可以反扫回去. ...
- 使用Medusa美杜莎暴力破解SSH密码
使用Medusa美杜莎暴力破解SSH密码 1.Medusa简介 Medusa(美杜莎)是一个速度快,支持大规模并行,模块化的爆力破解工具.可以同时对多个主机,用户或密码执行强力测试.Medusa和hy ...
- 使用pdfcrack & crunch暴力破解PDF密码
crunch是密码字典生成器,可以根据指定的字符来生成组合密码字典. pdfcrack是Linux下一个PDF暴力破解密工具,可以使用crunch生成的密码字典来暴力破解PDF文件的密码. 注:没有强 ...
- Linux用root强制踢掉已登录用户;用fail2ban阻止ssh暴力破解root密码
Linux用root强制踢掉已登录用户 首先使用w命令查看所有在线用户: [root@VM_152_184_centos /]# w 20:50:14 up 9 days, 5:58, 3 use ...
- Odoo14 防暴力破解登录密码
1 # Odoo14 防暴力破解登录密码 2 # 主要工具:redis 3 # 实现思路:限制每个用户24小时内登录失败次数.连续超过5次失败后,需要等待一定时间后才能再次尝试登录 4 # 配置:在你 ...
随机推荐
- [原题复现+审计][网鼎杯 2018] WEB Fakebook(SSRF、反序列化、SQL注入)
简介 原题复现: 考察知识点:SSRF.反序列化.SQL注入 线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题 过 ...
- 面试阿里,字节,美团必看的Spring的Bean管理详解
IOC容器 工厂只负责创建对象,而Spring当然不仅仅是一个对象工厂,其核心是一个对象容器,其具备控制反转的能力,所以也称为IOC容器. 帮助我们存放对象,并且管理对象,包括:创建.销毁.装配,这样 ...
- 做了两年java,这些高性能高可用高并发的技术架构你都知道吗?
前言 每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心.这样,你就能一次又一次地使用该方案而不必做重复工作. 所谓网站架构模式即为了解决大型网站面临的高并发访问.海量数据.高可靠 ...
- FL Studio通道窗口和步进音序器知识讲解
FL Studio中通道窗口是以样本为概念的音乐制作基础.通道窗口包含了步进音序器并结合了各种丰富的功能,可以通过通道窗口打开各通道的设置窗口.钢琴卷轴等.步进音序器在节奏制作方便表现出很好的优势,它 ...
- Python生成随机测试数据
前言 安装 pip install Faker 使用 from faker import Faker fake = Faker() name = fake.name() address = fake. ...
- Jmeter如何监测被测服务器资源
前言 Jmeter自身不支持对服务器的监控,需要安装第三方插件进行扩展. 下载插件 jmeter添加插件步骤,选项-PluginManager 勾选上PerfMon选项,点击右下角的Apply-按钮 ...
- C语言讲义——链表完整代码
#include <stdio.h> #include <stdlib.h> #include <string.h> struct Node { int _id; ...
- Java基础教程——数组
数组 Java数组:用于存储同一种数据类型的多个数据. Java数组本身是一种数据类型--引用类型. 类(String.Scanner等大写字母开头的类型)也属于引用类型,int.double等基本类 ...
- php项目使用git的webhooks实现自动部署
前言 在项目开发中使用git进行代码的管理,每次完成更改上传代码后,还需要登录服务器将代码拉取下来.现在git服务器(gitee/gitlab/github)都会有Webhooks功能,以实现在向gi ...
- 11_SurfaceView绘图
学习SurfaceView绘图API的使用方法,为接下来使用SurfaceView开发游戏做准备. 1 package com.example.surfaceview; 2 3 import andr ...