U盤提示未格式化數據的恢復一例
同事拿來一32M的U盤,提示未格式化,插上電腦一看,容量都可以認到,恢復有希望。打開WinHex,首先做好鏡像,接下來分析U盤內容,轉到0扇區,有MBR,在MBR中入指明DBR從32扇區開始,如下圖:
轉向32扇區,出來內容都是FFFF填充,如下圖:
繼續往下翻,發現下面的好多扇區都和32扇區一樣,都是FFFF填充。用WinHexr的搜索功能搜eb5890,也沒有找到,說明DBR已經被破壞了。接下來看看FAT表是否被破壞,用WinHex 的搜索功能搜找F8ff,結果在96扇區找到了一個FAT表,繼續往下找,沒再找到,就一個FAT表。
在這里算了一下,96-33=63,再用96+63=159,這里63是扇區的個數,表示DBR開始的FAT1表到FAT2表之間的扇區數,也就是FAT表的大小(現在只是猜想),轉到159扇區,看到159扇區中數據,前面的158扇區全部是0,說明從159扇區開始是FDT,再下翻32扇區,轉到191扇區,正好有一個根目錄,至此,這個U盤的結構已經清楚了:
MBR 0扇區
DBR 32扇區
FAT1 33扇區開始,大小 63個扇區,FAT2 96扇區開始,
FDT 159 扇區開始,數據區從191扇區開始。
接下格式化U盤,把U盤的DBR寫入到鏡像的32扇區中,
在這里要修改下一DBR參數,按我們前面所算的,FAT1表從33扇區 開始,Fat2表從96扇區開始,DBR在32扇區,按照清源大俠的懶人改Fat表法,修改FAT表的個數、大小 ,保留扇區數,這里分別設置為1、63、64,(原來的為2、248、8可以對照下面兩個圖,前面有星號表示是修改過的)然后保存并重新打開,怪事,竟然不對,仔細算了一下,應該沒錯啊,做了幾次都不行。后來突然想到,是不是簇大小有問題,格式化后的簇大小是01,按照公式算了一下,簇總數是63*512/2-2=16126,數據區大小是64000-2*63-32-32-1=63809,簇大小是63809-16126=3.95,我們取4,修改簇大小,保存再打開,數據完美恢復。