1

我正在尝试提取已在 Python 中使用 PKWARE SecureZip 压缩的受密码保护的zip 文件的内容。我已经尝试过的模块是 zipfile 和 pyzipper。但是这些模块的方法总是返回“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”(如文档中所述)。

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

谁能帮我解决这个问题?

4

1 回答 1

0

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

如果你想从你的应用程序/脚本中解压它,有两种可能的方法。两者都需要安装商业 PKWARE 产品。

假设您有使用它的许可,我想最好的办法是使用PKWARE 提供的 SecureZIP SDK 库。这不是 python 库,所以你必须实现一个 python 包装器才能使用这个 sdk。 这个适用于 Windows 的 SecureZIP 工具包的描述提到它使用 Microsoft 的 Crypto API,因此windows.crypto python 库可能有用。

第二种方法需要安装免费的PKWARE zip 阅读器subprocess.call,并使用类似于这篇文章的 python 脚本中的适当参数(假设它具有任何命令行界面)调用此应用程序

于 2020-07-31T12:26:37.613 回答