从 zip 文件格式深入研究伪加密原理
字数 1896 2025-12-06 12:11:23

ZIP文件伪加密技术研究

1. ZIP文件格式基础结构

ZIP文件由三个主要部分组成:

1.1 本地文件头(Local File Header)

  • 固定头标识:50 4B 03 04
  • 解压所需pkware版本:14 00
  • 全局方式位标记(加密标志):09 00(关键字段)
  • 压缩方式:08 00
  • 最后修改时间:50 A3
  • 最后修改日期:A5 4A
  • CRC-32校验值:21 38 76 65
  • 压缩后大小:19 00 00 00
  • 解压前大小:17 00 00 00
  • 文件名长度:08 00
  • 扩展字段长度:00 00
  • 文件名:66 6C 61 67 2E 74 78 74(flag.txt)
  • 文件数据:4B CB 49 4C AF 76...

1.2 中央目录文件头(Central Directory Header)

  • 中央目录标识:50 4B 01 02
  • ZIP程序版本字段:1F 00
  • 解压所需pkware版本:14 00
  • 全局方式位标记(加密标志):09 00(关键字段)
  • 压缩方式:08 00
  • 最后修改时间:50 A3
  • 最后修改日期:A5 4A
  • CRC-32校验值:21 38 76 65
  • 压缩后大小:19 00 00 00
  • 解压前大小:17 00 00 00
  • 文件名长度:08 00
  • 扩展字段长度:24 00
  • 文件注释长度:00 00
  • 单卷ZIP文件标识:00 00
  • 内部文件属性:20 00
  • 文件权限字段:00 00 00 00
  • 文件名:66 6C 61 67 2E 74 78 74
  • 额外字段:0A 00...

1.3 目录结束标识(End of Central Directory Record)

  • EOCD标识:50 4B 05 06
  • 当前磁盘编号:00 00
  • 中央目录所在磁盘:00 00
  • 此磁盘中央目录中的条目总数:01 00
  • 中央目录中的条目总数:01 00

2. 伪加密原理详解

2.1 加密标志位含义

ZIP文件在两个位置设置加密标志:

  1. 本地文件头中的全局方式位标记
  2. 中央目录文件头中的全局方式位标记

正常未加密文件:全局方式位标记 = 00 00
伪加密文件:全局方式位标记 = 01 00 或 09 00

2.2 伪加密的本质

  • 将全局方式位标记手动修改为01或09
  • 使解压软件误以为文件已加密,要求输入密码
  • 实际文件数据并未真正加密,压缩数据仍然是正常的deflate流
  • 真正的加密ZIP中,压缩数据段应该被加密成随机字节流

3. 伪加密破解方法

3.1 完全破解(推荐)

两个位置的加密标志都修改为00 00:

  1. 修改本地文件头中的全局方式位标记(偏移位置)
  2. 修改中央目录文件头中的全局方式位标记

3.2 部分破解

只修改其中一个位置的加密标志:

3.2.1 仅修改文件头加密标志

  • 7-Zip:可以解压出文件(虽然报头部错误)
  • WinRAR:无法解压
  • Windows自带解压:无法解压
  • Bandizip:无法解压

3.2.2 仅修改中央目录加密标志

  • 所有解压软件都能正常打开文件

4. 不同解压软件的行为差异

4.1 7-Zip

  • 主要检查文件头的全局方式位标记
  • 如果文件头标志为00,即使中央目录标志为加密,也能正常解压
  • 对部分破解的文件会报"头部错误",但能成功解压出内容

4.2 WinRAR/Windows自带/Bandizip

  • 检查更为严格,需要两个位置的加密标志都正确
  • 任何一个位置显示加密,都会要求输入密码
  • 无法通过部分破解来解压

5. 实战操作步骤

5.1 识别伪加密文件

  1. 使用十六进制编辑器打开ZIP文件
  2. 查找50 4B 03 04(本地文件头标识)
  3. 检查其后第6-7字节(全局方式位标记)
  4. 查找50 4B 01 02(中央目录标识)
  5. 检查其后第8-9字节(全局方式位标记)

5.2 修复伪加密

  1. 使用十六进制编辑器修改相应字节
  2. 将01 00或09 00改为00 00
  3. 建议同时修改两个位置确保兼容性
  4. 保存文件后测试解压

6. 技术要点总结

  1. 双重加密标志:ZIP文件在文件头和中央目录都有加密标志
  2. 软件差异:不同解压软件对加密标志的检查策略不同
  3. 数据真实性:伪加密文件的压缩数据实际上未加密
  4. 完全修复:修改两个位置的加密标志确保最大兼容性
  5. CTF应用:此技术常见于CTF比赛的Misc类题目中

