H盤是fat32系統,簇大小8 。根目錄下有一個123.xls文件,winhex下查看文件共有7個碎片。現在刪除這個文件,再用winhex分析查找到所有碎片,提取出來,最後在重組爲一個文件。
下面是恢復過程:打開winhex,根據目錄項定位到他的文件頭扇區(過程略)。1591240號扇區 。
根據文件頭中的參數跳轉到ROOT所在扇區,查看workbook流的起始位置,爲08 00 00 00,
跳轉過去,
然後根據workbook流的結構關鍵字標識(比如字體,格式,樣式,調色板,SST,sheet表等等)來分析當前碎片的結束位置和下一個碎片的開始位置。
當分析到1591271扇區時,發現下一扇區明顯是另外一個複合文檔的文件頭,這說明1591271扇區就是第一個碎片的結束扇區,經過計算,這個扇區正好是198404號簇的最後一個扇區。
這樣第一個碎片就確定了,1591240---1591271 ,提取出來保存爲1.dat 。現在查找第二個碎片,我們利用下一個碎片第一個關鍵字標識距離碎片開始的字節長度爲線索來查找。期間排出了幾個錯誤的搜索結果,最後確認1591280扇區爲下一個碎片的開始扇區。
下面繼續分析,查找是碎片的結尾。通過分析搜索,在1592143扇區找到了碎片尾部,如圖:
這樣,第二個碎片就確定了,1591280---1592143。提取出來保存爲2.dat。
下面查找第三個碎片的開始扇區,同樣的思路。最終在1593840扇區找到了下一個碎片的開始扇區。如圖:
繼續分析查找碎片的結尾,在1594191扇區找到了碎片的結束扇區,如圖:
這樣,第三個碎片就確定了大小範圍,1593840---1594191 。提取出來保存爲3.dat 。繼續分析搜索第四個碎片。我就不一一貼圖了,以下是分析出的各碎片的範圍:
4. 1595128---1596183
5. 1669056---1669631
6. 1745208---1745623
7. 1761672---1762887
最後把這提取出來的7個碎片文件合併成一個excel文件:recovery.xls 。然後打開驗證
一下,如圖:
沒有問題,文件重組成功!
以上是我做的實驗,在實際的重組過程中可能會碰到一些其他問題。就不探討了。此實驗只是提供一種思路供大家參考,前提是要對workbook流的結構要有一定的瞭解。好了,就到這裏,再見!
bsmao
2014-1-8