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 回答