如何在Python3中解压缩用PKZIP以外的算法加密的文件?

伊库迪克

我想用Python 3解压缩受密码保护的档案。我知道密码,但是在zip标准中似乎有几种加密算法。

首先,我使用密码“ 1”使用标准Ubuntu的Archive Manager 3.16.5创建一个zip存档。然后我运行以下代码:

import zipfile

zip_file = zipfile.ZipFile('archive.zip')
zip_file.extractall(pwd=b'1')

结果,我得到了RuntimeError: ('Bad password for file', <ZipInfo filename='contents.txt' compress_type=99 filemode='-rw-rw-r--' external_attr=0x8020 file_size=40 compress_size=60>)

当我运行存档管理器进行解压缩时,它可以正常工作。但是,一旦尝试unzip,它就无法完成工作:

$ unzip -P 1 archive.zip 
Archive:  archive.zip
    skipping: contents.txt            need PK compat. v5.1 (can do v4.6)

据我了解,问题在于unzip使用了PKZIP算法,而libarchive被广泛使用,7zip并且Archive Manager通常更喜欢使用AES进行加密(并且有很好的安全性理由)。

那么,如何选择在Python中解压缩的算法?还是我应该不理会zip格式本身并找到任何AES解密器,然后以某种方式将其连接到unzip以后?

我考虑过7zip在bash调用中使用,但是它与操作系统的交互带来了更多的问题(如果执行的计算机没有一个,该怎么办?)。我还查找了libarchivePython 3(即python3-libarchive-c软件包)的端口-它是与C实现分开开发的,并且目前不支持加密/解密。

乔治·舍利

您可以使用pyzipper库解压缩AES加密的zip文件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章