天天看點

檔案系統結構分析與資料恢複

檔案恢複是指由于各種原因(如病毒等)導緻資料損失時把保留在媒體上的資料重新恢複的過程。即使資料被删除或硬碟出現故障,隻要在媒體沒有嚴重受損的情況下,資料就有可能被完好無損地恢複。

預備知識

一.硬碟資料存儲區域

FAT16和FAT32檔案系統硬碟上的資料按照其不同的特點和作用大緻可分為5部分:MBR區、DBR區、FAT區、FDT區和DATA區。MBR由分區軟體建立,DBR區、FAT區、FDT區和DATA區由進階格式化程式建立。檔案系統寫入資料時隻是改寫相應的FAT區、FDT區和DATA區。這5個區域共同作用才使整個硬碟的管理系統有條不紊。

1.MBR,主引導記錄區

2.DBR,作業系統引導記錄區

3.FAT,檔案配置設定表

4.FDT,檔案目錄表

5.DATA,資料區

以上5個區域在硬碟邏輯分區上的排列如下所示。各區域在分區上的位置關系。

MBR(63)->DBR(32)->FAT1->FAT2->FDT(32)->DATA

二.檔案配置設定表

檔案配置設定表(FAT)是DOS檔案管理系統用來記錄每個檔案的存儲位置的表格,它以鍊的方式存放簇号。

磁盤格式化後,使用者檔案以簇為機關存放在資料區中,一個檔案至少占用一個簇。當一個檔案占用多個簇時,這些簇的簇号不一定是連續的,但這些簇号在存儲該檔案時就确定了順序,即每個檔案都有其特定的“簇号鍊”。磁盤上的每一個可用的簇在FAT中有且隻有一個登記項,通過在對應簇号的登記項内填入“表項值”來表明資料區中的該簇是已占用、空閑或是壞簇三種狀态之一。損壞的簇可以在格式化過程中,由Format指令發現并記錄在FAT中。

三.檔案目錄表

用Format指令對磁盤進行進階格式化的時候,就已經為整個磁盤建立了一個根目錄FDT。在根目錄下,使用者可以再建立不同的子目錄或檔案。根目錄以及各個子目錄都有自己的FDT。

根目錄下的所有檔案及其子目錄在根目錄的檔案目錄表中都有一個“目錄登記項”。每個目錄登記項占用32個位元組,提供有關檔案或子目錄的資訊。

手工恢複檔案

1. 使用WinHex打開U盤檢視各項參數

(1)格式化U盤:

選擇“格式化”->在檔案系統中選擇“FAT32”->“開始”->“确定”,對U盤進行格式化。

(2)使用WinHex擷取U盤快照:

打開WinHex。

單擊“工具”->“打開磁盤”->在邏輯驅動器中選擇磁盤->“确定”

擷取新快照後可以看到驅動器中所包含的目錄、檔案、檔案配置設定表的大小和起始位置等相關資訊。

(本實驗中選用U盤操作)

「注」 不要選擇“不要再顯示此提示資訊”,如果選中了則不能擷取新快照。可以通過“幫助”->“設定”->“初始化”來取消選擇

打開後可以看到以下資訊:

檔案系統結構分析與資料恢複

(3)檢視FAT1

單擊WinHex中U盤快照中檔案清單中的FAT1即可檢視FAT1。

單擊FAT1中的資料可在左側的參數框中看到資料所代表的簇号和簇的目前狀态。

檔案系統結構分析與資料恢複

(4)計算FDT的起始位置

在檔案清單中可以看到FAT1和FAT2的第1扇區位置,FAT2是FAT1的備份,是以大小相等内容相同。是以可以推算出它的大小為:FAT2的第1扇區位置-FAT1的第1扇區位置。FAT1的大小是: 8934-1484=7450 。

可讀取到資料:

FAT1 1484

FAT2 8934

FDT的位置在FAT2之後,是以可以通過:FAT2的第1扇區位置+FAT1的大小來得到FDT的起始位置。

FDT的起始位置的邏輯扇區編号是: 8934+7450=1638。

(5)跳轉到FDT的起始位址

單擊“位置”->“轉到扇區”->在扇區輸入框中輸入FDT的起始位置的邏輯扇區編号->“确定”,即可跳轉到FDT的起始位址。

