7个碎片的excel重组实验

 H盘是fat32系统,簇大小8 。根目录下有一个123.xls文件,winhex下查看文件共有7个碎片。现在删除这个文件,再用winhex分析查找到所有碎片,提取出来,最后在重组为一个文件。


wKioL1S7vBXhqClZAAC8jnQuL68015.jpg


wKiom1S7u32SpJlIAAIFdVJlyt0720.jpg


wKiom1S7u7vj4zOzAARUgG_Tzko272.jpg


wKiom1S7vAvxQtuQAADLiCYoFgY398.jpg

    下面是恢复过程:打开winhex,根据目录项定位到他的文件头扇区(过程略)。1591240号扇区 


wKiom1S7vFyS6IkZAAP1j7ktNUs667.jpg


    根据文件头中的参数跳转到ROOT所在扇区,查看workbook流的起始位置,为08 00 00 00


wKiom1S7vLKhyCY6AAMHINMUrYQ533.jpg


    跳转过去,


wKioL1S7vfbyYdHsAAHltoc_17U675.jpg


然后根据workbook流的结构关键字标识(比如字体,格式,样式,调色板,SSTsheet表等等)来分析当前碎片的结束位置和下一个碎片的开始位置。

当分析到1591271扇区时,发现下一扇区明显是另外一个复合文档的文件头,这说明1591271扇区就是第一个碎片的结束扇区,经过计算,这个扇区正好是198404号簇的最后一个扇区。


wKioL1S7vkzzziGkAAHg7D6Hatc984.jpg


 这样第一个碎片就确定了,1591240---1591271 ,提取出来保存为1.dat 。现在查找第二个碎片,我们利用下一个碎片第一个关键字标识距离碎片开始的字节长度为线索来查找。期间排出了几个错误的搜索结果,最后确认1591280扇区为下一个碎片的开始扇区。


wKiom1S7vbixnFeuAAL1NGKLR9M891.jpg












    下面继续分析,查找是碎片的结尾。通过分析搜索,在1592143扇区找到了碎片尾部,如图:


wKioL1S7v3nTAzhFAAMmRqz-rRk771.jpg


这样,第二个碎片就确定了,1591280---1592143。提取出来保存为2.dat

下面查找第三个碎片的开始扇区,同样的思路。最终在1593840扇区找到了下一个碎片的开始扇区。如图:


wKiom1S7vyzArarPAAJyD9lOebU849.jpg


    继续分析查找碎片的结尾,在1594191扇区找到了碎片的结束扇区,如图:


wKiom1S7v3TzDr9oAALSkTjHUqY723.jpg


这样,第三个碎片就确定了大小范围,1593840---1594191 。提取出来保存为3.dat 。继续分析搜索第四个碎片。我就不一一贴图了,以下是分析出的各碎片的范围:

4.          1595128---1596183

5.          1669056---1669631

6.          1745208---1745623

7.          1761672---1762887

最后把这提取出来的7个碎片文件合并成一个excel文件:recovery.xls 。然后打开验证

一下,如图:


wKioL1S7wKuDeWvSAAKKNT4cu3w917.jpg


wKiom1S7wBCzRkJTAAEhgIQ1yJ4515.jpg



wKioL1S7wQ-ShEbaAAJ987bjdGI308.jpg


没有问题,文件重组成功!

 

以上是我做的实验,在实际的重组过程中可能会碰到一些其他问题。就不探讨了。此实验只是提供一种思路供大家参考,前提是要对workbook流的结构要有一定的了解。好了,就到这里,再见!       

                             

                                                                        bsmao

                                                                        2014-1-8


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章