zoukankan      html  css  js  c++  java
  • zipfile模块

    在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('
    '))    #调用setpass函数,并传入文件名和密码2个参数,这里注意字典文件中每一行包括1个换行符,所以要去掉,strip('/n')可以删除i两端的换行符
                if gess:
                    print(filename.namelist())
                    print('密码是:'+i)
                    exit(0) #如果密码正确则退出程序,或者写成break也可以
                else:
                    print('正在尝试:'+i)
    
    if __name__=='__main__':
        read_zipfile()
  • 相关阅读:
    Flink RichSourceFunction应用,读关系型数据(mysql)数据写入关系型数据库(mysql)
    基于Filebeat+Kafka+Flink仿天猫双11实时交易额
    Flink消费Kafka数据并把实时计算的结果导入到Redis
    Flink+kafka实现Wordcount实时计算
    Filebeat+Kafka+Logstash+ElasticSearch+Kibana搭建完整版
    spring boot+mybatis+quartz项目的搭建完整版
    Hadoop生态组件Hive,Sqoop安装及Sqoop从HDFS/hive抽取数据到关系型数据库Mysql
    Swagger+AutoRest 生成web api客户端(.Net)
    NodeJS学习
    Go学习
  • 原文地址:https://www.cnblogs.com/dxnui119/p/10082217.html
Copyright © 2011-2022 走看看