首页 > 关于效率源 > 行业洞察 > 热点技术
【技术实战】复合文档损坏,如何快速手动修复?
2019年04月29日

关于复合文档

复合文档是一种多元化文档,不仅包含传统意义上的文本,还包括图形、电子表格数据、声音、视频图像以及其他信息,它的广泛应用极大的满足了现代化办公需求,同时复合文档的数据恢复已经成为现在数据恢复领域中一项重要内容,尤其是以文件头故障最为普遍。

当然,不同版本文件结构不同,本期#技术实战#源妹从具体实际案例出发,给大家分享有关手动修复损坏复合文档的其中一种方法,希望对你有一定参考价值!

一.案件详情

在一次案件侦破中,办案人员需要恢复嫌疑人计算机中的文档文件,通过数据恢复工具恢复了所需文档文件,但是部分office文件无法打开或者打开乱码,如下图1、图2所示:

1.jpg

图1 文件无法打开

1556504897957076627.jpg

图2 文件打开乱码

二.恢复思路

我们首先来对比分析损坏文档的文件头,如图3所示,用winhex打开后将其转换成扇区进行分析,通过对比初步判断是复合文件头结构损坏导致文档无法打开。

1556504951019008511.jpg

图3 复合文件头结构对比

三.恢复方法

确认是由于文件头结构损坏导致文件无法打开,我们接下来就可以分析复合文档结构,通过手动重建复合文件头达到修复损坏复合文件的目的。

修复文件头的数据只需计算填写以下几项:
☑扇区分配表(SAT)所占的扇区数;
☑目录流的起始扇区数;
☑短流扇区分配表(SSAT)的起始扇区号及占用扇区数;
☑主扇区分配表(MSAT)的起始扇区号及占用扇区数;
☑扇区分配表的扇区号。

其他内容所有的复合文档都是一样,从正常文件拷贝过来即可。

四.具体恢复步骤

1、打开复合文档
使用winhex工具打开损坏复合文档以及正常复合文档;

1556504999988066559.jpg

图4 打开复合文档

2、将页转换成扇区
winhex打开之后将页转换成扇区进行分析;

1556505038426059179.jpg

图5 将页转换成扇区

3、复制文件头
复制正常复合文档的文件头覆盖掉损坏的文件头,然后逐一修改相应参数;

1556505074363028823.jpg

图6 复制文件头

4、定位目录流扇区起始扇区
目录流标志是“root entry”,十六进制搜索“52006F00”,偏移位置512=0,如图5所示,在41扇区找到目录流起始扇区,确定了目录流的起始扇区的参数为41-1=40,用十六进制表示就是28;

1556505118019081910.jpg

图7 定位目录流起始扇区

5、短流开始位置及大小
接着我们找短流(SSAT)。根据复合文档定义,目录流的第一表项0x74处的4个字节表示的是短流的起始扇区,如图6中十六进制2B000000值为43,就是短流的开始。

开始扇区为43-1=42,十六进制值为2A,0x78处的4个字节表示的是短流的大小,大小就是十六进制800000,等于128/64=2,只有两项就是占用一个扇区,大小就是1;

1556505155988023788.jpg

图8 短流开始位置及大小

6、确定扇区分配表(SAT)
通过十六进制搜索“01000000”,偏移位置为512=0,如图9所示,在40扇区找到标准扇区配置表,看到扇区中有一个“FDFFFFFF”,就可以确定就是SAT了。

最后一项SAT配置表中会有FDFFFFFF的值,表示这是一个SAT配置表的结束,并且有几个FDFFFFFF就代表有几个SAT配置表。本案例中只有一个FDFFFFFF那就只有一项SAT配置表;

1556505193504044389.jpg

图9 确定扇区分配表

7、确定主扇区分配表(MSAT)的起始扇区号
主扇区分配表(MSAT)中存放的是扇区分配表(SAT)所在的扇区号。

本例中,扇区分配表(SAT)只有一个,根据复合文档的格式定义,文件头中可以存放109项SAT值,也就是说,只要文件的扇区分配表不大于109个,就不需要主扇区分配表。(严格的说是不需要额外的主扇区分配表,因为文件头就可以容纳下了,主扇区分配表(MSAT)是在SAT多于109项时,剩下的值用指定的扇区来记录!)

根据定义,无额外主扇区分配表(MSAT)时,主扇区分配表的起始扇区号为-2,十六进制表示为FEFFFFFF,它占用的扇区数为0;

8、修复文件头
关键值都计算出来后总结一下算好的值,然后手动填写文件头信息,修复后文件头如图10所示,保存文件,此时文档仍然无法打开;

1556505246191032952.jpg

图10 修复文件头

9、修复文件内容
以上参数确定后,最后一步就是修复MSAT的内容了。

在0扇区定位到0X4C处,此处后的每个字节填写一项SAT扇区编号。本实验只有一个SAT,位置为39,转换成十六进制为27000000,剩下的填写成FFFFFFFF。保存文件,本次复合文档手动修复工作圆满完成。

1556505276723010527.jpg

图11 修复后的文件头

源妹小贴士

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

12.jpg

图12 复合文档头结构

本文主要介绍了有关手动修复损坏文档的操作方法,希望对您有一定的参考价值。欢迎点击【阅读原文】开始你的实操练习~

如对文中的操作、描述有任何疑问,或者有相关案件需要协助,欢迎拨打热线电话028-85211099或直接在微信公众号后台给我们留言。

 

【扩展阅读】

【技术实战】短信嗅探盗刷犯罪,如何进行数据提取与固定?

【技术实战】如何快速迁移PostgreSQL数据文件?

【技术实战】如何通过日志备份恢复SQL Server数据库删除数据?

【技术视界】数据库易胜博手机版中,如何快速进行数据固定?

【技术视界】AI换脸“细思极恐”,教你鉴别视频真伪

【技术视界】Android微信撤回消息如何恢复?