切换到宽版
  • 4430阅读
  • 1回复

复合文档文件格式研究(三) [复制链接]

上一主题 下一主题
离线hddl
 
只看楼主 倒序阅读 0 发表于: 2009-12-19
关键词: 数据
第三章    复合文档头

3.1 复合文档头的内容



复合文档头在文件的开始,且其大小必定为512字节。这意味着第一个Sector的开始相对文件的偏移量为512字节。

复合文档头的结构如下:

Offset    Size        Contents                                         

0            8            复合文档文件标识:D0H CFH 11H E0H A1H B1H 1AH E1H

8            16          此文件的唯一标识(不重要, 可全部为0)

24          2            文件格式修订号 (一般为003EH)

26          2            文件格式版本号(一般为0003H)

28          2            字节顺序规则标识(见3.2)::FEH FFH = Little-Endian

FFH FEH = Big-Endian

30          2            复合文档中sector的大小(ssz),以2的幂形式存储, sector实际大小为s_size

= 2ssz 字节(一般为9即512字节, 最小值为7即128字节)

32          2            short-sector的大小(见5.1),以2的幂形式存储, short-sector实际大

                            小为s_s_size = 2sssz 字节(一般为6即64字节,最大为sector的大小)

34          10          Not used

44          4            用于存放扇区配置表(SAT)的sector总数

48          4            用于存放目录流的第一个sector的SID (见6)

52          4            Not used

56          4            标准流的最小大小(一般为4096 bytes), 小于此值的流即为短流。

60          4            用于存放短扇区配置表(SSAT)的第一个sector的SID (见5.2),

或为–2 (End Of Chain SID)如不存在。

64          4            用于存放短扇区配置表(SSAT)的sector总数

68          4            用于存放主扇区配置表(MSAT)的第一个sector的SID (见4.1),

或为–2 (End Of Chain SID) 若无附加的sectors。

72          4            用于存放主扇区配置表(MSAT)的sector总数

76          436        存放主扇区配置表(MSAT)的第一部分,包含109个SID。

3.2 字节顺序(Byte Order)



文件数据的二进制存储有两种方法Little-Endian 和 Big-Endian,但实际应用中只使用Little-Endian方法即:低位8字节存放在地址的低位,高位8字节存放在地址的高位。

例:一个32位的整数13579BDFH(转为十进制即324508639),以Little-Endian存放为DFH 9BH 57H13H,以Big-Endian 存放为 13H 57H 9BH DFH。(H下标表示十六进制)



3.3 扇区偏移量

      从头中的信息可以计算出一个sector的偏移量(offset),公式为:

sec_pos(SID) = 512 + SID ∙ s_size = 512 + SID ∙ 2 ssz

例:ssz = 10 and SID = 5:

sec_pos(SID) = 512 + SID ∙ 2 ssz = 512 + 5 ∙ 210 = 512 + 5 ∙ 1024 = 5632.
离线Manboo

只看该作者 1 发表于: 2010-05-19
继续支持 真的不错
有压力,更努力!
快速回复
限100 字节
欢迎来到中国数据恢复技术联盟,请勿发表暴力、色情、广
 
上一个 下一个