Python unzip AES-128 encrypted file
Question: Is there a way to decompress an AES-128 encrypte file directly with python,
since ZipFile throws a Bad Password error. If i use 7zip it works, so the
password is correct, but then again 7zip needs to be installed as a
dependency.

What i tried:

    
    
    from ZipFile import ZipFile
    zip = ZipFile('test.zip')
    zip.extractall(pwd='password')
    

This throws the Bad Password exception.

Checking the file with 7zip

    
    
    7z l -slt test.zip
    

This returns:

    
    
    Encrypted = +
    Method = pkAES-128 Deflate
    


Answer: The zipfile module from the Python standard library supports only CRC32
encrypted zip files (see here:
<http://hg.python.org/cpython/file/71adf21421d9/Lib/zipfile.py#l420> ). So,
there is no way around some 3rd party dependency.

The easiest way would be to just install 7zip and call the commandline utility
`7z` using the `subprocess` module from the standard lib:

    
    
    import subprocess
    subprocess.call(["7z", "x", "-ppassword", "test.zip"])
    

Another option would be the python module "PyLzma" which can also handle AES
encrypted 7zip archives: <https://github.com/fancycode/pylzma> . It doesn't
directly support decrypting classic zip files but you could use its routines
to write your own decompressor function.

