不支持Python Zipfile压缩方法

Rob*_*bin 2 python python-zipfile

当我使用 ZIPCrypto 压缩时,这种方法起作用了。AES-256 失败了。请问如何解决这个问题?

我之前使用以下 Python 代码成功打开了使用 7-Zip 创建的受密码保护的 .zip 文件:

import zipfile

zip_file = zipfile.ZipFile('crack_me.zip')
output_verbose = 1  # increase that for long password list
with open('passwords.txt', 'rb') as password_list:
    for index, line in enumerate(password_list):
        try:
            pwd = line.strip(b'\r\n')
            zip_file.extractall(pwd=pwd)
        except RuntimeError as e:
            print(e)
            if index % output_verbose == 0:
                print('{}. The {} word not matched.'.format(index + 1, pwd))
        else:
            print('{}. Wow ! found the password: {}'.format(index + 1, pwd))
            break

zip_file.close()
Run Code Online (Sandbox Code Playgroud)

然而,由于无法理解的原因,它在多次尝试中只成功了几次。大多数情况下,都会给出“不支持该压缩方法”的例外情况。

我尝试删除、重命名、重新创建 .zip 文件,但没有成功。它偶尔起作用对我来说毫无意义。

我尝试将问题简化如下:

import zipfile

zip_file = zipfile.ZipFile('crack_me.zip')
try:
    zip_file.extractall(pwd=b"password")
    print('Opened')
except RuntimeError as e:
    print(e)
Run Code Online (Sandbox Code Playgroud)

但我也遇到了同样的例外。我尝试过pwd诸如 bytes("password", "utf-8) 等的变体。

使用 7-Zip 打开时,提供的密码会打开 .zip 文件。

请问这是怎么回事?

小智 7

尝试使用pyzipper. 这是一个示例脚本:

import pyzipper


password = 'abc'

with pyzipper.AESZipFile('yourdocument.zip', 'r', compression=pyzipper.ZIP_DEFLATED, encryption=pyzipper.WZ_AES) as extracted_zip:
    extracted_zip.extractall(pwd=str.encode(password))
Run Code Online (Sandbox Code Playgroud)


小智 5

为了使 zipfile 库能够处理受密码保护的 zip,您需要在设置密码时勾选“Zip 传统加密”选项。

图片