一种基于WinHex恢复复合文档案例分析
摘要:office是专用于办公文档编辑的应用程序。目前常见文件格式主要有两类:一类是二进制格式的复合文档,如doc/xls/ppt,另一类是基于office open xml标准的压缩文件格式,如docx/xlsx/pptx。office文档在我们日常工作中广泛被应用,其本身也是属于电子数据,具备电子数据易复制性、易丢失性、易破坏性等特性。本文主要结合复合文档的结构进行恢复案例分析。
关键词:二进制、复合文档、电子数据、易破坏性、数据恢复
1.复合文档概述
二进制格式的复合文档主要是包括了文本信息、电子表格信息、图像视频信息、声音信息等数据。目前所创建的复合文档主要是采用面向对象技术,即是除了文本信息以外的其他信息如声音、图像视频等都可以作为单独对象包含在文档中。我们常见的doc/xls/ppt等文档都是用这种格式存储的。
1.1仓库与流关系
复合文档本身是属于多元化文档合集,其文档结构和FAT文件系统结构基本类似,故在分析复合文档结构是可以参考FAT文件系统进行对比分析,
复合文档是将数据信息(文本信息、电子表格信息、图像信息、声音信息等)分成许多小子集,把这种小子集称为“流”(steams),在文件系统中的创建的数据仓库(storages)就是用来储存这些数据流的场所。如图1所示:
root storage
storage1stream1stream2storage2stream3stream4
stream21
stream1stream22stream23
图1 仓库和结构流的关系
1.2扇区和扇区标识
结合仓库与流的关系,进而把数据流又细分成更小的数据块(数据扇区(sectors)),。数据扇区主要包含用户数据或者控制数据。整个文件也主要包含一个头文件(header)和数据扇区,数据扇区的大小在头文件中确定,且每个数据扇区大小一致。具体如下图所示:
无法打开文件header
sector0
sector1
sector2
sector3
sector4
sector5
图2 扇区和扇区标识
数据扇区主要在存储文件中的顺序列举,一个扇区的索引(从0开始)称作为“扇区标识”(SID)。
1.3扇区链与扇区标识链
扇区链是用来存储流数据的所有数据扇区的列表合集;这些数据扇区存储分为两种情况,包含有序存储和无序存储。其中有序的存储数据扇区需要通过到扇区标识数组来指定顺序,这个扇区标识数组就是扇区标识链(SID chain)。一个扇区标识链总是以[-2]作为结束标记[3]。例如:一个流由5个数据扇区组成,其扇区标识链[1,3,5,2,4,-2]流的扇区链是通过扇区配置表构建。具体如下图所示:
header
sector0
sector1
sector2
sector3
sector4
sector5
图3 扇区链与扇区标识链
1.4扇区配置表
FAT文件系统有DBR以及FAT表,对应的复合文档就是文件头,主扇区配置表(MSAT)、扇区配置表(SAT)、短扇区配置表(SSAT)以及目录;
SAT扇区配置表是一个扇区标识数组,包含用户流和内部控制流,数组的每一个成员的值表示流中紧接相对应的扇区的一下扇区的编号有几个特殊值,如下表所示:
表1 特定值的含义
哪些扇区的SID是多少。
每一项都是SID
SAT表扇区数
图4 扇区配置表
MSAT主扇区配置表用于记录存放扇区的信息列表,也是属于扇区标识数组。主扇区配置表的值会在复合文件头部分查看,也是表示是SID个数,其数值是等于存放SAT的扇区数。表示SAT的使用情况,复合文件头部分最多存放109个SID记录。
SSAT短扇区配置表作用于一个流的大小小于指定的值时,被称作为短流,SSAT其本质也是SID数组,包含所有短流的SID链。
复合文档目录本质是属于控制流,主要由目录入口(directory entry)组成,在这其中一个目录入口就对应指向一个数据仓库或者数据。
header
(文件头占0x0200字节)
Word Document
Data
01 Table
05 Summary Information
05 Document Summary
Information
SAT+Directory Entry+SSAT
Root entry
图5 Word复合文档结构
图5所示为Word复合文档结构,其文件结构存储不一定会按照顺序存储的,我们以目录流为入口,其包含了文档各部分的sectors 和存储顺序的排列方式,主要是采用独立的红黑树(red-black tree),以红黑树中各部分的节点描述信息进行排列存储的,以下是存储内容解释:
表2 复合文档结构描述
发布评论