一种重组Office文件的方法
【技术领域】
[0001] 本发明涉及信息安全技术领域,特别涉及一种重组Office文件的方法。
【背景技术】
[0002] 在信息化迅速发展的21世纪,计算机技术日新月异,与人们的日常生活息息相 关,存储设备数据丢失往往能给个人,甚至企业单位带来无尽的烦恼与麻烦,在涉及计算机 数据存储工作中,如在企业工作中,企业数据丢失造成的损失是不饿估量的,小则使公司无 法开展工作,大则可能导致企业倒闭,特别是在信息企业中,公司的电子资料就是他们的命 脉,其中主要的电子资料又是Office复合文档,如能恢复出Office复合文档中的关键信息 让企业的损失降到最低;如在公安领域,这些Office复合文档中的关键信息也许就是案件 的电子证据,如果检验人员能够获取更多计算机中的数据信息,那么就更加有利于案件的 早日侦破,也就能够向法庭提供更多的可靠的证据,这对取证,特别是数据恢复工作提出了 更高的要求。目前,市场上使用最为流行的数据取证商业软件有Encase、Winhex、R-stdio 等,但是这些软件在Off ice复合文档恢复中只能按照找文件头特征来对文件进行RAW方式 恢复,而Office复合文件类型是有自己的解码格式,只有文件头的数据是无法正常将已有 内容展现的,故RAW方式恢复针对不完整的Office复合文档是不能达到很好效果的。但是 在实际的数据恢复或者取证中,往往就是需要恢复出完整的Office复合文档或者Office 复合文档中的关键信息。
[0003] 电子信息文件都是基于一定标准或者一定的格式设计的,每种类型的文件都有自 己独有的格式或者解码限制条件,我们可以在数据恢复中巧妙的使用这些信息来实现不连 续数据的恢复,最大程度的提升恢复出完整文件的概率。使恢复出的数据是可以被正常解 码,正常展现其中的内容,达到取证或者数据恢复的目的,本发明特别是针对Office复合 文档有较好的恢复思路。
【发明内容】
[0004] 本发明针对现有技术的缺陷,提供了一种重组Office文件的方法,能有效的解决 上述现有技术存在的问题。
[0005] -种重组Off ice文件的方法,包括以下步骤:
[0006] Sl :打开MBR磁盘分区表,解析MBR磁盘分区表,从分区表得到分区开始位置与分 区大小;
[0007] S2 :根据Sl中的分区信息可以找到文件系统分区表获取文件系统的参数,解析文 件系统得到所有文件及目录的属性值及存储位置信息,区分出正常使用空间与未使用的空 闲空间;
[0008] S3 :在空闲区域中扫描所有Office文件的数据头特征;
[0009] S4 :根据数据头特征向下偏移"Oxle"可以找到该Office文件的xml索引表;
[0010] S5 :解析xml索引表,得到所有索引表位图信息;
[0011] S6 :根据索引表位图信息得到Office文件数据区数据的具体位置;
[0012] S7 :按照索引表位图信息和Office文件数据区数据整理Office文件;
[0013] S8 :使用算法标准的解压算法将重组的Office文件数据进行解压得到正常编码 的数据流。
[0014] 作为优选,所述S6的详细步骤如下:
[0015] S601 :按顺序提取一条xml索引信息;
[0016] S602 :通过xml索引信息内的位置特征找到对应的数据块头部,在通过数据块头 部特征找到数据块起始位置和结束位置;
[0017] S603 :根据xml索引信息的结构与数据块内数据进行匹配,若与结构特征匹配成 功则认为此数据块数据可用,执行S604 ;若没有匹配校验码则说明此数据区数据已被损坏 执行S605 ;
[0018] S604 :记录该数据区位置;
[0019] S605 :判断xml索引表是否提取完成,完成则结束,未完成则执行S301。
[0020] 作为优选,所述S7为根据xml索引信息的顺序已经索引信息所对应的数据块,按 照索引信息顺序从上到下排列数据块的方式重组Office文件。
[0021] 与现有技术相比本发明的优点在于:可以根据文件特征找到丢失Office文件的 数据区与尾部xml索引表,根据xml索引表解析出Office文件数据区位置;根据Office文 件数据区与xml索引表组合成为一个特定格式的文件;即使文件部分被损坏,也可以恢复 其余部分的数据,将因数据丢失带来的损失降到最低。
【具体实施方式】
[0022] 为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对 本发明做进一步详细说明。
[0023] -种重组Office文件的方法,包括以下步骤:
[0024] Sl :打开MBR磁盘分区表,解析MBR磁盘分区表,从分区表得到分区开始位置与分 区大小;
[0025] S2 :根据Sl中的分区信息可以找到文件系统分区表获取文件系统的参数,解析文 件系统得到所有文件及目录的属性值及存储位置信息,区分出正常使用空间与未使用的空 闲空间;
[0026] S3 :在空闲区域中扫描所有Office文件的数据头特征"0x504B0304" ;
[0027] S4 :根据数据头特征向下偏移"Oxle"可以找到该Office文件的xml索引表;
[0028] S5 :解析xml索引表,得到所有索引表位图信息;
[0029] S6 :根据索引表位图信息得到Office文件数据区数据的具体位置;
[0030] S7 :按照索引表位图信息和Office文件数据区数据重组Office文件;
[0031] 所述S7为根据xml索引信息的顺序已经索引信息所对应的数据块,按照索引信息 顺序从上到下排列数据块的方式重组Office文件。
[0032] 例如:DOCX文件中XML的位图表结构为
[0033] [Content_Types]. xml
[0034] word/_rels/document. xml. reIs
[0035] word/document, xml
[0036] word/media/imagel. png
[0037] word/theme/theme I. xml
[0038] word/settings, xml
[0039] word/webSettings. xml
[0040] word/styles, xml
[0041] docProps/core. xml
[0042] word/numbering, xml
[0043] word/fontTable. xml
[0044] docProps/app. xml
[0045] 上述每个xml索引表信息对应一个数据块,通过索引表信息找到数据库后将数据 库提取并按照上述顺序组成完整的文件。
[0046] S8 :使用算法标准的解压算法将重组的Office文件数据进行解压得到正常编码 的数据流。
[0047] Office解压数据块的算法代码如下:
[0048] Unziptint index, void s^dst iuisigned mtlen, DWORD flags) ?. it (tla-s ! ZIP MEMORY && tlags ! ZIP FiLF.NAMR && flags ! ZIP 11ANDLR) return ZR ARGS: if (flags - ZJP MEMORY) ? if (index != currentfUe) { if (currentfile != -I) yii2CloseCurreiitFile(uf): currentfile ^ -1; if (index >= {uat)uf~>gi.number entry) retixrnZR ARGS; if (index < (mi)uf->num_file) imzGoToFirstPile(ui); while ((int)uf->num_fxle< index) iuazGoToMexffil:e(uf)· imzOpenCurrent