(6)根據實驗原理了解FDT表中的目錄登記項的各部份含義。

在FDT中,每個目錄登記項占用32個位元組,分為8個區域,提供有關檔案或子目錄的資訊。FAT32檔案目錄項的32 個位元組表示的定義:

位元組位置 位元組數 内容及含義
0x0~0x7 8 檔案名
0x8~0xA 3 擴充名
0xB 1 00000000(讀寫)
~ ~ 00000001(隻讀)
~ ~ 00000010(隐藏)
~ ~ 00000100(系統)
~ ~ 00001000(卷标)
~ ~ 00010000(子目錄)
~ ~ 00100000(歸檔)
0xC 1 系統保留
0xD 1 建立時間的10毫秒位
0xE~0xF 2 檔案建立時間
0x10~0x11 2 檔案建立日期
0x12~0x13 2 檔案最後通路日期
0x14~0x15 2 檔案起始簇号的高16位
0x16~0x17 2 檔案最近修改時間
0x18~0x19 2 檔案最近修改日期
0x1A~0x1B 2 檔案起始簇号的低16位
0x1C~0x1F 4 表示檔案的長度

2. 建立文本檔案

在U盤根目錄下建立文本文檔“Hello.txt”,内容為“Hello World!”的文本檔案。檔案名和内容使用英文是為了便于查找。

3. 備份相關資料

(1)重新擷取磁盤快照

此時彈出對話框提示“有快照可以重用”,單擊“擷取新快照”即可獲得邏輯驅動器的目前快照。

(2)備份FDT中“Hello.txt”的目錄登記項

根據FDT的起始位置的邏輯扇區編号跳轉到FDT的起始位址。

檔案系統結構分析與資料恢複

找到檔案“Hello.txt”的登記項。根據資料區右側的明文找到倒數32個與檔案“Hello.txt”相關的位元組,即是檔案的目錄登記項。

檔案系統結構分析與資料恢複

按住滑鼠左鍵拖動選中檔案“Hello.txt”的目錄登記項的32個位元組。

右鍵單擊被選中的資料塊->“編輯”->“複制選塊”->“置入新檔案”->将新檔案命名為“FDTH.dat”儲存位置是C槽根目錄下->“儲存”。此時新檔案會在WinHex中被打開。

根據實驗原理中對目錄登記項各部份的定義,檔案“Hello.txt”的檔案名在目錄登記項中的十六進制代碼的第1位元組的值是 48。

檔案的大小是 12 位元組,在目錄登記項中的十六進制代碼是 00 00 00 0C 。

檔案的首簇編号是 6 ,在目錄登記項中的十六進制代碼是 00 06 。

檔案系統結構分析與資料恢複

(3)備份FAT1中的相關資料

參考FDT資料的備份步驟,将FAT1中的有效資料備份到C槽根目錄下,檔案名為“FAT1H.dat”。

檔案系統結構分析與資料恢複

(4)檢視DATA區域中檔案“Hello.txt”的資料

單擊“位置”->“轉到扇區”->在簇輸入框中輸入檔案“Hello.txt”的首簇号->“确定”,即可跳轉到檔案“Hello.txt”的起始位址。

檔案系統結構分析與資料恢複
檔案系統結構分析與資料恢複

4. 删除檔案

在D盤根目錄下選中檔案“Hello.txt”

按“Shift+Delete”鍵将其删除。

5. 檢視删除标記

(1)重新擷取U盤快照。

(2)對比目前FDT中檔案“Hello.txt”的目錄登記項和FDTH.dat中的相關資料。

FDTH.dat中第一個位元組是 48 。

目前FDT中檔案“Hello.txt”的目錄登記項的第一個位元組是 E5 。

檔案系統結構分析與資料恢複

(3)對比FAT1中相關資料的變化。

FAT1H.dat中檔案“Hello.txt”簇鍊相關位置的十六進制值是00 00 00 00 。

上述位置的值在目前FAT1中相同位置的值是FF FF FF 0F。

檔案系統結構分析與資料恢複
檔案系統結構分析與資料恢複

(4)檢視DATA區域中檔案“Hello.txt”的資料。

根據FDTH.dat記錄的檔案“Hello.txt”的首簇位置跳轉相關簇并檢視檔案資料。檔案資料是否有變化?

