【问题标题】:Bad password error while extracting a zip from python zipfile从 python zipfile 中提取 zip 时出现密码错误
【发布时间】:2020-04-16 01:37:14
【问题描述】:

我正在尝试一个简单的代码:

from zipfile import ZipFile

password = '1sS34nConn3ryTh3B3st007?'

zip_file = 'file.zip'
with ZipFile(zip_file) as zf:
     zf.extractall(pwd=bytes(password,'utf-8'))


Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "/usr/lib64/python3.6/zipfile.py", line 1524, in extractall
    self._extract_member(zipinfo, path, pwd)
  File "/usr/lib64/python3.6/zipfile.py", line 1577, in _extract_member
    with self.open(member, pwd=pwd) as source, \
  File "/usr/lib64/python3.6/zipfile.py", line 1446, in open
    raise RuntimeError("Bad password for file %r" % name)
RuntimeError: Bad password for file <ZipInfo filename='file.csv' compress_type=99 file_size=272074 compress_size=60230>

当我使用 7z 或 winrar 在 Windows 上提取它时,它工作得非常好。 py7zr 也会报错。

【问题讨论】:

  • zip 文件使用什么加密系统?较新的 Zip 文件使用旧 zip 库无法处理的 AES-256。
  • 我不确定,有没有办法从文件中找出来?另外,如果它是我假设的 AES-256,那么解压缩它的 python 库和代码应该是什么?

标签: python-3.x extract zipfile


【解决方案1】:

我尝试使用您的密码从 Windows 上的 7z Ui 加密文件。 在我运行这个脚本之后:

from zipfile import ZipFile

password = '1sS34nConn3ryTh3B3st007?'

zip_file = 'file.zip'
zf = ZipFile(self.archive_name, 'r')
zf.setpassword(bytes(password,"utf-8"))
zf.extractall(path=".")

没问题。你也可以试试?

【讨论】:

    【解决方案2】:

    由于更新的 AES-256 编码,您需要使用 pyzipper 模块而不是 zipfile。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-22
      相关资源
      最近更新 更多