文件格式

一、图片 #

1. gif #

  • gif一般开头以GIF89aGIF87a开头
1=> hexdump -C 篮球.gif | head -n 5
200000000  47 49 46 38 39 61 b4 00  40 01 f6 31 00 1c 18 25  |GIF89a..@..1...%|
300000010  1d 1a 2b 1e 1f 36 21 1c  2c 24 1e 34 28 23 39 36  |..+..6!.,$.4(#96|
400000020  28 39 27 26 43 3c 2d 43  45 37 4d 51 43 56 56 4f  |(9'&C<-CE7MQCVVO|
500000030  67 6a 58 6d 78 64 78 77  6d 89 8a 74 89 88 7a 97  |gjXmxdxwm..t..z.|
600000040  8e 77 8b 96 84 9b 8d 83  a4 96 8a a8 9c 95 b4 9c  |.w..............|

二、压缩文件 #

1. zip #

 1=> hexdump -C test.zip
 200000000  50 4b 03 04 0a 00 00 00  00 00 2e 7e 5c 57 c6 35  |PK.........~\W.5|
 300000010  b9 3b 05 00 00 00 05 00  00 00 08 00 1c 00 74 65  |.;............te|
 400000020  73 74 2e 74 78 74 55 54  09 00 03 08 bd 3c 65 08  |st.txtUT.....<e.|
 500000030  bd 3c 65 75 78 0b 00 01  04 e8 03 00 00 04 e8 03  |.<eux...........|
 600000040  00 00 74 65 73 74 0a 50  4b 01 02 1e 03 0a 00 00  |..test.PK.......|
 700000050  00 00 00 2e 7e 5c 57 c6  35 b9 3b 05 00 00 00 05  |....~\W.5.;.....|
 800000060  00 00 00 08 00 18 00 00  00 00 00 01 00 00 00 a4  |................|
 900000070  81 00 00 00 00 74 65 73  74 2e 74 78 74 55 54 05  |.....test.txtUT.|
1000000080  00 03 08 bd 3c 65 75 78  0b 00 01 04 e8 03 00 00  |....<eux........|
1100000090  04 e8 03 00 00 50 4b 05  06 00 00 00 00 01 00 01  |.....PK.........|
12000000a0  00 4e 00 00 00 47 00 00  00 00 00                 |.N...G.....|
13000000ab
  • zip文件格式由三部分组成:压缩源文件数据区、压缩源文件目录区、压缩源文件目录结束

1.1. 压缩源文件数据区 #

  • 50 4B 03 04:头文件标记
  • 0a 00:解压文件所需 pkware 版本
  • 00 00:全局方式位标记(有无加密)
  • 00 00:压缩方式
  • 2e 7e:最后修改文件时间
  • 5c 57:最后修改文件日期
  • c6 35 b9 3b:CRC-32校验
  • 05 00 00 00:压缩后尺寸
  • 05 00 00 00:未压缩尺寸
  • 08 00:文件名长度
  • 1c 00:扩展记录长度
  • 数据

1.2. 压缩源文件目录区 #

  • 50 4B 01 02:头文件标记
  • 1e 03:压缩使用的 pkware 版本
  • 0a 00:解压文件所需 pkware 版本
  • 00 00:全局方式位标记(有无加密)
  • 00 00:压缩方式
  • 2e 7e:最后修改文件时间
  • 5c 57:最后修改文件日期
  • c6 35 b9 3b:CRC-32校验
  • 05 00 00 00:压缩后尺寸
  • 05 00 00 00:未压缩尺寸
  • 08 00:文件名长度
  • 18 00:扩展记录长度
  • 00 00:文件注释长度
  • 00 00:磁盘开始号
  • 01 00:内部文件属性
  • 00 00 00 00:外部文件属性
  • 00 00 00 00:局部头部偏移量
  • 数据

1.3. 压缩源文件目录结束标志 #

  • 50 4B 05 06:头文件标记
  • 00 00:当前磁盘编号
  • 00 00:目录区开始磁盘编号
  • 01 00:本磁盘纪录总数
  • 01 00:目录区中纪录总数
  • 4e 00 00 00:目录区尺寸大小
  • 47 00 00 00:目录区对第一张磁盘的偏移量
  • 00 00:文件注释长度