关闭

关闭

关闭

封号提示

内容

首页 手工重建复合文档(.doc;xls,ppt)文件头,修复文件全过程

手工重建复合文档(.doc;xls,ppt)文件头,修复文件全过程.doc

手工重建复合文档(.doc;xls,ppt)文件头,修复文件全过…

zhy123 2010-12-18 评分 0 浏览量 0 0 0 0 暂无简介 简介 举报

简介:本文档为《手工重建复合文档(.doc;xls,ppt)文件头,修复文件全过程doc》,可适用于IT/计算机领域,主题内容包含最近学习了复合文档的格式,在修复复合文档头方面做了不少实践,有了一些心得,经过梳理,做了个例子,把思路和过程介绍给大家,希望能解决你的不时之需!  符等。

最近学习了复合文档的格式,在修复复合文档头方面做了不少实践,有了一些心得,经过梳理,做了个例子,把思路和过程介绍给大家,希望能解决你的不时之需!  例子中用的文件如下图:名为“实验文档”是个空文档里面没有内容看属性字节刚好扇区复合文档的文件大小一定是字节的整数倍这跟复合文档的设计有关系。EXCELPPT等文件也属于复合文档也符合这样的特点。   后来我又想可能有网友会对修复后的文件产生怀疑没有内容的文件可能说明不了问题所以我在文件中输入了很短的文本内容!如下图:       实验文档是一个正常的文件另外我用Winhex把该文件的文件头(前面字节)全部写成了最彻底的破坏保存为“损坏的实验文档”大家可以用现有的修复软件试一下能不能修复我用EasyRecoveryProfessional没有修复成功!其它的软件没有试过!   下面就请大家跟我一起看如何把“损坏的实验文档”修复成功!  先介绍用到的工具软件Winhex,功能很强大可以用二进制的方式打开文件并进行编辑保存!该软件不仅可以打开文件还可以打开硬盘对硬盘数据进行编辑搜索功能什分强大用起来非常方便同时支持脚本提供API函数。软件界面如下图:     用该软件打开“实验文档”和“损坏的实验文档”可以对比一下前字节为了便于操作我们需要将文件解释为硬盘让软件以扇区的方式显示文件内容看起来直观些!两个文件的在软件里显示如下图:       可见“损坏的实验文档”前面的字节全是文件头被全部破坏文件无法用office打开! 复合文档文件头的定义:Offset Size    Contents                                                                   复合文档文件标识:DHCFHHEHAHBHAHEH                此文件的唯一标识(不重要,可全部为)                文件格式修订号(一般为EH)                文件格式版本号(一般为H)                字节顺序规则标识(见)::FEHFFH=LittleEndianFFHFEH=BigEndian                复合文档中sector的大小(ssz)以的幂形式存储,sector实际大小为ssize=ssz字节(一般为即字节,最小值为即字节)                shortsector的大小(见)以的幂形式存储,shortsector实际大             小为sssize=sssz字节(一般为即字节最大为sector的大小)              Notused                用于存放扇区配置表(SAT)的sector总数                用于存放目录流的第一个sector的SID(见)                Notused                标准流的最小大小(一般为bytes),小于此值的流即为短流。                用于存放短扇区配置表(SSAT)的第一个sector的SID(见),或为–(EndOfChainSID)如不存在。                用于存放短扇区配置表(SSAT)的sector总数                用于存放主扇区配置表(MSAT)的第一个sector的SID(见),或为–(EndOfChainSID)若无附加的sectors。                用于存放主扇区配置表(MSAT)的sector总数            存放主扇区配置表(MSAT)的第一部分包含个SID。                                                                                 看起来有些复杂!修复文件头的数据只需要计算并填写几项一是扇区分配表(SAT)所占的扇区数二是目录起始扇区号三是短流扇区分配表的起始扇区号及占用扇区数四是主扇区分配表的起始扇区号及中用扇区数五是扇区分配表的扇区号其它内容所有的复合文档都是一样的从正常文件中拷过来就行。  以上所说五项内容需要计算现在介绍方法一:确定目录起始扇区号打开“损坏的实验文档”将文件解释为硬盘搜索字符串“ROOT”(unicode)如图: 搜索到结果软件自动定位到字符串的位置如图:  看状态栏: 该字符串位置是扇区第一个值确定了目录起始扇区是第一项完成。由于复合文档在扇区编号时不包括文件头扇区从字节处开始所以目录起始扇区应该是下面就不再进行说明。二:确定扇区分配表(SAT)我们需要通过扇区的内容来确定某个扇区是不是扇区分配表(SAT)该文件总共有个扇区文件头占一个扇区剩下扇区所以扇区分配表中的值应该大于小于等于另外还有一些特殊的值值FEFFFFFF表示扇区链结束值FDFFFFFF表示该扇区被SAT占用值FFFFFFFF表示该扇区为空闲。看文件的扇区: 数据如下: 该扇区是不是扇区分配表(SAT)呢?分析里面的数据(个字节一个项因为扇区编号是用个字节来存放的)第一项是ECAC低位在前高位在后换过来就是CAEC换成十进制为文件最大为扇区因此该扇区不可能是扇区分配表(SAT)。看第扇区  第三项A不满足条件因此不是扇区分配表。重复该过程扇区均不符合条件分析到扇区看该扇区数据:  第一项第二项第三项等等该扇区内的所有项的值要么小于要么是FEFFFFFF要么是FDFFFFFF要么是FFFFFFFF符合扇区分配表的特点!记下该扇区号。继续分析剩下的扇区直到结束!在本例中文件总共扇区大小而每个扇区字节个字节放一个扇区编号因此一个扇区分配表可以存放个扇区编号所以说该文件只有一个扇区用来存放扇区分配表(SAT)。第二项完成。第三:确定主扇区分配表(MSAT)的起始扇区号主扇区分配表(MSAT)中存放的是扇区分配表(SAT)所在的扇区号本例中扇区分配表(SAT)只有一个根据复合文档的格式定义文件头中可以存放项SAT值也就是说只要文件的扇区分配表不大于个就不需要主扇区分配表严格的说是不需要额外的主扇区分配表因为文件头就可以容纳下了主扇区分配表(MSAT)是在SAT多于项时剩下的值用指定的扇区来记录!根据定义无额外主扇区分配表(MSAT)时主扇区分配表的起始扇区号为十六进制表示为FEFFFFFF它占用的扇区数为第三项完成第四:确定短流扇区分配表的起始扇区号及占用的扇区数短流扇区分配表(SSAT)是复合文档中的另一个概念短流数据用短流扇区来存放短流数据存放的位置通过短流扇区分配表来确定。一个文件有没有短流数据可以查看目录如图:    根据复合文档定义目录的第一表项X处的个字节表示的是短流的起始扇区(十六进制D值为)X处的个字节为短流的大小(十六进制值为)。而短流扇区分配表(SSAT)一般位于短流起始扇区的前一个扇区所以短流扇区分配表的起始扇区为=扇区它只占用一个扇区。扇区的内容如下图: 第四项完成。第五:确定文件头中的扇区分配表编号本例子只有一个扇区分配表(SAT)因此文件头中只用填写一个值。 到此需要重建文件头的所有值基本都确定了下面的工作就是改写文件头。定位到XC处CF为扇区分配表(SAT)所占用的扇区数本例占用个扇区转换成十六进制为(低位在前高位在后)操作完成后如下图: 定位到X处字节表示目录所在的扇区编号经前面的计算目录所在的扇区编号为换成十六进制为A把该值写到此处操作完成后如下图: 定位到XC处字节表示短流扇区分配表(SSAT)的起始扇区号本例短流扇区为十六进制值为C改写后如下图: 定位到X字节表示短流扇区分配表占用的扇区数本例占用个扇区应填写操作完成后如下图: 定位到X处字节表示MSAT起始扇区编号本例没有MSAT填写十六进制值为FEFFFFFF定位到X处字节表示MSAT占用的扇区数本例为填写操作完成后如下图:  定位到XC处此处后的每个字节填写一项SAT扇区编号本例只有一个SAT位置为转换成十六进制为剩下的填写成FFFFFFFF或者不填写也行!操作完成后如下图: 到此所有艰苦的工作都完成了但是文件头的其它数据还没有建立不过这些数据都是固定的比如文件头的前个字节所有复合文档都是一样的不一样的只有前面所说的那些项因此这些数据可以从别的文件中拷过来!填写完所有数据后如下图:  保存对文件的修改: 打开“损坏的实验文档”能够正常打开并且内容正确!

热点搜索换一换

用户评论(0)

0/200

精彩专题

上传我的资料

每篇奖励 +1积分

资料评分:

/17
2下载券 下载 加入VIP, 送下载券

意见
反馈

立即扫码关注

爱问共享资料微信公众号

返回
顶部

举报
资料