這周第一次軟件安全實(shí)驗(yàn)課題為“磁盤(pán)格式與數(shù)據(jù)恢復(fù)”,對(duì)于磁盤(pán)格式比較復(fù)雜,內(nèi)容概念都比較多,且自己理解還不算透徹,等以后再試著歸納。這里就先從應(yīng)用層角度通過(guò)對(duì)一個(gè)已刪除文件的恢復(fù)實(shí)驗(yàn)來(lái)進(jìn)行說(shuō)明。
這里暫時(shí)只考慮文件系統(tǒng)為FAT32和NTFS的格式,下面也將分別對(duì)這兩種文件系統(tǒng)的文件恢復(fù)進(jìn)行演示。
FAT32
FAT32邏輯磁盤(pán)基本信息描述
用winhex打開(kāi)一個(gè)FAT32分區(qū)格式的邏輯盤(pán)F盤(pán),查看該邏輯盤(pán)的根目錄區(qū)。

其中0200(藍(lán)框)表示一個(gè)扇區(qū)512個(gè)字節(jié),08(紅框)表示每簇8個(gè)扇區(qū),即每簇4kb。(查閱資料可得,F(xiàn)AT32分區(qū)當(dāng)分區(qū)大小在260MB-8GB時(shí),簇大小為4KB,符合事實(shí))這里由F盤(pán)大小5GB及在FAT表中每簇占4個(gè)字節(jié)的記錄可計(jì)算得每個(gè)FAT(FAT2為FAT1的備份)大小為5MB,與實(shí)際相同。
在F盤(pán)根目錄下創(chuàng)建一個(gè)大概60kb的文本文檔。

在winhex找到該文件位置,查看目錄項(xiàng)的信息。

由紅框內(nèi)目錄項(xiàng)信息可分別知道首簇號(hào)高四位和第四位進(jìn)而求得首簇號(hào)為10號(hào),以及文件大小。經(jīng)計(jì)算可得文件大小為58.9kb近似為文件大小。又因?yàn)槊看?kb,故共需15簇。

從第10號(hào)開(kāi)始,形成一個(gè)簇鏈,直到FFFFFF0F結(jié)束。
FAT32數(shù)據(jù)恢復(fù)過(guò)程
將剛才的test.txt文件永久刪除。

找到文件目錄項(xiàng),修改對(duì)應(yīng)第一位信息,并由目錄項(xiàng)簇號(hào)信息及文件大小計(jì)算出首簇號(hào)為10,簇?cái)?shù)為15。

分別將FAT1和FAT2的信息進(jìn)行修改,從10號(hào)開(kāi)始填補(bǔ)簇鏈到15個(gè)簇被填滿,其中最后一個(gè)以FFFFFF0F結(jié)尾。

保存后發(fā)現(xiàn)文件已恢復(fù),內(nèi)容完整。

至此,F(xiàn)AT32文件恢復(fù)已完成。
NTFS
NTFS數(shù)據(jù)恢復(fù)過(guò)程
同樣,先在NTFS格式的E盤(pán)創(chuàng)建一個(gè)文本文檔,再使用shift+delete進(jìn)行刪除。

打開(kāi)$MFT元文件。

查找文件名test的位置(MFT文件名是unicode形式),找到對(duì)應(yīng)的MFT。


16H為00H說(shuō)明該文件被刪除,系統(tǒng)根據(jù)這個(gè)標(biāo)志來(lái)決定建立新文件時(shí)是否覆蓋這個(gè)MFT而創(chuàng)建自己的MFT。
再向下找到80H處,往后八個(gè)字節(jié)為01,則找到相對(duì)80H處30H的EE0D00即0DEE為文件大小,經(jīng)計(jì)算為3.48kb基本符合。再向后偏移10H,31表示往后一個(gè)字節(jié)01H為簇?cái)?shù)1,再后三個(gè)字節(jié)638002即28063H為首簇號(hào),換算成十進(jìn)制為163939。

選中$MFT元文件,根據(jù)剛才得到的簇號(hào)轉(zhuǎn)到文件數(shù)據(jù)存儲(chǔ)扇區(qū)。


將起始位置設(shè)為起始點(diǎn),根據(jù)文件大小0DEE算出數(shù)據(jù)結(jié)尾處轉(zhuǎn)到當(dāng)前位置偏移,再設(shè)為終止點(diǎn),即可選中所有數(shù)據(jù)。


選中數(shù)據(jù)選擇復(fù)制導(dǎo)入到新文件,我們選擇恢復(fù)到E盤(pán)(其實(shí)最好不應(yīng)選擇恢復(fù)到原文件盤(pán),但因無(wú)其他數(shù)據(jù),經(jīng)試驗(yàn)此次無(wú)影響),即可完成文件恢復(fù)。

使用記事本打開(kāi)發(fā)現(xiàn)數(shù)據(jù)已恢復(fù)無(wú)誤。

至此,NTFS文件刪除后恢復(fù)已完成。
以上便是兩種文件系統(tǒng)的數(shù)據(jù)恢復(fù)方法,細(xì)節(jié)之處及磁盤(pán)格式相關(guān)內(nèi)容之后再整理。
參考資料:
(NTFS部分)
如何使用WinHex恢復(fù)刪除的文件(1)
如何使用WinHex恢復(fù)刪除的文件(2)