美文网首页
Python 尝试解压缩需要密码的zip格式压缩文件

Python 尝试解压缩需要密码的zip格式压缩文件

作者: 我的小小笔尖 | 来源:发表于2023-09-24 22:24 被阅读0次

使用zipfile库,python自带的,不需要另外安装
zip压缩格式是开源的,rar格式是商业的,这里只说解压缩zip格式
程序是通过密码字典,暴力破解zip压缩文件

解压缩zip文件的核心代码如下:

# 打开Zip文件
zFile = zipfile.ZipFile(filepath, mode='r')

# 解压到软件所在目录
# 此处无论密码是否正确都会创建目录
# 如果密码错误则会报异常
# 此方法中文乱码
zFile.extractall(pwd=bytes(password, 'utf-8'), path=folder)

代码解释:
filepath,zip压缩文件
password,密码
folder,目标目录

遇到的问题

1,中文乱码

网上找到的思路都是使用 extract() 逐个文件解压,这样就可以在此过程中逐个文件修正中文乱码问题。
亲测无效。

有效的思路是:
先用 extractall() 一次性解压全部;
再遍历文件夹和文件名,处理中文乱码问题

处理中文乱码的核心代码如下:

# 处理中文乱码
# os.walk() 是一个深度优先遍历算法
# topdown = False 优先遍历最底层的子目录
for dirpath, dirnames, filenames in os.walk(folder, topdown=False):
    # 遍历目录中所有文件,并重命名
    # 必须先重命名文件名,如果先重命名文件夹,则文件名路径错误
    for filename in filenames:
        newFilename = filename.encode('cp437').decode('gbk')
        os.rename(os.path.join(dirpath, filename), os.path.join(dirpath, newFilename))
    # 遍历目录中所有文件夹,并重命名
    for dirname in dirnames:
        newDirname = dirname.encode('cp437').decode('gbk')
        os.rename(os.path.join(dirpath, 

2,密码错误也会创建目标文件夹

处理方法就是,如果密码错误,未能正确解压zip文件,则删除空的目标文件夹

删除目录的核心代码如下:

# 删除无效目录(解压失败也会产生目录)
if os.path.exists(folder):
    # 删除目录
    shutil.rmtree(folde)
3,使用线程时出的问题

如果压缩包中第一个文件名无后缀名,例如:.DS_Store
则采用多线程尝试密码时会报错:
FileExistsError(17, '当文件已存在时,无法创建该文件。')

不使用多线程则不会报错
所以可做成手动选择多线程单线程

手动选择多线程或单线程的核心代码如下:

for line in passFile.readlines():
    password = line.strip('\n')
    if isMultithreading:
        # 多线程
        t = Thread(target=extractZipFile, args=(zFile, password, folder))
        t.start()
    else:
        # 单线程
        extractZipFile(zFile, pass

代码解释:
passFile,是密码文件,通过for循环逐个尝试密码
isMultithreading,是否使用多线程的标记

程序界面图


界面.JPG

累死了~~~

相关文章

  • Linux解压缩命令

    常用的压缩格式: .zip格式压缩:linux和windows中的zip格式可以通用 压缩文件夹: 解压缩: 删除...

  • 2020-01-09 数据压缩

    压缩文件包括zip,gzip,tar等等,创建压缩文件所需的计算资源远远多于解压缩。 有些压缩格式无需解压缩即可合...

  • 文件处理-Linux

    1 .zip 文件 zip压缩文件 .zip文件解压缩 2 .gz 文件 gzip, gunzip, zcat -...

  • Linux文件操作

    Linux命令格式 zip格式的压缩 zip 压缩文件名 源文件 压缩文件zip -r 压缩文件名 源文件压缩文...

  • Python实现批量压缩文件/文件夹——zipfile

    zipfile是python里用来做zip格式编码的压缩和解压缩的,由于是很常见的zip格式,所以这个模块使用频率...

  • Linux压缩与解压缩命令

    压缩与解压缩命令 linux系统中有以下五种格式的压缩文件,分别为:.zip 、 .gz 、 .bz2 、 .ta...

  • Linux基础04

    Linux压缩命令 .zip格式压缩 实例:压缩文件 zip 压缩文件名 原文件 实例:压缩文件夹 zip -r ...

  • 使用python破解一个zip加密文件

    使用python破解一个zip加密文件本文将通过一个zip压缩文件密码的例子,说明如何定义并编写一个python方...

  • 压缩文件的使用

    1. 压缩文件的分类: ZIP:扩展名为.zip,用于压缩/解压缩的程序是zip/unzip; GZIP:扩展名为...

  • ubantu 解压

    tar -zxvf ww.tar.gz 语法:unzip 〔选项〕 压缩文件名.zip -x 文件列表 解压缩文件...

网友评论

      本文标题:Python 尝试解压缩需要密码的zip格式压缩文件

      本文链接:https://www.haomeiwen.com/subject/iddqbdtx.html