U盤SD卡文件誤刪恢復探討

USD卡文件誤刪恢復探討

今天把U盤的一個文件誤刪了,想通過修復軟件修復,發現修復回來的文件是空的。用winhex打開一看基本都是0,頓時對修復軟件很失望!想自己來恢復,同時一探究竟!

說   明:

操作系統:win7 旗艦版 64

U     盤:16G

所有地址均指物理地址

注意winhex軟件與物理地址的相對性

1.0 文件的位置確定

1.1 引導扇區(DBR

 

1

這是我的U盤引導扇區截圖,有用的數據均做顏色標記。

黑色(0x1B 0x1C)  :0x0200 (每個扇區512字節)

綠色(0x1D)       :0x10 (一個簇包含16個扇區,既512 * 16 =8096

紅色(0x1E 0x1F)  :0x08BE2238,保留扇區大小)

粉色(0x20~23)    :0x01DD7FFF31293439,扇區總數)

紫色(0x24~27    :0x00003BA115265FAT表所佔用扇區數)

黃色(0x2c~2F    :0x000000022根目錄所在第一個簇的簇號)

 

DBR具體介紹參考前一篇博文:http://blog.csdn.net/mjx91282041/article/details/8904705

圖2

我們需要確定數據區的起始地址 = 橙色 + 綠色 + 黃色

綠色黃色的地址 = (0x08BE + 0x3BA1 * 2 )* 512 = 0x1000000

 

橙色  = 0x0400000 

 

數據區的起始地址 = 0x01400000 

 

這個地址也是根目錄所在的位置

1.2 根目錄文件查找

爲了便於分析,這裏專門在根目錄下建了一個123456.txt的文件,跳轉到0x01400000位置

 

圖3

紅色是文件名稱

 

綠色是文件的存儲簇號(0x00016AC6

 

文件的位置存儲內容如下圖:

 

圖4

1.3FAT

圖片中紅色方框即爲123456.txt文件存儲的位置。

FAT表的起始地址爲:0x000117C00

123456.txt存儲地址爲起始地址+偏移地址

0x000117C00  + 0x00016AC6 *4 = 0x0172718

 

圖5

2.0 刪除文件

現在人爲刪除123456.txt文件,然後來對比根目錄和FAT表的變化。

首先看一下根目錄:

 

圖6

和圖3對比會發現,紅色和綠色都改變了,變化的數據標爲藍色。我們知道綠色部分爲文件存儲的起始簇,這個數據變化了,那麼恢復文件的可能性就比較難了。我們再去看看FAT表做了哪些修改。

 

圖7

和圖5對比,發現原來的結束簇標誌被清除了,變爲0.

最後我們去看看文件數據是否也刪除了!

0x00016AC6-0x02) * 16 * 512 = 0x2D588000

公式說明:

0x00016AC6,簇的位置

0x2,簇從3開始有效

16 ,每個簇16個扇區

512 每個扇區512字節

這個地址是基於數據區的起始地址0x01400000 

所以123456.txt實際地址 = 0x01400000 +0x2D588000  = 0x02E588000

 

圖8

3.0總結

根據分析發現和實際測試,發現電腦的刪除操作清除了FAT表的簇號和目錄的起始簇地址高16位,但是文件的實際數據還是存儲在U盤當中,當然刪除後再次寫入除外。所以當起始簇有在高16位的文件,軟件恢復的可能性不大,當起始簇只有低16位的,恢復起來比較容易。


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