我读过 ZIP 文件以以下字节开头:
50 4B 03 04
参考:http ://www.garykessler.net/library/file_sigs.html
问题:是否有特定的字节序列表明 ZIP 文件已受密码保护?
我读过 ZIP 文件以以下字节开头:
50 4B 03 04
参考:http ://www.garykessler.net/library/file_sigs.html
问题:是否有特定的字节序列表明 ZIP 文件已受密码保护?
ZIP 文件必须以
50 4B 03 04
zip 文件中的条目50 4B 03 04...
以 .. 开头,通常,纯 zip 文件以 zip 条目开头,作为文件中的第一件事。但是,不要求 zip 文件以这些字节开头。所有以这些字节开头的文件可能都是zip 文件,但并非所有 zip 文件都以这些字节开头。
例如,您可以创建一个自解压存档,它是一个 PE-COFF 文件、一个常规 EXE,其中实际上有文件的签名,即4D 5A ...
. 然后,稍后在 exe 文件中,您可以存储以 . 开头的 zip 条目50 4B 03 04...
。该文件是 .exe 和 .zip。
自解压档案不是唯一不以50 4B 03 04
. 您可以通过这种方式在 zip 文件中“隐藏”任意数据。WinZip 和其他工具在读取以这种方式格式化的 zip 文件时应该没有问题。
如果您50 4B 03 04
在文件中找到签名,无论是在文件开头还是其他地方,您都可以查看接下来的几个字节以确定该特定条目是否已加密。通常它看起来像这样:
50 4B 03 04 14 00 01 00 08 00 ...
前四个字节是条目签名。接下来的两个字节是“需要提取的版本”。在这种情况下,它是 0x0014,即 20。根据 pkware 规范,这意味着需要 pkzip 规范的 2.0 版才能提取条目。(条目使用的最新 zip “功能”由规范的 v2.0 描述)。如果 zip 文件中使用了更高级的功能,您可以在此处找到更高的数字。AES 加密需要 v5.1 规范,因此您应该在该标头中找到 0x0033。(并非所有 zip 工具都尊重这一点)。
接下来的 2 个字节代表通用位标志(规范称其为“位标志”,即使它是一个位字段),在本例中为 0x0001。这设置了位 0,表示条目已加密。
该位标志中的其他位具有意义,也可以设置。例如,第 6 位表示使用了强加密 - AES 或其他一些更强的加密。第 11 位表示该条目对文件名和注释使用 UTF-8 编码。
所有这些信息都可以在PKWare AppNote.txt 规范中找到。
它是受密码保护的 zip 存档中的基础文件。您可以在存档中包含一系列受密码保护和不受密码保护的文件(例如,自述文件和内容)。
如果您按照您引用的 URL 中描述 ZIP 文件的链接进行操作,您会发现该链接讨论了指示 ZIP 存档中的文件是否已加密的位。似乎存档中的每个文件都可以独立加密或不加密。