1

電子メールに添付されたパスワードで保護された zip ファイルの復号化を取り除き、暗号化されていない同じ zip ファイルに置き換える必要があるユース ケースがあります。私がこれまでに持っているもの:

import zipfile
import StringIO

...

if part.get_content_type() == "application/zip":
    encrypted_string = part.get_payload().decode("base64")
    encrypted_zip = zipfile.ZipFile(StringIO(encrypted_string))
    encrypted_zip.setpassword("password")

私ができるようにzipファイルが復号化され、機能することを知っていますencrypted_zip.namelist()。var encrypted_zip に通常の zip があるので、それを base64 でエンコードし、現在の添付ファイルのペイロードを置き換えて、次の添付ファイルに進みたいと思います。ただし、ZipFile には、再エンコードに使用できる「.to_string()」メソッドがありません。

どうすればこれを達成できますか?

4

1 に答える 1

1

パスワードを取り除くために一時アーカイブを作成できます。

import zipfile
import StringIO


path = "dev.zip"   
encrypted_zip = zipfile.ZipFile( path  )
encrypted_zip.setpassword("pass")
print encrypted_zip.namelist()

with zipfile.ZipFile('spam.zip', 'w') as myzip:
    for nested_file in encrypted_zip.namelist():
        myzip.write(encrypted_zip.read(nested_file))

このスクリプトは、パスワードで保護されたアーカイブ「dev.zip」のファイルを、暗号化されていないアーカイブ「spam.zip」にコピーします。(後でアーカイブを破棄することを忘れないでください)。

于 2012-12-13T11:07:31.183 に答える