随笔 - 139  文章 - 0 评论 - 0 阅读 - 33825
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

在python中操作zip文件, 基本上都是使用zipfile模块,他可以创建、解压文件,获取zip文件的元数据信息。
我们想要操作一个zip文件,第一步就是初始化ZipFile实例。

 

1、打开test.zip文件。

import zipfile
filename = zipfile.ZipFile('test.zip')

 

2、解压文件

目前我们只是传入一个参数地址,实例化了一个对象,想要解压文件还要是要到extractall方法,
三个参数,path是解压的路径(默认为解压文件所在路径),members是需要解压出来的文件(默认为全部文件),pwd是密码。

filename.extractall(pwd=password.encode('ascii'))
或filename.extractall(pwd=str.encode(password))

因为在python3中pwd需要的是byte,所以需要自行解码

 

3、查看压缩文件中的文件列表

假设密码是xyz
filename = zipfile.ZipFile('G:/python/code/test.zip','r')
filename.extractall(pwd=str.encode('xyz'))
print(filename.namelist())
['test']

 

4、例子:通过密码字典文件破解压缩文件

复制代码
import zipfile

#定义使用密码打开文件的函数
def setpass(filename,password):
    try:
        filename.extractall(pwd=str.encode(password))
        return password #如果密码正确,则返回密码
    except Exception as e:
        pass

#定义暴力破解函数
def read_zipfile():
    filename = zipfile.ZipFile('G:/python/code/test.zip','r')    #用zipfile函数的ZipFile类定义压缩文件
    file_pass = 'G:/python/code/字典-3'    #定义字典文件
    with open(file_pass,encoding='utf-8') as file:    #打开字典文件,这里经测试encoding='utf-8'可以不写
        for i in file.readlines():    #读取字典文件中的每一行
            gess=setpass(filename,i.strip('\n'))    #调用setpass函数,并传入文件名和密码2个参数,这里注意字典文件中每一行包括1个换行符,所以要去掉,strip('/n')可以删除i两端的换行符
            if gess:
                print(filename.namelist())
                print('密码是:'+i)
                exit(0) #如果密码正确则退出程序,或者写成break也可以
            else:
                print('正在尝试:'+i)

if __name__=='__main__':
    read_zipfile()
复制代码

 

posted on   longfei2021  阅读(215)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
点击右上角即可分享
微信分享提示