You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取不带0x08074b50签名的12字节数据描述符真实ZIP文件

无0x08074b50签名的12字节数据描述符ZIP文件获取方法

工具生成方案

  • Java内置java.util.zip包生成:Java内置的ZIP输出流在未预设置文件大小、CRC值的场景下,触发写入的数据描述符默认不带0x08074b50签名,仅输出12字节的标准字段。可通过以下极简代码生成测试样本:
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class NoSigZipGen {
    public static void main(String[] args) throws Exception {
        ZipOutputStream zos = new ZipOutputStream(new FileOutputStream("no_sig_test.zip"));
        ZipEntry entry = new ZipEntry("demo.txt");
        // 不提前设置大小、CRC,自动触发数据描述符写入
        zos.putNextEntry(entry);
        zos.write("sample content for test".getBytes());
        zos.closeEntry();
        zos.close();
    }
}
  • 旧版Info-ZIP命令行工具生成:3.0版本之前的Info-ZIP zip命令,添加-fd参数强制启用数据描述符时,默认不会写入0x08074b50签名,直接输出12字节数据描述符,执行命令zip -fd test.zip test.txt即可生成样本。
  • Python zipfile库自定义生成:可手动修改zipfile库的写入逻辑,在写完文件压缩数据后,直接按顺序写入4字节CRC、4字节压缩后大小、4字节未压缩大小,跳过签名写入步骤即可得到符合要求的文件。

真实场景样本获取方案

  • 收集旧版系统生成的ZIP文件:Windows XP自带的压缩文件夹功能、旧版本安卓系统内置压缩工具输出的流式ZIP,大多遵循原始ZIP规范,不带数据描述符签名。
  • 筛选嵌入式/IoT设备生成的压缩包:很多低算力的IoT设备、嵌入式设备输出的日志压缩包、固件升级包,为了简化实现会直接使用无签名的12字节数据描述符结构。
  • 开源软件旧版本发布包:部分早年的开源软件发布包使用旧压缩工具生成,也会出现无签名数据描述符的结构,你可以通过十六进制校验筛选:确认文件数据段结束后,后续12字节后紧跟下一个文件头50 4B 03 04或中央目录头50 4B 01 02,且中间无50 4B 07 08序列即可。

校验提示:生成或找到样本后,建议用十六进制编辑器打开确认结构:数据描述符区域仅12字节,字段顺序符合CRC32(4字节) → 压缩后大小(4字节) → 未压缩大小(4字节)的规范要求,无前置签名。

内容的提问来源于stack exchange,提问作者Michal Charemza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 12:36:04