王曉東 山東信息職業(yè)技術(shù)學(xué)院電子與通信系 楊梅 濰坊中學(xué)
隨著信息技術(shù)的應(yīng)用,數(shù)據(jù)的安全性問題越來越凸顯?,F(xiàn)代人在使用計算機時用得最多的操作系統(tǒng)是Windows,該系統(tǒng)有FAT32和NTFS兩種文件系統(tǒng)。通常我們在對數(shù)據(jù)誤刪除后,使用數(shù)據(jù)恢復(fù)軟件恢復(fù)后的效果不好,原因是這些數(shù)據(jù)文件是以碎片的形式存儲的。只有找到文件的碎片并重組碎片,才能真正恢復(fù)文件。
文件在存儲時如果占用的簇空間是連續(xù)的,就不會有碎片。反之,如果占用的簇空間是離散的,簇之間插入了其他的文件內(nèi)容,該文件的存儲就是碎片文件。
文件碎片的產(chǎn)生與操作系統(tǒng)采用的分配策略有關(guān),Windows操作系統(tǒng)采用三種分配策略。
(1)第一可用分配策略
如果一個文件占用多個簇空間,當(dāng)為它分配完一個可用簇繼續(xù)分配時,操作系統(tǒng)會回到整個數(shù)據(jù)區(qū)的開始處為文件匹配可用簇,這種策略比較容易出現(xiàn)文件碎片。
例如一個文件要占用3個簇空間,假設(shè)數(shù)據(jù)區(qū)前16個簇中1-10、13號簇已經(jīng)被占用,14號簇開始往后都空閑,系統(tǒng)給文件的分配策略為:系統(tǒng)從數(shù)據(jù)區(qū)的第一個簇開始搜索空閑簇,找到11號空閑簇分配給文件,系統(tǒng)又回到1號簇開始搜索空閑簇,正好此時8號簇的內(nèi)容被刪除,系統(tǒng)就會把8號簇作為第一個未使用的簇分配給文件。
圖1 第一可用分配策略
(2)下一分配策略
為文件分配了11號簇后,操作系統(tǒng)不會回到數(shù)據(jù)區(qū)的開始處搜索,而是繼續(xù)向后搜索空閑簇。對于上面的例子,該策略分配后的結(jié)果是11、12、14。
(3)最佳分配策略
操作系統(tǒng)在搜索簇時,盡可能找到一整塊連續(xù)的簇來存儲文件,這樣不容易產(chǎn)生文件碎片,如果沒有連續(xù)的簇可分配,再使用其他分配策略,該策略分配后的結(jié)果是14、15、16。
(1)文件分配時產(chǎn)生
無論采用哪種文件分配策略,文件在存儲時都會產(chǎn)生碎片。尤其是前兩種分配策略最容易產(chǎn)生,當(dāng)前常用的Windows7、Windows10操作系統(tǒng)都是采用第二種分配策略。
(2)文件被編輯時產(chǎn)生
文件本身在最初創(chuàng)建好后是連續(xù)存放的,但是隨著使用,需要經(jīng)常對它進行編輯,也就意味著要反復(fù)的給它分配和釋放空閑簇,不斷的存刪的過程很容易產(chǎn)生文件碎片。
文件被刪除后,文件的目錄項被標(biāo)記為未使用狀態(tài),仍然可以從目錄項中找到文件的起始簇號以及文件的大小。體現(xiàn)文件存儲情況的FAT表簇鏈也會被清空,這樣就無法獲取除首簇外其它簇所占用的情況。
恢復(fù)文件思路:如果文件存儲時有碎片,提取出來的文件會不正確,要恢復(fù)文件還需知道簇的占用情況,但此時簇鏈已經(jīng)被清空??紤]到文件被刪除后,雖然文件占用的FAT表項被清空,但該文件周圍其他文件的占用的表項號沒有清空,根據(jù)FAT文件系統(tǒng)數(shù)據(jù)區(qū)是由FAT表來管理的,F(xiàn)AT表中每一個表項號都對應(yīng)于一個簇號,我們可以得到恢復(fù)思路,就是從該文件占用的第一簇簇號對用的FAT表項號開始,搜索未分配狀態(tài)的FAT表項號,根據(jù)文件大小計算出要搜索的表項號數(shù)量,然后到數(shù)據(jù)區(qū)找到對應(yīng)的簇號,從而正確提取出文件。
舉例說明恢復(fù)方法。文件“zhongguo.doc”是一個有碎片的文件,現(xiàn)被徹底刪除,文件有三個碎片。恢復(fù)的操作如下:打開winhex軟件(Windows系統(tǒng)下十六進制查看器),根據(jù)文件名zhongguo定位到文件的目錄項,從目錄項中的讀出文件的起始簇號39,讀出文件的大小算出占用的簇數(shù)是11。因為文件被刪除后FAT表簇鏈被清空,從39號表項開始搜索11個空白表項。文件的存儲單元是簇,實際存儲最小單位為扇區(qū),提取文件內(nèi)容時還要轉(zhuǎn)化為扇區(qū)操作,公式為:簇起始扇區(qū)號=保留扇區(qū)+FAT表大小扇區(qū)*FAT表個數(shù)+(該簇號-2)*該簇扇區(qū)數(shù)。最后根據(jù)提取的碎片內(nèi)容重組文件。
文件被刪除后,文件的的MFT記錄中標(biāo)志位改變?yōu)槲词褂脿顟B(tài)00(偏移16、17處),目錄中文件的索引項被清除。但是最關(guān)鍵的是,存放該文件的文件名的30屬性和存放文件起始簇號、大小的80屬性沒有被清空。
恢復(fù)文件的思路:如果文件有碎片,得出文件名字的十六進制形式(NTFS文件系統(tǒng)使用的是UNIDODE碼),根據(jù)此值,定位到文件的MFT記錄,分析80屬性的數(shù)據(jù)運行,計算出每塊碎片文件的起始LCN號及大小,計算時注意,從第二塊碎片文件開始,它的起始LCN號是相對于前一塊碎片文件的起始LCN號的偏移量進行計算的,最后將提取出的碎片文件重組。
舉例說明恢復(fù)方法。文件“gongyuan.jpg”是一個有碎片的文件,現(xiàn)被徹底刪除?;謴?fù)的操作如下:使用winhex先得出文件名的unicode碼67006F006E0067007900750061006E00,依據(jù)該碼搜索到文件的MFT記錄,在文件的MFT記錄中定位到80屬性,該屬性是非常駐屬性,它的數(shù)據(jù)運行中存儲的是文件在數(shù)據(jù)區(qū)中簇的占用情況,數(shù)據(jù)運行為316A70FD01 2154AAD2 3101602B01(見圖2)。根據(jù)數(shù)據(jù)運行計算三塊碎片文件的起始簇號和塊大小。注意碎片文件的起始簇號是相對于前一塊碎片的起始簇號而言的。
表1 碎片文件的存儲分布
圖2 文件的MFT記錄
本文針對windows系統(tǒng)下具有碎片的文件被刪除,分別給出了在FAT32和NTFS文件系統(tǒng)下的恢復(fù)的方法,在實踐中具有良好效果。