pyunpack icon indicating copy to clipboard operation
pyunpack copied to clipboard

Password protected ZIPs cannot be extracted

Open sr-verde opened this issue 2 years ago • 0 comments

pyunpack currently doesn't extract password protected ZIP files with backend = "auto". But it is able to do it with manually chosen "patool" as backend.

Default config fails:

$ python -m pyunpack.cli  -p "geheim" ./lz_input/pwd_protected.zip . 
Traceback (most recent call last):
  File "/usr/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/home/user/.cache/pypoetry/virtualenvs/mnxmpl-ToTEp6cO-py3.10/lib/python3.10/site-packages/pyunpack/cli.py", line 12, in <module>
    def extractall(
  File "/home/user/.cache/pypoetry/virtualenvs/mnxmpl-ToTEp6cO-py3.10/lib/python3.10/site-packages/entrypoint2/__init__.py", line 382, in entrypoint
    return func(**kwargs)
  File "/home/user/.cache/pypoetry/virtualenvs/mnxmpl-ToTEp6cO-py3.10/lib/python3.10/site-packages/pyunpack/cli.py", line 21, in extractall
    Archive(filename, backend, password=password).extractall(
  File "/home/user/.cache/pypoetry/virtualenvs/mnxmpl-ToTEp6cO-py3.10/lib/python3.10/site-packages/pyunpack/__init__.py", line 111, in extractall
    self.extractall_zipfile(directory)
  File "/home/user/.cache/pypoetry/virtualenvs/mnxmpl-ToTEp6cO-py3.10/lib/python3.10/site-packages/pyunpack/__init__.py", line 79, in extractall_zipfile
    zipfile.ZipFile(self.filename).extractall(
  File "/usr/lib/python3.10/zipfile.py", line 1645, in extractall
    self._extract_member(zipinfo, path, pwd)
  File "/usr/lib/python3.10/zipfile.py", line 1698, in _extract_member
    with self.open(member, pwd=pwd) as source, \
  File "/usr/lib/python3.10/zipfile.py", line 1571, in open
    return ZipExtFile(zef_file, mode, zinfo, pwd, True)
  File "/usr/lib/python3.10/zipfile.py", line 800, in __init__
    self._decompressor = _get_decompressor(self._compress_type)
  File "/usr/lib/python3.10/zipfile.py", line 699, in _get_decompressor
    _check_compression(compress_type)
  File "/usr/lib/python3.10/zipfile.py", line 679, in _check_compression
    raise NotImplementedError("That compression method is not supported")
NotImplementedError: That compression method is not supported
$ ls .

This works:

$ python3 -m pyunpack.cli  -p "geheim" -b "patool" ./lz_input/pwd_protected.zip .
$ ls .
file.txt

Info:

Python: 3.10.8
Patool: 1.12 4928f3f
Pyunpack: 0.3

sr-verde avatar Dec 05 '22 13:12 sr-verde