APP下载

复合文档结构分析及文件头重建

2017-12-20

山西电子技术 2017年6期
关键词:扇区字节仓库

王 赟

(山西职业技术学院,山西 太原 030006)

复合文档结构分析及文件头重建

王 赟

(山西职业技术学院,山西 太原 030006)

复合文档的数据恢复已成为现在数据恢复领域中一项重要内容,尤其以文件头故障最为普遍。本文通过研究复合文档的二进制结构,解决由于文件头被破坏导致的文档无法正常打开、无法使用等数据丢失问题,该方法在实际解决此类问题中效果良好,具有普遍应用价值。

复合文档;文件头;数据恢复

复合文档是一种多元化的文档,不仅包含传统意义上的文本,还可包括声音、图片、表格、影音资料及其他内容[1]。它的广泛应用极大地满足了人们现代化办公的需求。同时复合文档故障及数据恢复成为普遍现象,也已逐渐成为数据恢复领域的一项重要内容。复合文档故障中多数以文件头故障最为主。解决复合文档此类故障对复合文档的数据恢复有着重要意义。

1 复合文档结构分析

1.1 仓库与流

复合文档的原理其实并不复杂,它与传统的FAT 32文件存储系统相似[2]。首先,它将数据信息划分为许多小子集,即流(Streams)。而系统中的仓库(Storages)就是储存这些数据流的场所。在命名规则上,文件系统的命名规则与上述的流或仓库类似,如果流的名字相同,那么只能存储在不同的仓库下。对于每一个复合文档,都会有一个存储的根仓库(root storage)[1]。

1.2 扇区与扇区链

1.2.1 扇区与扇区标识

如果将所有的数据信息子集(流)进一步划分,可划分为更小的子集,这些小的数据块叫做数据的扇区(sectors)[3]。在这些数据扇区中可能涵盖用户的数据和控制数据信息。

1.2.2 扇区链与扇区标识链

1.3 复合文档头

1.3.1 复合文档头的内容

复合文档头的大小是512字节,一般在文档头的位置。该结构如图1所示。

图1 复合文档头结构

1.3.2 字节顺序(Byte Order)

文件数据的存储方式一般为二进制存储,目前主流方法主要有两种,即Little-Endian和Big-Endian[5]。实际应用过程中一般仅采用前者:即依据地址的高低位分别存放文件的低位8字节和高位8字节。

1.3.3 扇区偏移量

根据复合文档头的信息可计算扇区偏移量(sector offset)[3],计算方法为sec_pos(SID)=512+SID·s_size=512+ SID·2 ssz。

1.4 扇区配置

扇区配置中最主要的内容是主扇区配置表(MSAT:master sector allocation table)[3]。主扇区配置表其实就是记录所有用于存放扇区的信息列表,其本质上是一个SID数组。一般会在复合文档头指明MSAT的大小,又叫SID个数,数值是等于存放扇区配置表的扇区数。扇区配置表(SAT:sector allocation table)主要内容包括内部控制流以及用户流,特别需要注意的是,这个用户流不包括短流,本质上SAT也是一个SID数组。一般SAT的大小与文档中扇区的个数所一致。

1.5 短流

1.5.1 短流存放流

⑮Katharina Boele - Woelki,Bente Braat and Ian Curry - Sumner(ed.),European Family Law in Action:Parental Responsibilities,Intersentia Publishers,2005,p.351.

当一个流的大小小于指定的值,常被叫做短流[1]。其实直接使用扇区存放数据的并不是短流,而是借由一种特殊的形式,即通过短流存放流(short-stream container stream)来存放数据[6]。该形式的存放流象与一般的用户流类似:首先使用第一个扇区,该扇区隶属于目录中的根仓库入口(root storage entry)。接下来该数据流将占用的扇区分成不同的短扇区,进一步存储短流。短流存放流的SID链一般从扇区配置表中获取。计算公式为:short_s_pos(SID) = SID·short_s_size = SID·2 sssz[1]。

1.5.2 短扇区配置表

类似于主扇区配置表,所有短流的SID链构成了一个SID数组,这个数组就是短扇区配置表(SSAT:short-sector allocation table)[5]。一般用于存放短扇区配置表的第一个扇区的SID在复合文件头中指定,剩下的SID链均来源于SAT。

短扇区配置表的用法与扇区配置表是类似的,主要区别在于前者的SID链使用的是短扇区(short-sector)[3]。

1.6 目录结构

目录(directory)的构成部分是所有的目录入口(directory entry),本质上是一种内部控制流。复合文档的数据流和存储的storage关联着这些目录入口。

2 文件头重建

