国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于NTFS文件系統(tǒng)主文件表的擦除文件路徑返查

2013-05-10 09:51汪賢鋒黃茂成
關(guān)鍵詞:文件名回收站扇區(qū)

汪賢鋒,黃茂成

NTFS文件系統(tǒng)以其出色的安全性和穩(wěn)定性,已經(jīng)成為主流的文件系統(tǒng)。NTFS將分區(qū)中的所有數(shù)據(jù)都以文件的方式,記錄在主文件表(Main File Table,MFT)記錄中,每條MFT記錄都分配同樣大小的空間描述文件(夾)。每個(gè)文件(夾)都對(duì)應(yīng)一個(gè)或多個(gè)MFT記錄,文件(夾)的所有相關(guān)信息(如文件名、數(shù)據(jù)、大小等)都作為屬性登記中MFT記錄中,當(dāng)文件屬性信息(如數(shù)據(jù))超過(guò)MFT記錄分配空間大小,則在文件記錄中以非常駐屬性保留該屬性內(nèi)容的索引,否則以常駐屬性記錄該屬性內(nèi)容。NTFS文件系統(tǒng)的存儲(chǔ)組織結(jié)構(gòu)如圖1所示,其中MFT記錄在定位文件(夾)起到了重要的橋梁作用。

一、NTFS卷文件管理

(一)簇管理

NTFS以簇為基本單位分配回收存儲(chǔ)空間[1],與FAT結(jié)構(gòu)不同,NTFS卷(volume)從 0 扇區(qū)開始劃分簇,每簇為 1,2,4 或8個(gè)扇區(qū),根據(jù)分區(qū)的大小不同,最大值不超過(guò)8扇區(qū),格式化時(shí)可以以格式化參數(shù)的形式設(shè)定。而在FAT中,由于卷管理空間的限制,只能通過(guò)增加簇大小來(lái)管理大容量硬盤,較NTFS文件系統(tǒng),容易造成存儲(chǔ)空間的浪費(fèi)。NTFS簇大小,即每簇扇區(qū)數(shù)保存在BOOT扇區(qū) (0扇區(qū))。同時(shí),NTFS通過(guò)Bitmap文件記錄所有簇的使用情況,1個(gè)bit對(duì)應(yīng)一個(gè)簇,值為1表示已經(jīng)分配,為0表示未分配。FAT文件系統(tǒng)中的FAT表不僅記錄了數(shù)據(jù)簇的使用情況,還標(biāo)明了數(shù)據(jù)簇的鏈接關(guān)系。

NTFS使用邏輯簇號(hào)(logical cluster number,LCN)和虛擬簇號(hào)(virtual cluster number,VCN)來(lái)對(duì)簇進(jìn)行定位。LCN是對(duì)卷中所有簇頭到尾進(jìn)行簡(jiǎn)單編號(hào),VCN則是對(duì)屬于特定文件的簇從頭到尾進(jìn)行編號(hào),以便訪問(wèn)文件中的數(shù)據(jù),LCN是無(wú)符號(hào)整數(shù),而VCN則是帶符號(hào)整數(shù),VCN可以映射成LCN,由Data Runs數(shù)組完成這個(gè)映射。NTFS數(shù)據(jù)區(qū)管理不是采用鏈接存儲(chǔ),而是采用索引存儲(chǔ)[2],文件通過(guò)自己的Data Runs數(shù)據(jù)建立索引表,一個(gè)Run就是一個(gè)連續(xù)存儲(chǔ)塊,Data Runs數(shù)組由若干Run組成,以0x00結(jié)束。

每個(gè)Run包括3部分,即頭部,占用簇?cái)?shù),起始簇號(hào)。簇號(hào)用VCN,第一個(gè)VCN是相對(duì)于0簇。頭部占用1個(gè)字節(jié),存放占用簇?cái)?shù)和起始簇號(hào)的字節(jié)數(shù)根據(jù)頭部確定。如對(duì)于以下十六進(jìn)制數(shù)據(jù)表示的Data Runs數(shù)組為:

0x12 D4 38 04 00

其中,根據(jù)頭部0x12取其高4位可知1字節(jié)(值為隨后D4)表示占用簇?cái)?shù),取低4位可知2字節(jié)(值為3804),即表示0x0438簇開始的0xD4個(gè)簇。而隨后的0x00表示Data Runs數(shù)組已到數(shù)組尾部。

假設(shè)一個(gè)文件的存儲(chǔ)分布的Data Runs數(shù)組為:

0x12 D4 38 04 31 28 D0 49 01 21 CB FF 00

則分解成4個(gè)Run:

12 D4 38 04,31 28 D0 49 01,21 23 CB FF,00

即文件存儲(chǔ)在3個(gè)連續(xù)塊:

(1)Run 1:0x0438簇開始的0xD4個(gè)簇。