通过深入理解ZIP文件格式和伪加密原理,可以有效识别和修复这类特殊的"加密"文件,在数字取证和CTF竞赛中具有重要应用价值。

ZIP文件伪加密技术研究 1. ZIP文件格式基础结构 ZIP文件由三个主要部分组成: 1.1 本地文件头(Local File Header) 固定头标识 :50 4B 03 04 解压所需pkware版本 :14 00 全局方式位标记(加密标志) :09 00(关键字段) 压缩方式 :08 00 最后修改时间 :50 A3 最后修改日期 :A5 4A CRC-32校验值 :21 38 76 65 压缩后大小 :19 00 00 00 解压前大小 :17 00 00 00 文件名长度 :08 00 扩展字段长度 :00 00 文件名 :66 6C 61 67 2E 74 78 74(flag.txt) 文件数据 :4B CB 49 4C AF 76... 1.2 中央目录文件头(Central Directory Header) 中央目录标识 :50 4B 01 02 ZIP程序版本字段 :1F 00 解压所需pkware版本 :14 00 全局方式位标记(加密标志) :09 00(关键字段) 压缩方式 :08 00 最后修改时间 :50 A3 最后修改日期 :A5 4A CRC-32校验值 :21 38 76 65 压缩后大小 :19 00 00 00 解压前大小 :17 00 00 00 文件名长度 :08 00 扩展字段长度 :24 00 文件注释长度 :00 00 单卷ZIP文件标识 :00 00 内部文件属性 :20 00 文件权限字段 :00 00 00 00 文件名 :66 6C 61 67 2E 74 78 74 额外字段 :0A 00... 1.3 目录结束标识(End of Central Directory Record) EOCD标识 :50 4B 05 06 当前磁盘编号 :00 00 中央目录所在磁盘 :00 00 此磁盘中央目录中的条目总数 :01 00 中央目录中的条目总数 :01 00 2. 伪加密原理详解 2.1 加密标志位含义 ZIP文件在 两个位置 设置加密标志: 本地文件头 中的全局方式位标记 中央目录文件头 中的全局方式位标记 正常未加密文件 :全局方式位标记 = 00 00 伪加密文件 :全局方式位标记 = 01 00 或 09 00 2.2 伪加密的本质 将全局方式位标记手动修改为01或09 使解压软件误以为文件已加密,要求输入密码 实际文件数据并未真正加密 ,压缩数据仍然是正常的deflate流 真正的加密ZIP中,压缩数据段应该被加密成随机字节流 3. 伪加密破解方法 3.1 完全破解(推荐) 将 两个位置 的加密标志都修改为00 00: 修改 本地文件头 中的全局方式位标记(偏移位置) 修改 中央目录文件头 中的全局方式位标记 3.2 部分破解 只修改 其中一个位置 的加密标志: 3.2.1 仅修改文件头加密标志 7-Zip :可以解压出文件(虽然报头部错误) WinRAR :无法解压 Windows自带解压 :无法解压 Bandizip :无法解压 3.2.2 仅修改中央目录加密标志 所有解压软件都能正常打开文件 4. 不同解压软件的行为差异 4.1 7-Zip 主要检查 文件头 的全局方式位标记 如果文件头标志为00,即使中央目录标志为加密,也能正常解压 对部分破解的文件会报"头部错误",但能成功解压出内容 4.2 WinRAR/Windows自带/Bandizip 检查 更为严格 ,需要两个位置的加密标志都正确 任何一个位置显示加密,都会要求输入密码 无法通过部分破解来解压 5. 实战操作步骤 5.1 识别伪加密文件 使用十六进制编辑器打开ZIP文件 查找50 4B 03 04(本地文件头标识) 检查其后第6-7字节(全局方式位标记) 查找50 4B 01 02(中央目录标识) 检查其后第8-9字节(全局方式位标记) 5.2 修复伪加密 使用十六进制编辑器修改相应字节 将01 00或09 00改为00 00 建议同时修改两个位置 确保兼容性 保存文件后测试解压 6. 技术要点总结 双重加密标志 :ZIP文件在文件头和中央目录都有加密标志 软件差异 :不同解压软件对加密标志的检查策略不同 数据真实性 :伪加密文件的压缩数据实际上未加密 完全修复 :修改两个位置的加密标志确保最大兼容性 CTF应用 :此技术常见于CTF比赛的Misc类题目中 通过深入理解ZIP文件格式和伪加密原理,可以有效识别和修复这类特殊的"加密"文件,在数字取证和CTF竞赛中具有重要应用价值。