檔案系統結構分析與資料恢複

6. 根據備份資料恢複檔案

(1)根據備份資料FDTH.dat和FAT1H.dat恢複FDT與FAT1中的相關資料。

在FDT與FAT1的資料部分,用滑鼠單擊要修改的資料,然後通過鍵盤輸入數值。

按“Ctrl+S”鍵儲存上述修改。出現提示資訊,單擊“确定”|“是”完成儲存。

(2)重新整理D盤根目錄檢視檔案。檔案是否被恢複?

答:是

檔案名是 HELLO.txt 。

檔案系統結構分析與資料恢複

模糊恢複檔案

1. 格式化U盤

(1)重新對U盤進行格式化。

(2)使用WinHex重新擷取U盤快照。

(3)對比格式化前後FDT和FAT1中資料的變化。

格式化前;

檔案系統結構分析與資料恢複
檔案系統結構分析與資料恢複

格式化後:

檔案系統結構分析與資料恢複
檔案系統結構分析與資料恢複

2. 根據DATA區的資料内容恢複檔案

(1)根據FDTH.dat中的記錄跳轉到檔案“Hello.txt”首簇位置檢視檔案資料。檔案資料是否有變化?

->沒有變化。

檔案系統結構分析與資料恢複

(2)根據檔案首簇位置和檔案大小修改FDT和FAT1。

根據FDT的定義,檔案“Hello.txt”的目錄登記項中表示檔案首簇位置的是 26至 27 位元組。根據DATA區域中檔案“Hello.txt”的相關内容,在這些位置中應填入 06 00 。

表示檔案大小的是目錄登記項中的第 28 至 31位元組。根據DATA區域中的相關内容,在這些位置中應填入 0C 00 00 00 。

根據DATA區的資料内容修改FAT1。檔案“Hello.txt”沒有寫滿一個簇,是以找到檔案“Hello.txt”在FAT1中的首簇位置寫入FF FF FF 0F,表示檔案結束。

(3)修改檔案名。

表示檔案名及其擴充名的是登記項中的第 0 至 7 位元組。此時,假設隻知道檔案類型是文本檔案而不知道檔案名,則可以在相關位元組中填入其它十六進制值,但是必須保證這些值符合檔案名命名規則。0-7位元組為檔案名,可以全部填入十六進制值“46”;8-10位元組為檔案擴充名,填入十六進制值“54 58 54”。

按“Ctrl+S”鍵儲存上述修改。

(4)重新整理D盤根目錄檢視檔案。檔案是否被恢複?

答:是。

檔案名是 FFFFFFFF.txt 。

檔案系統結構分析與資料恢複

安全擦除檔案(檔案粉碎)

将恢複的檔案安全擦除

(1)安全擦除檔案

單擊“工具”->“檔案工具”->“安全擦除…”->選擇剛被恢複的檔案|“删除”->在“用16進制數值填充”中輸入數值->“确定”->“确定”,檔案即被不可逆删除。為了便于檢視可在“用16進制數值填充”中輸入又特征的數值。例如“1234”。

(2)在DATA區檢視檔案資料

跳轉到被安全擦除的檔案的首簇位置檢視被安全擦除的檔案的資料。

檔案被安全擦除後DATA區中的資料是否有變化?

檔案被安全擦除後DATA區中的資料為剛剛填充的16進制的數值。
檔案系統結構分析與資料恢複

使用Rstudio進行檔案恢複。

開始檔案恢複:通過選擇要恢複的磁盤,右鍵點選,打開驅動器檔案,會自動掃描;左邊是現在的檔案,右邊是可恢複的一些檔案資料,綠色是恢複幾率比較大的;勾選你要恢複的檔案,然後點選上方的 恢複标記的恢複選項,輸出檔案夾自己設定;點選确定,恢複完成,在恢複檔案夾找到已經恢複好的删除檔案。

結果:檔案有被恢複,但是内容是空的。
檔案系統結構分析與資料恢複

主引導扇區覆寫

利用changeboot.bin覆寫主引導扇區,虛拟機中實施。

在虛拟機中,用WinHex打開磁盤C,将changeboot.bin中的位元組碼全選複制到磁盤C的FDT中,儲存後重新開機。
檔案系統結構分析與資料恢複

繼續閱讀