(2)Run 2:0x0149D0+0x0438=0x014E08簇開始的0x28個(gè)簇。

(3)Run 3:這里 VCN為 0xFFCB=-0x35,則與前面 Run的起始簇號(hào)累計(jì)為0x014E08-0x35=0x014DD3開始的0x23個(gè)簇,這里將VCN 0xFFCB換算成LCN,它相對(duì)于前一起始地址0x014E08。

(4)Run 4:0x00,Data Runs數(shù)組到達(dá)尾部。

由上可知,文件的存儲(chǔ)地址并不是完全依次連續(xù)增加的,而是依據(jù)數(shù)據(jù)簇的分配算法得出的。

(二)主文件表

NTFS卷上的任何事物都是文件,文件在卷上的位置都是通過(guò)主文件表(master file table,MFT)記錄來(lái)確定的,其組織結(jié)構(gòu)圖如圖1所示。MFT是一個(gè)對(duì)應(yīng)的數(shù)據(jù)庫(kù),由一系列的文件記錄組成,以下稱其為MFT記錄。卷中每一個(gè)文件都有一個(gè)MFT記錄 (對(duì)于大型文件還可能有多個(gè)MFT記錄與之對(duì)應(yīng)),同時(shí),MFT自身也有一個(gè)文件,也有其文件記錄。MFT的每個(gè)MFT記錄都有一個(gè)ID號(hào),這個(gè)ID號(hào)從0開始,以遞增的方式順序編號(hào)。MFT自身是NTFS系統(tǒng)的第一個(gè)文件$MFT,其開始簇號(hào)在BOOT扇區(qū)中保存,與其他23個(gè)系統(tǒng)文件,他們組成系統(tǒng)的元文件(Metafiles),其中根目錄占用ID號(hào)為5的文件記錄。用戶的文件MFT記錄ID號(hào)從24開始分配,用戶每添加一個(gè)文件ID號(hào)加1。

當(dāng)某個(gè)文件被刪除時(shí),其所對(duì)應(yīng)的MFT記錄由系統(tǒng)回收,該ID號(hào)記錄為空閑,同時(shí),再次添加文件時(shí),系統(tǒng)則優(yōu)先給該文件記錄分配ID號(hào)小的空位。

1 NTFS文件系統(tǒng)存儲(chǔ)結(jié)構(gòu)圖Fig.1 File storage structure in NTFS file system

文件記錄包含文件的所有信息,不同信息以不同屬性來(lái)表示,如文件名、文件時(shí)間標(biāo)記等都是屬性,文件的內(nèi)容也是一個(gè)屬性,每個(gè)屬性都有特定的特征碼。屬性數(shù)據(jù)較小時(shí)則存放在MFT記錄中,稱它們?yōu)槌qv屬性(resident attribute),否則MFT記錄中只會(huì)保存該屬性索引到外部的地址,以及索引區(qū)的大小,稱此類屬性為非常駐屬性(non-resident attribute),通過(guò)Data Runs來(lái)保存其存儲(chǔ)索引表。當(dāng)文件被放入回收站,且清空回收站時(shí),該文件的MFT記錄在文件系統(tǒng)中被標(biāo)明為空閑但不會(huì)被立即清除,其MFT記錄仍完整的保留,可以根據(jù)其MFT記錄的文件名屬性(0x30屬性)得到其完整文件名,返查其父目錄MFT記錄號(hào),然后向上逐級(jí)返查,直至根目錄,從而得到該文件包含文件路徑的完整文件名。同時(shí),該文件的MFT記錄中保持文件的數(shù)據(jù)屬性,通過(guò)其可以定位到文件的數(shù)據(jù)本身。而文件的路徑信息作為電子證據(jù)的一個(gè)重要組成部分,能提高電子證據(jù)的可采用性及證明力。

而在FAT文件系統(tǒng)只在目錄區(qū)保存了文件的首簇號(hào),需要通過(guò)FAT表的簇鏈接關(guān)系才能確定文件的全部位置。當(dāng)FAT文件系統(tǒng)中的文件被用戶放入回收站,并清空回收站時(shí),該文件的相應(yīng)占用簇在FAT表中被置為空閑,如果該文件的占用簇不連續(xù),則無(wú)法完整定位到該文件。同時(shí)在目錄區(qū)的目錄登記項(xiàng)的首字節(jié)被置為0xE5,而目錄項(xiàng)的前八個(gè)字節(jié)記錄的是其文件名,后三個(gè)字節(jié)為后綴名,對(duì)于文件夾,則其后綴名為空。對(duì)于長(zhǎng)文件名,F(xiàn)AT文件系統(tǒng)通過(guò)短文件名加長(zhǎng)文件名的方式,增加新的目錄項(xiàng)記錄長(zhǎng)文件名,解決長(zhǎng)文件名問(wèn)題。如果文件長(zhǎng)度為1,則其文件名丟失,而文件的目錄登記項(xiàng)只記錄文件的首簇,即文件大小,如果文件不是連續(xù)簇存放,則無(wú)法完整的恢復(fù)文件。如果兩個(gè)刪除文件名只有首字節(jié)不同,則其刪除后的目錄登記項(xiàng)中的文件名信息則完全相同,從而降低了電子證據(jù)的可采用性及證明力。

