我有一个 zip 存档,在 Linux 中受密码保护(密码是“秘密”)。但是,每当我尝试打开 zip 文件时,都不会提示我输入密码或任何内容。我还有一个 python 脚本,可以提取 zip 存档并故意传递错误的密码,但它仍然会解压缩存档。我也没有以 root 身份运行,因为我听说 root 喜欢忽略文件权限。我做错了什么吗?
我将文件夹“evil”压缩为 zip 文件“evil.zip”,并使用以下命令为其指定密码:
zip --pasword secret -r evil.zip evil
python 脚本 unzip.py 内容如下:
import zipfile
zFile = zipfile.ZipFile("evil.zip")
zFile.extractall(pwd="oranges")
我正在运行 Kali Linux 1.0.9 和 Zip (v. 3.0)
我还尝试使用加密命令而不是密码:
zip --encrypt -r evil.zip evil
这提示我输入密码并将其设置为秘密。
我最终得到了这样的消息:
Traceback (mostrecent call last) :
File "unzip.py", line 3, in <module>
zFile.extractall(pwd="oranges")
File "/usr/lib/python2.7/unzip.py", line 980, in extractall
self.extract(zipinfo, path, pwd)
File "/usr/lib/python2.7/unzip.py", line 968, in extract
return self._extract_member(member, path, pwd)
File "/usr/lib/python2.7/unzip.py", line 1011, in _extract_member
source = self.open(member, pwd=pwd)
File "/usr/lib/python2.7/unzip.py", line 952, in open
raise RuntimeError("Bad password for file", name)
RuntimeError: ('Bad password for file', <zipfile.ZipInfo object at 0x23a0118>)
然后该文件夹仍然解压。
答案1
存档中的文件经过加密并受密码保护,而不是目录结构。这意味着您将能够提取目录即使已加密(但不是文件),也可以从存档中获取。
为了以某种方式加密档案以使其不可能,我建议使用类似 GnuPG 的东西。
答案2
据猜测,这是因为你正在运行 Kali。该发行版旨在“绕过”安全功能(其合法目的是突出安全缺陷)。我认为您不会在任何其他发行版中遇到此“错误”。