共计 1480 个字符,预计需要花费 4 分钟才能阅读完成。
往期回顾
Python 实现主动监测 Github 我的项目并关上网页
Python 实现文件主动归类
Python 实现帮你抉择双色球号码
Python 实现每日更换“必应图片”为“桌面壁纸”
Python 实现批量加水印
前言
明天咱们就利用 python 脚本实现破译 zip 压缩包。间接开整~
成果展现
过程如下:
- 建设明码字典(罕用明码)
- 尝试用每一个明码,来解压文件
- 解压胜利,跳出循环
明码字典
比方,当初一个纯数字的六位明码“050825”
能够从顺次遍历“000000”到“999999”,把所有的后果保留到 txt 文件。
这样的毛病就是比拟死板,只能是 6 位数字,另外就是比拟占内存。
于是,有个大神写了个“字典生成器”,你须要做的是传入两个参数“字典的组成元素”和“明码的长度列表”
比方,纯数字的“050825”,你就传入如下的参数:
- [0,1,2,3,4,5,6,7,8,9],数字就这 9 个
- [6],明码的长度
如此,便可按你的要求失去明码的 Python 生成器。咱们晓得,生成器是不占用内存的。
如果数字不过瘾,比方有的明码是字符串。能够思考在第一个参数中,退出“a-z”和“A-Z”
zipfile 解压文件
zipfile 模块是 python 自带的,用于对 zip 文件的读、写、追加、解压操作等。
“解压”次要是用到 ZipFile 对象的 extractall() 办法
extractall(path=None, members=None, pwd=None) 办法次要有三个参数。
咱们来看一下每个参数的含意:
- path 指定解压后文件的存储地位
- members(可选)指定 Zip 文件中要解压的文件,这个文件名称必须是通过 namelist() 办法返回列表的子集
- pwd 指定 Zip 文件的解压密码(编码“utf-8”)
源码:
import zipfile
try:
with zipfile.ZipFile('test.zip') as zFile:
# 创立 ZipFile 对象
# 解压文件
zFile.extractall(path='./',pwd=b'1234')
print('解压胜利!')
except:
print('解压失败')
进度条可视化
上次的进度条,这次派上用场了,对于进度条,本程序应用 tqdm 扩大库,能够参考上面的链接:用 python 制作可视化进度条
代码中的 tqdm 有两个参数:
- 1、明码迭代器
-
2、明码总个数
for pwd in tqdm(chain.from_iterable(all_passwd(dictionaries, maxlen) for maxlen in lengths), total=total): if extract(zfile, pwd): # 记得 extract 函数返回的是 bool 类型的哦 break
这是破解的后果:
5%|▌ | 50691/1000000 [00:04<01:23, 11389.24it/s] Password is: 050825 bingo
4s 结束战斗 …
文章到这里就完结了,感激你的观看,Python 实用脚本系列,下篇文章分享批量下载百度图片
为了感激读者们,我想把我最近珍藏的一些编程干货分享给大家,回馈每一个读者,心愿能帮到你们。
干货次要有:
① 2000 多本 Python 电子书(支流和经典的书籍应该都有了)
② Python 规范库材料(最全中文版)
③ 我的项目源码(四五十个乏味且经典的练手我的项目及源码)
④ Python 根底入门、爬虫、web 开发、大数据分析方面的视频(适宜小白学习)
⑤ Python 学习路线图(辞别不入流的学习)
⑥ 两天的 Python 爬虫训练营直播权限
All done~详见个人简介或者私信获取残缺源代码。。