(三)卷文件遍歷及定位

電子取證中,為了保持文件的原始性,不能調(diào)用操作系統(tǒng)的文件操作命令,同時(shí)對(duì)于清空回收站的文件擦除,在操作系統(tǒng)的目錄視窗中已無(wú)法找到該文件。因此,應(yīng)該根據(jù)文件的存儲(chǔ)結(jié)構(gòu)直接訪問(wèn)相應(yīng)的物理扇區(qū),其文件遍歷及定位流程可以歸納為以下幾個(gè)步驟。

(1)由BOOT扇區(qū) (通常為0扇區(qū))的BPB結(jié)構(gòu)中得到$MFT的邏輯簇號(hào)(logical Cluster Number,LCN)定位到$MFT,進(jìn)行下一步。

(2)定位到ID號(hào)為5的MFT記錄,即根目錄MFT記錄,進(jìn)行下一步。

(3)如果該MFT記錄對(duì)應(yīng)文件,則根據(jù)其常駐屬性或非常駐屬性讀取文件內(nèi)容,轉(zhuǎn)至步驟(5);如果該MFT記錄對(duì)應(yīng)文件夾,則進(jìn)行下一步。

(4)根據(jù)INDEX頭部,讀取頭部信息,進(jìn)行下一步。

(5)定位至下一個(gè)目錄登記項(xiàng),如果無(wú)目錄登記項(xiàng),則結(jié)束。

(6)讀取目錄登記項(xiàng)內(nèi)容,根據(jù)其中的MFT號(hào)定位到該文件(夾)的MFT記錄,轉(zhuǎn)至步驟(3)。

其中,文件(夾)可能讀取多個(gè)MFT記錄,則聯(lián)合讀取MFT記錄中的常駐或非常駐屬性得到文件(夾)內(nèi)容。

二、NTFS卷文件返查

在NTFS卷中刪除一個(gè)文件,系統(tǒng)回收其MFT記錄,置該記錄ID號(hào)為空閑ID號(hào)。同時(shí),如果文件占用了數(shù)據(jù)區(qū),則其數(shù)據(jù)區(qū)所占用簇被系統(tǒng)回收,在Bitmap中對(duì)應(yīng)位置置0,標(biāo)明對(duì)應(yīng)簇為可以被系統(tǒng)重新分配,回收的MFT記錄和數(shù)據(jù)區(qū)可供系統(tǒng)再分配。而FAT文件系統(tǒng)中的文件刪除后,如果文件的存儲(chǔ)空間非連續(xù),恢復(fù)時(shí)很難確定文件的鏈接關(guān)系,而NTFS文件系統(tǒng)中的文件刪除后,如果數(shù)據(jù)區(qū)未被覆蓋,只要文件的MFT記錄還存在,可以根據(jù)其常駐或非常駐屬性,很容易由它確定文件數(shù)據(jù)的存儲(chǔ)位置,提高了數(shù)據(jù)恢復(fù)的準(zhǔn)確性。

(一)NTFS卷文件MFT記錄

NTFS文件系統(tǒng)給每個(gè)文件 (夾)分配固定大小 (一般為1024字節(jié),此值在BOOT扇區(qū)得到)存儲(chǔ)其對(duì)應(yīng)的MFT記錄。文件MFT記錄了文件的所有信息或信息外部索引,每種信息都作為屬性賦予不同的屬性特征號(hào)。文件MFT記錄由MFT記錄頭部及屬性集組成。MFT記錄頭部包含了MFT標(biāo)志(一定為FILE),第一個(gè)屬性的偏移地址(相對(duì)于MFT頭),記錄的實(shí)際長(zhǎng)度,記錄分配的大小等信息。

根據(jù)MFT頭部中的第一個(gè)屬性的偏移地址,可以讀取相應(yīng)的屬性,每個(gè)屬性中都包含不定長(zhǎng)屬性的長(zhǎng)度信息,從而定位和讀取下一個(gè)屬性。文件的MFT記錄中的屬性包括基本信息屬性,屬性列表屬性,文件名屬性,數(shù)據(jù)屬性,索引根屬性,索引分配屬性,Bitmap屬性等,可定義在如下的枚舉類型。

(二)MFT文件名屬性

