工具破解

前两天在网上下来了一波项目案例,结果全是加密的压缩包,于是去网上找了一个压缩包破解的工具

苦于工具破解太慢,一个压缩包要好久,解压了三个之后就放弃了,准备另寻他法

密码字典

巧的是破解的三个都是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模块文件名乱码问题

最新文章

  1. linux perf - 性能测试和优化工具
  2. x86架构手机跑安卓好吗?(脑补)
  3. 安装Python2.7环境
  4. ios 修正waring:Method override for the designated initializer of the superclass '-init' not found
  5. viewpaper
  6. Centos7安装配置gitlab
  7. ubuntu cpus 共享打印
  8. Undefined index:
  9. hdu 3478(判断奇环)
  10. 查看数据库中有哪些活动的事务,对应的会话id,执行的语句
  11. js 强制转换
  12. sql server 删除索引的语句
  13. [FindBugs分析记录]Potentially dangerous use of non-short-circuit logic
  14. wx
  15. php Mysql 和Mysqli数据库函数整合
  16. 多版本jQuery的使用剖析
  17. Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(十三)
  18. HDU2149-Public Sale
  19. IOS中APP开发常用的一些接口
  20. 使用JAXP进行XM解析(基于DOM)

热门文章

  1. 控制算法PID-理解分析1
  2. 划分问题(Java 动态规划)
  3. [原题复现+审计][BJDCTF2020]Mark loves cat($$导致的变量覆盖问题)
  4. jsp跳转不成功,服务器也不报错,登录页面点击登录没反应,代码如下,请韭菜园子的工友给予指导!
  5. 面试官:小伙子,你给我说一下你对MySQL索引的理解吧
  6. Postman实用小技巧
  7. Javascript 严格模式的一些理解
  8. oracle整表数据被误删除之寻踪
  9. Leetcode 周赛#202 题解
  10. 洛谷 P1284 三角形牧场 题解(背包+海伦公式)