python - 如何使用 Python 从 zip 文件中去除密码加密

标签 python email zip base64 stringio

我有一个用例,我需要删除电子邮件中附加的受密码保护的 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 crypto_zip 中有常规 zip,我只想对其进行 Base64 编码并替换当前附件的有效负载,然后继续处理下一个附件。但是,ZipFile 没有“.to_string()”方法,我可以用它来重新编码它。

我该如何实现这一目标?

最佳答案

您可以创建一个临时存档来删除密码:

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”中。 (之后不要忘记销毁存档)。

关于python - 如何使用 Python 从 zip 文件中去除密码加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13858169/

相关文章:

html - Windows 8 邮件应用程序未显示订阅/取消订阅超链接?

android - 如何在 Android 应用程序中验证用于注册的电子邮件地址

rust - 有什么方法可以实现 ZipFile 的 Send 特性吗?

python - 将图像导入 tkinter

python - 连接到本地 SQL Server 实例

python - Scrapy - python - 网络爬虫。输出所有 xpath 的列表,而不是仅第一个匹配项

python - 如何使用多处理模块迭代列表并将其与字典中的键匹配?

email - RichText 电子邮件正文中的 Excel VBA URL 超链接

.net - 如何判断 "ZipArchiveEntry"是否是目录?

linux - 失败时如何查看AWS Elastic Beanstalk部署过程日志