在NTFS系統(tǒng)中,文件的MFT記錄的文件名屬性為0xA0屬性。該屬性第9個(gè)字節(jié)(前開始的8個(gè)字節(jié)為屬性類型和屬性總長(zhǎng)度)為非常駐標(biāo)志(0x00表示常駐屬性,0x01表示非常駐屬性),如果為常駐屬性標(biāo)志,則文件數(shù)據(jù)保存在MFT記錄的數(shù)據(jù)屬性(0x80屬性),如果為非常駐屬性,則文件數(shù)據(jù)通過(guò)MFT記錄數(shù)據(jù)屬性的Data Runs數(shù)組索引到到文件的數(shù)據(jù)。

由MFT記錄頭部開始讀取其第一個(gè)屬性的偏移,逐個(gè)搜索是否文件名屬性,即判斷屬性前四個(gè)字節(jié)是否為0x30,如果不是文件名屬性,則根據(jù)隨后的屬性長(zhǎng)度信息,跳至下一個(gè)屬性。當(dāng)搜尋到文件名屬性時(shí),其中包含了文件返查所需的重要數(shù)據(jù)。文件名屬性的包含了文件大小,文件屬性(如隱藏,壓縮等),文件創(chuàng)建時(shí)間,文件修改時(shí)間,父目錄的MFT記錄參考號(hào)等信息。而其中的父目錄的MFT記錄參考號(hào),是文件返查一個(gè)重要數(shù)據(jù)。

(三)擦除文件的文件路徑返查

對(duì)于計(jì)算機(jī)犯罪中的電子證據(jù),大多罪犯有相當(dāng)一部分采用的是清空回收站的方式刪除。在NTFS中,當(dāng)文件被放入回收站并清空回收站時(shí),如果未作其他的操作,此時(shí)系統(tǒng)所作的操作是將此文件的MFT號(hào)置為空閑,同時(shí)將文件所占數(shù)據(jù)簇標(biāo)志為空閑簇,該MFT記錄及空閑數(shù)據(jù)簇可被系統(tǒng)重分配。而該文件的MFT記錄及數(shù)據(jù)簇集中的內(nèi)容并未被擦除,這也是文件恢復(fù)和文件返查的可行性依據(jù)。

當(dāng)搜尋到擦除文件的MFT記錄,定位其文件名屬性,讀取其父目錄的MFT記錄參考號(hào),定位到父目錄的MFT記錄,向上逐級(jí)返查至根目錄即可得到擦除文件的完整路徑,具體步驟如下。

(1)定義返查路徑棧,進(jìn)行下一步。

(2)讀取MFT記錄的文件頭,搜索文件名屬性,進(jìn)行下一步。

(3)讀取文件名屬性中的文件名,將其壓入返查路徑棧,進(jìn)行下一步。

(4)讀取文件名屬性中的父目錄MFT記錄參考號(hào),讀取父目錄MFT記錄,轉(zhuǎn)至步驟(2)。

(5)將返查路徑棧中路徑記錄順序出棧,并以分隔符“”連接,返查結(jié)束。

經(jīng)過(guò)以上步驟,即可得到包含擦除文件的文件名和全路徑的完整文件名。

三、結(jié)語(yǔ)

NTFS以其優(yōu)越的安全性和穩(wěn)定性,已經(jīng)成為主流的操作系統(tǒng)。電子取證中的電子證據(jù)除了包含擦除文件數(shù)據(jù)本身,同時(shí),也包含文件路徑等文件的擦除痕跡。這些電子證據(jù)的擦除痕跡,對(duì)于電子證據(jù)的可采用性及證明力有了進(jìn)一步的提升。因此,對(duì)于電子證據(jù)擦除痕跡需要進(jìn)一步的全面研究,以提高其利用價(jià)值。

[1]黃步根.數(shù)據(jù)恢復(fù)與計(jì)算機(jī)取證[J].計(jì)算機(jī)安全,2006,(6):79-81

[2]黃步根.NTFS系統(tǒng)存儲(chǔ)介質(zhì)上文件操作痕跡分析[J].2007,33(23):281-282

[3]黃步根,劉建軍,張曉南.NTFS文件系統(tǒng)中的視頻數(shù)據(jù)恢復(fù)方法[J].計(jì)算機(jī)工程,2010,(2)

猜你喜歡
文件名回收站扇區(qū)
分階段調(diào)整增加扇區(qū)通行能力策略
能量回收站
右鍵調(diào)用多重更名更方便
Excel輕松提取文件名
神奇裁縫最省布
把我的秘密藏起來(lái)
Windows 10回收站問(wèn)題巧解決
U盤故障排除經(jīng)驗(yàn)談
基于貝葉斯估計(jì)的短時(shí)空域扇區(qū)交通流量預(yù)測(cè)
重建分區(qū)表與FAT32_DBR研究與實(shí)現(xiàn)