跳到主要內容

FAT基本資料救援 - 針對UNDELETE的資料

FAT基本介紹

基本觀念

這邊要稍微定義一下單位:
1 bytes = 8 bits
1 sector = 512 bytes

sector
可以簡單理解為,在光碟片上儲存資料的block。

cluster
是由sector所組成,但是依據格式化時的設定而有所不同,從下面的圖可以看出,在格式化時Allocation unit size,基本上就是在設定cluster,下面的例子是 1 cluster = 16 sectors

FAT架構概要

FAT的大概架構順序主要如下:
  • MBR
  • FAT1:資料的儲存位置紀錄
  • FAT2:FAT1的備份
  • Root Directory:檔案的相關資訊
  • Data:檔案實際存放的地方
而在MBR中,主要可以分成三個部份:
  • Bootstrap code: 識別已配置的bootable partition,載入並且執行VBR(Volume Boot Record)[link] ,這邊不是本章要討論的重點。
  • Partition table: 這邊主要是描述整顆硬碟的分割資訊。
  • Boot signature: 表示此Block是有效的。
大概長的像下圖這樣:

Partition table,是以16 bytes為單位,因此原則上,此硬碟最多可以切分成四個partition。第一個partition,起始位置為 0x01CE ,結尾為0x01CD,如下圖框起來的範圍,
每個位置都有其代表的意義:
主要就是說明此Partition的起始、結束、大小等資訊。

Root Directory
這邊主要要說它裡面的Directory Entry,下圖中,包含了三個檔案,包含名稱以及相關資訊:

資料救援

接著開始進入正題,在FAT的架構下,刪除資料,主要有兩個部份需要異動:
  • FAT1
  • Root Directory內的Directory Entry

首先先說明,Directory Entry的部份,在這邊會將檔案名稱第一位hex,改成E5,下面的例子(檔案名稱為1000.txt),
刪除前:

刪除後:(永久刪除,而非丟到資源回收桶)
這邊就可以看到,第一個hex,已經被替換成E5

FAT1的部份:
刪除前:

刪除後:

實際上,資料被沒有被抹除,而是還存在於硬碟內(Data的位置),因此,只要將FAT1以及Directory Entry恢復,即可將資料找回來,FAT1的不p份,可以透過計算的方式推得,請參考備註的計算,至於Directory Entry的部份,只要給它一個任意值即可,就只是檔案名稱會與原來的不同而已,但是如果是完整的格式化(如下圖),那這個方法就不可行了。

備註

計算方式,是以FFF為最後的結尾,下面的例子裡,共有三個檔案:
注意:計算必須要後接前,例如4F 00 => 00 4F
因此,以上例來說
首先先忽略:F8 FF FF
第一個檔案:FFF (表示佔用一個cluster)
第二個檔案:004 FFFF(表示佔用兩個cluster)
第三個檔案:006 007 008 009 00A 00B 00C 00D 00E 00F 010 FFF(表示佔用12個cluster)

而這個數字會一直累加下去。

參考資料

留言