如何在 Python 中提取使用 PKWARE SecureZip 压缩的受密码保护的 zip 文件? (Windows 10)

How to extract a password protected zip file that is zipped using PKWARE SecureZip in Python? (Windows 10)

我正在尝试提取受密码保护 zip 文件的内容,这些文件是在Python 中使用PKWARE SecureZip 压缩的。 我已经尝试过的模块是 zipfile 和 pyzipper。但是这些模块的方法总是return 'NotImplementedError: strong encryption (flag bit 6)'.

from pyzipper

with ZipFile('Test.zip') as tz:
    tz.extractall(pwd=bytes('testpass', 'utf-8'))
Traceback (most recent call last):
  File "D:/Pradeep/Python Workspace/Sandbox/EvoFileDownloader.py", line 4, in <module>
    tz.extractall(pwd=bytes('testpass', 'utf-8'))
  File "D:\Program Files\Python\lib\zipfile.py", line 1616, in extractall
    self._extract_member(zipinfo, path, pwd)
  File "D:\Program Files\Python\lib\zipfile.py", line 1669, in _extract_member
    with self.open(member, pwd=pwd) as source, \
  File "D:\Program Files\Python\lib\zipfile.py", line 1500, in open
    raise NotImplementedError("strong encryption (flag bit 6)")
NotImplementedError: strong encryption (flag bit 6)

我试图通过检查从命令提示符中提取这些 zip 文件的方法来解决这个问题。 但是,我在我的安装目录中没有看到 'pkzipc.exe'(如 this 文档中所述)。

P.S:我没有在我的工作计算机(我正在尝试提取)上安装其他软件所需的管理员权限。

谁能帮我解决这个问题?

您尝试解压的文件是使用商业软件 PKWARE SecureZip 压缩的。这不是标准的 zip 存档,因此 none 的免费 zip software/libraries 可以解压它。

如果您想从 app/script 中解压缩它,有两种可能的方法。两者都需要安装商业 PKWARE 产品。

假设您有使用它的许可,我想最好的办法是使用 SecureZIP SDK library provided by PKWARE。这不是 python 库,因此您必须实施 python 包装器才能使用此 sdk。 Description of this SecureZIP toolkit for Windows mentions that it uses Microsoft’s Crypto API so perhaps windows.crypto python 库可能有用。

第二种方法需要免费安装PKWARE zip reader and invoking this app with apropriate parameters (assuming it has any command line interface) from your python script using subprocess.call similar to this post