复合文档的文件头就好比文件系统的DBR。DBR损坏分区无法打开,但真实数据还仍然存在,复合文档也是这样。简单的复合文档结构只有少量的SID链,并且连续,修复难度也较低。复杂点的可能会有多个不连续的SID链,或者多个MSAT表,只要我们找到它的规律,顺着它的SID链推断下去就可以重建它的索引。下面我们以案例.doc文档为例来简述复合文档头重建过程。首先我们来解析案例文档的文件头(如图2)。用winhex打开后将页转换成扇区进行分析,发现复合文档的0号扇区就是第一个MSAT表,它除了记录SAT项还记录了SSAT的大小开始、目录区域的开始以及指向下一个MSAT的索引。而之后的MSAT就只负责记录SAT项了。

图2 案例.DOC文件头

其中文件头的前两行半是微软设置的固定值。具体偏移量的含义见表1。

表1 复合文档头偏移位置解析

我们把这个文档的文件头清空,复制一个新文件头过来然后手动填写文件头,主要涉及修改与计算几个关键值的有:

1)SAT配置表的个数;2)目录的开始位置;3)SSAT的开始和大小;4)MSAT的开始和大小;5)依次写SID的占用情况。

首先写目录的开始位置,向下搜索(ROOT)52 00 6F 00,偏移位置512=0。

如图3所示,在47扇区找到了目录的位置。

图3 目录区

接着找短流(SSAT),短流可以从根目录中直接找到,如图3中的31 00 00 00,就是短流的开始了。大小就是后面的80 00 00 00,等于128/64=2,只有两项就是占用一个扇区。大小就是01了。然后我们再找标准流(SAT)搜索01 00 00 00,偏移位置512=0,向下搜索,在46扇区找到了标准扇区配置表。如图4所示。看到这个扇区中有一个FD FF FF FF,可以确定这就是SAT了。在复合文档中,-1,-2,-3,-4都有特定的含义。 如表2。

表2 特定值的含义

图4 SAT配置表

最后一项SAT配置表中会有FD FF FF FF的值,表示这是一个SAT配置表的结束。并且有几个FD FF FF FF就代表有几个SAT配置表。在最后一个FD FF FF FF的后面就是根目录的位置(此处根目录就是2F 00 00 00)。本案例中只有一个FD FF FF FF,那就是只有一项SAT配置表。0号扇区可以存放109个SAT配置表(也就是SID),现在只有一个足够存放,就不需要再分配MSAT了,所以MSAT的开始FE FF FF FF,大小00 00 00 00。

关键值都计算出来后总结一下算好的值,我们就可以手动填写文件头信息。

1)SAT配置表的个数(1);2)目录的开始位置(47-1=46);3)SSAT的开始(49-1=48)和大小(1);4)MSAT的开始(MSAT主扇区配置表只有一个写FEFFFFFF)和大小(0);5)依次写SID的占用情况(SAT配置表只有一个,在46扇区填写46-1=45),修复后文件头如图5所示,保存文件,修复完成。

图5 修复后文件头

3 结论

本文通过分析复合文档的二进制结构,提出了手动计算与修复文件头的方法,此方法对解决由文件头被破坏导致的文档无法正常打开、无法使用等问题有效果良好,具有普遍应用价值。

[1] 沙晶,钱伟.微软复合文档结构分析及文件恢复[J].中国司法鉴定,2011(6):59-61.

[2] 杨德明.FAT32下有效数据快速恢复方法[J].计算机应用,2012,32(9):2500-2503.

[3] RENTZ DANIEL. Microsoft Compound Document File Format[M].2004.

[4] 王维雄.基于介质存储结构的数据恢复技术研究[D].西安:西安电子科技大学,2010.

[5] 刘伟.数据恢复技术深度揭秘[M].北京:电子工业出版社,2010.

[6] 赵振洲,赵永峰.Word文档结构分析及恢复[J].安徽电子信息职业技术学院学报,2013(2):1-3.

CompositeDocumentStructureAnalysisandFileHeadReconstruction

Wang Yun

(ShanxiPolytechnicCollege,TaiyuanShanxi030006,China)

Data recovery of complex documents has become an important content in the field of data recovery, especially the file head fault is the most common. This paper, through the binary structures of composite document, solves the problem of data loss, such as the document cannot be opened normally and the data cannot be used because of the destruction of the file head. The method to solve the problem in the actual effect is good and has the widespread application value.

compound document;file header;data recovery

2017-10-25

王 赟(1982- ),男,山西太原人,讲师,硕士,主要研究方向:计算机应用、数据安全及数据恢复。

1674- 4578(2017)06- 0041- 03

TP309.3

A

猜你喜欢

扇区字节仓库
分阶段调整增加扇区通行能力策略
No.8 字节跳动将推出独立出口电商APP
填满仓库的方法
四行仓库的悲壮往事
No.10 “字节跳动手机”要来了?
U盘故障排除经验谈
简谈MC7字节码
小猫看仓库
基于贝叶斯估计的短时空域扇区交通流量预测
重建分区表与FAT32_DBR研究与实现