当前位置:首页 » 文件管理 » python解压zip

python解压zip

发布时间: 2025-02-12 09:08:46

‘壹’ python暴力破解zip加密文件

前言:日常工作中,会遇到一些加密的zip文件,但是因为某些原因或者时间过长,密码不知道了。但是zip文件中文件有很重要很必须。那么,我们试一试万能的Python,暴力破解密码。一、破解zip加密文件的思路:1、准备一个加密的zip文件。2、zipfile模块可以解压zip文件。解压时可以提供密码zfile.extractall("./",pwd=password.encode("utf8"))3、itertools.permutations实现全字符的全排列。通过函数itertools.permutations("abc",3)实现全字符的全排列:abc/acb/bca/bac/cab/cba二:实例代码演示:0、zip的压缩方式:本文介绍的zip文件知道密码一共是4位的,密码字符的范围是a-z1-0。并且不存在重复字符的,不会有“aabb”的密码。zip压缩时是选择了zip传统加密!1、解压zip文件:导入zipfile模块,使用其中的extractall()函数。importitertoolsfilename="readme.zip"#创建一个解压的函数,入参为文件名和密码#并使用try-except,避免报错中断程序。defuncompress(file_name,pass_word):try:withzipfile.ZipFile(file_name)asz_file:z_file.extractall("./",pwd=pass_word.encode("utf-8"))returnTrueexcept:returnFalse2、实现密码字符的全排列:="readme.zip"#创建一个解压的函数,入参为文件名和密码#并使用try-except,避免报错中断程序。defuncompress(file_name,pass_word):try:withzipfile.ZipFile(file_name)asz_file:z_file.extractall("./",pwd=pass_word.encode("utf-8"))returnTrueexcept:returnFalse#chars是密码可能的字符集chars=""forcinitertools.permutations(chars,4):password=''.join(c)print(password)result=uncompress(filename,password)ifnotresult:print('解压失败。',password)else:print('解压成功。',password)break

文件压缩时,一些注意的事项:

三、密码是几位未知,也可以破解密码:

查过一些资料,zip压缩文件密码最长为12位,在原来的程序上增加上一个for循环就可以实现破解密码了。

="readme.zip"defuncompress(file_name,pass_word):try:withzipfile.ZipFile(file_name)asz_file:z_file.extractall("./",pwd=pass_word.encode("utf-8"))returnTrueexcept:returnFalsechars=""foriinrange(12):forcinitertools.permutations(chars,i):password=''.join(c)print(password)result=uncompress(filename,password)ifnotresult:print('解压失败。',password)else:print('解压成功。',password)break总结:此方法可以是实现破解zip文件的密码,python可以完成一些好玩的事情。

‘贰’ 下载python然后有一堆文件要解压

python一堆文件解压方法如下。

压缩包解压要用的是zipfile这个包。

zip_file = zipfile.ZipFile(r'D:数据源XX_%s.zip'%yday)

zip_list = zip_file.namelist() # 压缩文件清单,可以直接看到压缩包内的各个文件的明细

for f in zip_list: # 遍历这些文件,逐个解压出来,

zip_file.extract(f,r'D:数据源')

zip_file.close() # 不能少!

print('昨日日志解压完成,请在文件夹中验收!') # 当然我是不需要查收的(*/ω\*)

这里的解压操作实际就相当于鼠标右键“解压到当前文件夹”的效果。

完成解压后运行.close()是个比较好的习惯,否则可能会导致包括但不限于:

文件会一直被占用着,可能无法重新打开;

在进程结束之前文件都删不掉;

文件内容不能即时 flush 到磁盘直到进程结束;

到此,整个流程在无需打开浏览器和文件夹的情况下便自动完成了。

为了方便日常运行代码,这里把上面的两个流程包装成一个函数,下载解压

#下载昨日日志

def download_XXlog():

yday = (date.today()+timedelta(days=-1)).strftime('%Y%m%d') # 获取昨日日期

r = requests.get('http://XXXXXXXX/XX_%s.zip'%yday) # 获取以日期命名的压缩包信息

with open(r'D:数据源XX_%s.zip'%yday,'wb') as code: # 将压缩包内容写入到 "D:数据源" 下,并按日期命名

code.write(r.content)

print('昨日XX日志下载完成。')

zip_file = zipfile.ZipFile(r'D:数据源XX_%s.zip'%yday)

zip_list = zip_file.namelist() # 压缩文件清单,可以直接看到压缩包内的各个文件的明细

for f in zip_list: # 遍历这些文件,逐个解压出来,

zip_file.extract(f,r'D:数据源')

zip_file.close() # 不能少!

print('昨日日志解压完成,请在文件夹中验收!')

download_XXlog()

拓展

作为拓展,这里再加一个可以根据实际情况输入(input)起始和终止日期,来下载一个特定时间段日志的函数,这里就涉及了datetime和time这两个工具包了。

热点内容
如何开发android应用 发布:2025-04-22 22:18:55 浏览:879
医保卡密码从哪里看 发布:2025-04-22 22:14:34 浏览:260
地铁逃生安卓更新后为什么进不去 发布:2025-04-22 22:13:49 浏览:443
java枚举使用 发布:2025-04-22 22:06:56 浏览:257
分解压与K 发布:2025-04-22 22:06:40 浏览:835
md5加密是对称加密吗 发布:2025-04-22 21:51:31 浏览:655
高德地图车机版要安卓什么版 发布:2025-04-22 21:41:20 浏览:196
一键ftp服务器搭建脚本 发布:2025-04-22 21:36:28 浏览:88
g代码编译器 发布:2025-04-22 20:25:20 浏览:276
段式编译器 发布:2025-04-22 20:15:45 浏览:205