4

ZipFile が Bad Password エラーをスローするため、AES-128 暗号化ファイルを Python で直接解凍する方法はありますか。7zip を使用すると機能するため、パスワードは正しいのですが、依存関係として 7zip をインストールする必要があります。

私が試したこと:

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

これにより、Bad Password 例外がスローされます。

7zipでファイルを確認する

7z l -slt test.zip

これは以下を返します:

Encrypted = +
Method = pkAES-128 Deflate
4

3 に答える 3

7

Python 標準ライブラリの zipfile モジュールは、CRC32 で暗号化された zip ファイルのみをサポートします (こちらを参照してください: http://hg.python.org/cpython/file/71adf21421d9/Lib/zipfile.py#l420 )。したがって、サードパーティの依存関係を回避する方法はありません。

最も簡単な方法は、7zip をインストールし、標準ライブラリのモジュール7zを使用してコマンドライン ユーティリティを呼び出すことです。subprocess

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

別のオプションは、AES で暗号化された 7zip アーカイブも処理できる Python モジュール "PyLzma" です: https://github.com/fancycode/pylzma。従来の zip ファイルの復号化を直接サポートしていませんが、そのルーチンを使用して独自の解凍関数を作成できます。

于 2013-03-21T17:37:49.027 に答える