DOC复合文档的储存结构
DOC复合文档的头部结构

引用自中国硬盘基地
DOC复合文档的储存结构
复合文档和FAT文件系统有许多相似的地方,学习过程中可以对比FAT文件系统进行学习
-
FAT文件系统的DBR类似于复合文档的文件头
-
FAT文件系统中,文件以扇区为单位储存数据,多个扇区形成簇,文件占用多少个簇,占用了哪些簇,簇链是怎么样的就是由这个FAT表记录的。 复合文档也和FAT文件系统相似,复合文档的数据也采用扇区来储存,不同的是复合文档中的扇区有基本扇区,和短扇区之分。文件系统中一个扇区占用512个字节,在复合文档中,扇区大小在文件头中有规定,不过基本都是512个字节。短扇区大小也在文件头中作出规定,一般是64个字节
-
复合文档中,数据信息被叫做流,按照流的大小有基本流和短流之分,按照功能来分,有控制流和数据流之分;流相当于文件系统中的文件,文件系统中的文件夹相当于复合文档中的仓库。在复合文档里,基本流储存于扇区中,短流由短扇区来储存,多个短流组成断流存放流,短流存放流是由扇区来储存的
-
文件系统中文件以簇来管理,多少扇区组成一个簇,在DBR中有记录,相应的在复合文档中,基本流的大小也是在文件流中记录的,一般是8个扇区,基本流大小相当于文件系统的簇大小
复合文档中的配置表
- 主扇区配置表(MAST)记录的是SAT占用扇区情况,扇区的编号多少(即扇区SID)
- 扇区配置表(SAT)记录的是一个流占用扇区的情况,一个流占用哪些扇区,哪些扇区的SID是多少
- 短扇区配置表(SSAT)记录的是断流占用扇区情况
这些配置表的大小,在文件头中都有记录,就像文件系统中DBR记录FAT表大小一样
复合文档中的目录(Root)
目录,目录的起始扇区,在文件头中有记录,每一个目录入口就指向一个流或者仓库。
复合文档分析

上图为一个DOC复合文档头部起始扇区
-
D0CF11E0A1B11AE1 为文件标准头部标识(固定值) 占用8字节
-
接下来十六个字节文件唯一标识,不重要可为0
-
3E 00 为文件修订号(固定值) 占用2字节
-
03 00 文件格式修订号(固定值)占用2字节
-
接下来两个字节为字节顺序规则标识 FE FF 表示字节按小头排序,FF FE表示按大头排序
-
09 00 (大多数为09,相当于固定值)每扇区的字节数 以2的幂形式表示 ,即2^9=512 占用2字节
-
06 00 (大多数为06,相当于固定值)每短扇区字节数 以2的幂形式标识,即2^6=64 占用2字节
-
接下来十个字节留空没用的
-
接下来四个字节为 SAT配置表占用的扇区数这里为1F转为10进制即31,这里有31个SAT配置表
-
接下来四个字节为Root目录流起始扇区SID
-
接下来四个字节留空没用的
-
接下来四个字节标准流最小大小(相当于固定值)小于这个值就是断流
-
接下来四个字节为短扇区表(SSAT)的起始扇区号(SID) 如果不存在短扇区配置表则此处值为 FE FF FF FF
-
01 00 00 00 短扇区配置表数量 (大多数都是1个,只有极大的文档才有可能有两个,相当于固定值)
-
接下来的四个字节为存放主扇区配置表(MSAT)的起始扇区号,如果没有则为FE FF FF FF
注意:这里说的存放主扇区配置表的扇区
因为主扇区配置表的前109个SID
是存储在文件头中的
如果主扇区配置表内容太多
文件头中存放不下
那么系统会为主扇区配置表分配其他扇区来存放它
这里的4个字节所指的扇区就是额外扇区。 -
接下来四个字节为主扇区配置表大小如果不存在额外的主扇区配置表则全为0
17.在往下就是主扇区配置表存储在文件头中SAT的SID了。一个SID占用4个字节
SID的定位具体扇区方法
因为复合文档的文件头占用了一个扇区,所以在通过SID定位实际扇区时要考虑到文件头的一个扇区,将SID+1即为实际扇区位置
比如SID为 00 00 00 00 转为十进制即第0个扇区
0(SID转十进制数)+ 1(头部占用了一个扇区) = 1
得出 SID0扇区位于 第一位扇区

浙公网安备 33010602011771号