實驗地點:主樓A2-412
一、實驗室名稱:主樓實驗室A2-412
二、實驗項目名稱:磁盤存儲結構與文件恢復實驗
三、實驗學時:6學時
四、實驗原理:
在Debug環境下利用基本匯編程序對引導扇區、文件分配表、目錄表等結構進行顯示,並進行分析;
使用工具軟件WINHEX對指定的文件(被刪除文件)進行恢復。
五、實驗目的:
1)了解文件系統在磁盤上的存儲映像和它在系統安全中的地位和作用;
2)了解文件目錄結構及其訪問方式;
3)掌握使用系統基本匯編程序進行磁盤和文件結構訪問的技術和編程方法,為數據恢復奠定基礎。
六、實驗內容:
1)在DEGUB下,使用匯編指令讀取MBS引導扇區,記錄並分析說明結構。
2)在DEGUB下,使用匯編指令讀取DBS引導扇區,記錄並分析說明結構。
3)在DEGUB下,使用匯編指令讀取FAT、FDT,記錄並分析說明結構。
4)生成一個簡單文本文件(*.txt文件),結合FAT,FDT信息,使用匯編指令,在硬盤上查找並讀出該文件,記錄並說明查找過程。
5)刪除生成的文本文件,查看該文件在FAT、FDT所對應的文件存儲狀態以及該文件在數據區對應扇區的內容,說明文件刪除操作的原理。
6)使用WINHEX軟件進行文件恢復操作練習。
七、實驗器材(設備、元器件):
PC微機一台(至少具有一個FAT格式磁盤分區),VMware Workstation6.0虛擬機軟件,DOS7.0,WINHEX軟件。
八、實驗步驟:
任務一、讀取MBS引導扇區
1.在DEGUB下,使用匯編指令讀取MBS引導扇區。
2.根據顯示的信息,分析說明MBS結構及字節含義和具體數值。
任務二、讀取DBS引導扇區和磁盤參數塊BPB
1.在DEGUB下,使用匯編指令讀取DBS引導扇區。
2.根據顯示信息,分析說明引導扇區結構。
3.根據顯示信息說明磁盤參數塊BPB結構及各段含義和具體數值。
任務三、讀取FAT表
1.生成一個簡單文本文件(*.txt文件),取“長文件名”。
2.在DEGUB下,使用匯編指令讀取FAT表。
3.根據顯示信息,說明FAT的作用與格式。
任務四、查找文件
1.以“任務三”所生成的文本文件(*.txt文件)為目標,根據FDT查找該文件。
2.根據BPB中的信息,計算FDT位置。
3.編寫代碼顯示FDT。
4.根據FDT信息,確定文件首簇號,根據公式計算目標文件起始扇區位置。
5.編寫代碼讀取該文件對應的扇區,查看扇區存儲的文件內容。
任務五、文件刪除原理
1.刪除生成的文本文件
2.查看FDT,檢查已刪除文件在FDT中所對應的狀態信息的變化。
3.查看FAT,檢查已刪除文件在FAT中所對應的狀態信息的變化。
4.查看已刪除文件在數據區扇區中的內容,理解文件刪除原理。
任務六、文件恢復
1.在FAT16(32)格式的磁盤中,使用WINHEX進行文件恢復操作練習。
九、實驗數據及結果分析:
任務一:讀取MBS引導扇區
1.給出編寫的完整DEBUG指令,記錄(拷貝屏幕輸出)讀出的MBS引導扇區內容,並對其進行結構分析和說明。
以上就是代碼以及mbs全部內容,1000-11b7為引導程序,11b8-11bb為磁盤簽名,11bc-11bd默認為0,11be-11fd為分區表,四個表項,每個16字節。這個例子里只有一個分區,開頭一字節為80,表示主活動分區。最后兩字節為結束標志。
2.計算當前磁盤空間大小。
當前磁盤空間為保留扇區(包括MBR)加上所有分區大小,這里保留扇區為3f,分區大小看最后4字節(11ca-11cd),即03bf85,總共為03bfc4*0200字節。
任務二:讀取DBS引導扇區
1.給出編寫完整DEBUG指令,記錄(拷貝屏幕輸出)讀出的DBS引導扇區內容,並對其進行結構分析和說明。
以上為代碼及dbr所有內容,1000-1001為跳轉指令,1002為nop,1003-100a為OEM代號,100b-103d為bpb,103e-11fd為引導程序,最后兩字節為結束標志。
2.說明和計算磁盤參數塊BPB的結構及各段含義和具體數值。
每扇區字節數0200(100b-100c),每簇扇區數4(100d),DBR保留扇區數1(100e-100f),FAT個數2(1010),根目錄最大目錄項數0200(1011-1012),扇區總數0(1013-1014),介質描述符f8(1015),每FAT扇區數0f0(1016-1018),每磁道扇區數3f(1018-1019),磁頭數4(101a-101b),隱藏扇區數3f(101c-101f),扇區總數3bf85(1020-1023),BIOS驅動器號80(1024),1025未用,擴展引導標記29(1026),卷序列號2f2f1ceb(1027-102a),卷標202020303137534f44534d(102b-1035),文件系統類型fat16(1036-103d)。
任務三:讀取FAT表
給出編寫完整DEBUG指令,記錄(拷貝屏幕輸出)讀出的FAT表內容,並說明FAT的作用與格式。
以上為代碼和fat1。每個fat項占2字節:0號描述介質類型,f8表示為硬盤;1號為骯臟標志;2號起沒兩個字節為1fat項:fff7表示壞簇,ffff表示某文件最后一個簇,00表示可用簇,其他表示某文件的下一個簇的簇號。
任務四:查找文件
記錄並說明對文本文件進行查找的過程,以及每步產生的結果與分析。
1.根據BPB中的信息,計算FDT位置。
2.編寫代碼顯示FDT,觀察長文件名的顯示格式,並記錄目標文件的首簇號。
3.根據公式計算目標文件起始扇區位置。
4.讀取文件在數據區扇區中的內容並記錄。
這里分別實驗了fat16和fat32:
Fat16:
根據bpb,每fat表占0f0字節,保留扇區為1,則fdt的起始扇區為1+0f0*2=1e1.
以上為fdt內容,個人覺得用l命令簡單得多,上面的a代碼還要涉及每磁道扇區數等等,下面用l實現相同的功能:
我用的fat16不支持長文件名,所以后面又用fat32重新做了一遍,這里也可以讀取文件內容。如1e1(fdt)+20h+4=205h,即fdt起始扇區+fdt大小+(3-2)*每簇扇區數。文件首簇可以從目錄項倒數第6字節和第5字節看到。
下面說fat32:
原理基本跟fat16類似:
這里需要說的是bpb肯定不一樣,fat表項為4字節,我們現在主要目的是看長文件名,就不贅余了。
上面的是部分根目錄項,其他的被我省了。這里看文件LIHUAN~1.TXT,創建長文件名時,也會創建個短文件名,前6字節+~1構成短文件名,另一個長文件名需要多個目錄項時,其倒序排列在短文件名目錄項之前。現在查找其內容:由於fat32把根目錄放在數據區,故而文件位置在:20(保留扇區數)+2*0ff7(fat大小,在1024-1027)+(08b5-2)*8=65a6:
任務五:文件刪除原理
1.顯示FDT,記錄已刪除文件在FDT中所對應的狀態信息的變化。
2.顯示FAT,記錄已刪除文件在FAT中所對應的狀態信息的變化。
3.查看已刪除文件在數據區扇區中的內容。
4.根據以上結果,說明文件刪除原理。
由以上幾個圖片可以看出:fat表里對應fat項清0,fdt對應目錄項近把第一字節修改為e5,文件內容並不修改。所謂刪除,即把fat表項刪除,fdt標示e5表示曾被占用,現已刪除。
任務六:文件恢復
1.記錄並說明使用WINHEX進行恢復操作的過程中所使用的主要磁盤參數。
主要用到的磁盤參數和前面dos里一樣,根據bpb找fat,bpb里可以找到根目錄首簇號,結合fat大小數量,找到根目錄,查找文件首簇,定位,截取內容,粘貼到新文件里,搞定。
2.簡要敘述使用WINHEX進行恢復操作的主要步驟。
下面用winhex處理下xp下一個磁盤fat32分區內容:
創建一個文件:
在winhex里看:
先徹底刪除文件:
同前面dos原理,用winhex找到根目錄:
再根據首簇3號找到內容(這里說一下,這里文件其實地址已修改,只是首簇號高位本就是0,清0看不到效果,低位不修改)。把文件內容截取出來保存在d盤一個新建文件下:
然后打開,和源文件內容一樣,恢復成功。
十、實驗結論:
充分了解了mbr,dbr,bpb,fat,fdt等結構,由於同時操作了fat16和fat32,可以看出各結構的異同,熟悉了長文件名的存儲,並親自恢復了一個文件,收獲很多。
十一、總結及心得體會:
通過本實驗,了解了文件是怎樣存儲在磁盤上的,通過什么途徑和方法能夠在磁盤上找到它們,對文件和數據的讀寫和刪除在磁盤上會產生什么樣的改變和結果,為下一步理解文件和數據的恢復奠定基礎。掌握使用系統基本匯編程序(Debug匯編)進行磁盤和文件結構訪問的技術和編程方法。