我想用Python 3解压缩受密码保护的档案,我知道密码,但在zip标准中似乎有几种加密算法。
首先,我使用标准Ubuntu的archive 3.16.5创建一个zip归档,使用密码"1“。然后运行以下代码:
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>)。
当我运行Archive进行解压时,它可以正常工作。但是,一旦我尝试了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通常更喜欢AES加密(并且有很好的安全理由)。
那么,如何选择使用Python解压缩的算法呢?或者,我应该不关心zip格式本身,找到任何AES解密器,然后以某种方式将其连接到unzip?
我考虑过在bash调用中使用7zip,但是它会给与操作系统的交互带来更多的问题(如果执行机器没有这样的交互怎么办?)我还查找了Python3的libarchive端口(即python3-libarchive-c包)--它是与C实现分开开发的,目前不支持加密/解密。
发布于 2019-07-15 13:52:03
您可以使用拉链库解压缩AES加密的压缩文件。
https://stackoverflow.com/questions/50169242
复制相似问题