Zipfile 方法不起作用

Posted

技术标签:

【中文标题】Zipfile 方法不起作用【英文标题】:Zipfile Method doesn't works 【发布时间】:2015-11-06 23:23:25 【问题描述】:

我使用rockyou 密码创建了一个压缩文件,并尝试提取所有文件。但是我遇到了一些问题。不管我在 extractall 中输入的密码如何,我都会得到:

('Bad password for file', <zipfile.ZipInfo object at 0x7f7928d14dc8>)

代码:

import zipfile

zfile = zipfile.ZipFile("./rockyou.zip")

pss = b"rockyou"

try:
    zfile.extractall(pwd = pss)

except RuntimeError as e:
    print(e)
    zfile.close()

如果我传递一个字符串,我会遇到另一个问题:

TypeError: pwd: expected bytes, got <class 'str'>

我也试过了:

pss = str.encode("rockyou")

还有:

pss = bytes(str.encode("rockyou"))

还有:

pss = bytes("rockyou".encode("UTF-8"))

有人帮忙吗?

【问题讨论】:

你为什么要转换成字节?为什么不直接作为字符串传递? 另外,不要使用pass,因为它是保留字 请确认您可以使用标准 zip 程序使用该密码打开文件。 你见过this? 一个丑陋(但实用)的解决方案是:os.system('7z e -y -p"password" filename.zip') 导入后os 【参考方案1】:

嗯,我找到了解决这个问题的方法,对我有用,但可能不是那么漂亮......

  zFile.extractall(pwd = 'PASSWORD'.encode('cp850','replace'))

【讨论】:

谢谢你,收到TypeError: pwd: expected bytes, got &lt;class 'str'&gt;【参考方案2】:

我一直在关注暴力 python 书,在第一章中你制作了一个迷你脚本来解锁一个加密的 zip 文件。对我有用的是添加一个b,这样字符串就会以字节为单位:

import zipfile
zFile = zipfile.ZipFile("evil.zip")
zFile.extractall(pwd=b'secret') #this is what i'm talking about

【讨论】:

如上所述,看起来这是 zipfiles 加密之间的兼容性问题,因此如果您使用 AES-256 加密文件会出现错误。我不知道是否已修复,但正确的方法是在 pwd-param 中传递字节并使用 zipcrypto 加密模式加密您的文件。

以上是关于Zipfile 方法不起作用的主要内容,如果未能解决你的问题,请参考以下文章

与 Gooey 模块一起使用时功能不起作用

transpportrule不起作用

Python zipfile 模块不压缩文件

[iOS] UICollectionView调用scrollToItem不起作用

SpringBoot异步任务及Async不起作用的原因

Fastjson @JsonField 不起作用