《NTFS文件系統(tǒng)解析.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《NTFS文件系統(tǒng)解析.ppt(53頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、NTFS文件系統(tǒng)解析,1、基本概念 元文件:NTFS包括幾個(gè)系統(tǒng)文件,從NTFS卷來(lái)看,它們都是隱藏的。文件系統(tǒng)用系統(tǒng)文件來(lái)存放元數(shù)據(jù)并實(shí)現(xiàn)文件系統(tǒng)。系統(tǒng)文件是用Format程序放在卷上的。 MFT 屬性:NTFS中所有與數(shù)據(jù)相關(guān)信息都稱之為“屬性”,甚至文件內(nèi)容也被稱為“數(shù)據(jù)屬性”。 NTFS與其他文件系統(tǒng)最大不同在于,大多數(shù)文件系統(tǒng)是對(duì)文件內(nèi)容進(jìn)行讀寫,而NTFS則是對(duì)包含文件內(nèi)容的屬性進(jìn)行讀寫,,,$MFT 主文件表(在DBR里3037表示。數(shù)值不是扇區(qū)號(hào),而是簇號(hào)。在看簇大小0D偏移,就是說(shuō):簇號(hào)X8=扇區(qū)數(shù)) $MFTMirr MFT的鏡像 $LOGFILE 日志文件,這個(gè)是刪不掉
2、的。(元文件不能被刪除,因?yàn)橄到y(tǒng)下不可訪問(wèn)) $volume 見(jiàn)文件,記錄號(hào),創(chuàng)建時(shí)間 $attrdef 屬性定義列表 $bitmap 位圖文件 $root 根目錄文件 $badclus 壞簇的列表,在格式化的時(shí)候,NTFS發(fā)現(xiàn)壞的簇會(huì)做標(biāo)記。防止系統(tǒng)訪問(wèn)他,或者讀取它。 $boot 引導(dǎo)文件 $quota 磁盤配額信息 $secure 安全文件 $upcase 大小寫字母的轉(zhuǎn)換 $extend metadata directry 擴(kuò)展元文件目錄 $ extend$reparse 解析文件 $ extend$usnjrnl 加密日志文件 $ extend$quota 配額管理文件 $ ex
3、tend$objid 對(duì)象ID文件,,NTFS的DBR NTFS的引導(dǎo)扇區(qū)也位于文件系統(tǒng)的0號(hào)扇區(qū),這是它與FAT文件系統(tǒng)在布局 上的唯一相同之處。 數(shù)據(jù)結(jié)構(gòu)如下圖,當(dāng)格式化一個(gè)NTFS卷時(shí),格式化程序分配開(kāi)始的16個(gè)扇區(qū)給引導(dǎo)扇區(qū)和自舉代碼。,,在NTFS卷上,BPB后面的數(shù)據(jù)字段構(gòu)成擴(kuò)展BPB。啟動(dòng)過(guò)程中,這些字段中的數(shù)據(jù)可以使NTLDR(NT loader程序)找到主文件表(MFT)。在NTFS卷上,MFT不會(huì)放在特定的預(yù)定義扇區(qū)上(和FAT16或FAT32不一樣),因此,如果MFT通常的位置有壞扇區(qū),它可以移動(dòng)。但是,如果數(shù)據(jù)遭到破壞,MFT無(wú)法定位,則Windows NT/200
4、0就認(rèn)為該卷未格式化。,,,,以上引導(dǎo)扇區(qū)最為關(guān)鍵的字節(jié)數(shù)是0B-0C(每扇區(qū)字節(jié)數(shù)) 0B-0C(每扇區(qū)字節(jié)數(shù)) 0D(每簇扇區(qū)數(shù))28-2F(文件系統(tǒng)扇區(qū)總和) 30-37(MFT起始簇號(hào))38-3F(MFT備份的起始簇號(hào)) 40(每MFT項(xiàng)大小)44(每個(gè)索引的簇?cái)?shù)),但數(shù)據(jù)發(fā)生不可預(yù)料的損壞時(shí),可以根據(jù)以上信息重建分區(qū)表,定位數(shù)據(jù)區(qū),恢復(fù)MFT,重建DBR,這些關(guān)鍵字節(jié)碼的用處不言而喻。,,$MFT 主文件表(在DBR里3037表示。數(shù)值不是扇區(qū)號(hào),而是簇號(hào)。在看簇大小0D偏移,就是說(shuō):簇號(hào)X8=扇區(qū)數(shù)) 跳轉(zhuǎn)到上邊的扇區(qū)數(shù),就是文件記錄。開(kāi)頭一定是File開(kāi)頭(46 49 4C
5、45) 這就是$MFT的開(kāi)始位置 。,,30屬性是6行半(就是文件名屬性$MFT)因?yàn)?MFT也是以文件形式存儲(chǔ)的,那么$MFT的第一個(gè)文件記錄就是他的本身。實(shí)際上$MFT是個(gè)數(shù)據(jù)庫(kù)。,,向后邊翻上兩個(gè)扇區(qū),就到了$MFTMirr MFT的鏡像 $MFT我們?cè)贒BR里也能看到他在什么地方。3037H的數(shù)值上體現(xiàn)) $MFTMirr我們?cè)贒BR里的383F 的數(shù)值上能體現(xiàn)出來(lái)。 鏡像應(yīng)該跟$MFT是一樣的,但是他跟FAT32不一樣,所以備份也不一定是完全一樣的。鏡像只是前4個(gè)元文件的文件記錄的備份。 1、 $MFT 2、 $MFTMirr 3、日志文件 4、卷標(biāo) 四個(gè)元文件之后,就沒(méi)有備份了。所
6、以向下搜索是搜索不到的,只有4個(gè),瀏覽文件,點(diǎn)擊WINHEX瀏覽文件 $mft和$mftmirr在系統(tǒng)下是看不到的,只能在這里看到。 $mft本身是一個(gè)文件大小會(huì)有變化,這里有32K $mftmirr只有4K,占用8個(gè)扇區(qū)。,MFT屬性,屬性的結(jié)構(gòu): 每個(gè)MFT項(xiàng)大小為1024字節(jié),分為兩部分,MFT頭和屬性列表。 屬性有許多類型,每種屬性都有自己的內(nèi)部結(jié)構(gòu):屬性頭和屬性內(nèi)容。由于屬性有常駐屬性和非常駐屬性之分,所以屬性頭也有差別,但不管是常駐還是非常駐,它們屬性頭的前16個(gè)字節(jié)是相同的結(jié)構(gòu)。(如下圖),,,,在這個(gè)MFT項(xiàng)中,0 x000 x37是MFT的頭部。后面為屬性列表。共有4個(gè)屬性,
7、前三個(gè)是常駐屬性,最后一個(gè)為非常駐屬性。深色部分則是每個(gè)屬性的屬性頭。 圖中可看出,前三個(gè)屬性(常駐)屬性頭一樣大小,最后一個(gè)要大一些。,NTFS將文件作為屬性/屬性值的集合來(lái)處理,這一點(diǎn)與其他文件系統(tǒng)不一樣。文件數(shù)據(jù)就是未命名屬性的值,其他文件屬性包括文件名、文件擁有者、文件時(shí)間標(biāo)記等。下圖顯示了一個(gè)用于小文件的MFT記錄,屬性頭,屬性頭主要用于說(shuō)明該屬性的類型、大小及名字,同時(shí)包含壓縮、加密等標(biāo)志。 常駐屬性的屬性頭,,,,非常駐屬性頭結(jié)構(gòu),,,常駐屬性等很小的屬性與其屬性頭一起存放在MFT中,內(nèi)容跟在屬性頭后面。 非常駐屬性則另外存儲(chǔ)在MFT以外的簇空間中,并在MFT中的屬性描述項(xiàng)中記錄
8、它的簇地址。,,大文件或大目錄的所有屬性,就不可能都常駐在MFT中。如果一個(gè)屬性(如文件數(shù)據(jù)屬性)太大而不能存放在只有1KB的MFT文件記錄中,那么NTFS將從MFT之外分配區(qū)域。這些區(qū)域通常稱為一個(gè)運(yùn)行(run)或一個(gè)盤區(qū)(extent),它們可用來(lái)存儲(chǔ)屬性值,如文件數(shù)據(jù)。如果以后屬性值又增加,那么NTFS將會(huì)再分配一個(gè)運(yùn)行,以便用來(lái)存儲(chǔ)額外的數(shù)據(jù)。值存儲(chǔ)在運(yùn)行中而不是在MFT文件記錄中的屬性稱為非常駐屬性(nonresident attribute)。NTFS決定了一個(gè)屬性是常駐還是非常駐的;而屬性值的位置對(duì)訪問(wèn)它的進(jìn)程而言是透明的。,,當(dāng)一個(gè)屬性為非常駐時(shí),如大文件的數(shù)據(jù),它的頭部包含了
9、NTFS需要在磁盤上定位該屬性值的有關(guān)信息。下圖顯示了一個(gè)存儲(chǔ)在兩個(gè)運(yùn)行中的非常駐屬性,,非常駐屬性被存儲(chǔ)在簇流中。簇流是一組連續(xù)的扇區(qū)。簇流用它的起始簇號(hào)和流長(zhǎng)度加以說(shuō)明。如,一個(gè)屬性分為3部分,第一部分存儲(chǔ)在簇號(hào)為30,31,32,33,34的簇中,則該簇流起始簇號(hào)為30,流長(zhǎng)度為5。第二部分存儲(chǔ)在66,67號(hào)中,則第二個(gè)簇流起始于簇66,長(zhǎng)度為2。第三部分存儲(chǔ)在3942號(hào)簇中,則第三個(gè)簇流起始于39號(hào)簇,流長(zhǎng)度為4。如圖:,,,,NTFS中對(duì)文件或文件的某一部分進(jìn)行位置描述時(shí)用兩種地址:LCN(邏輯簇號(hào))和VCN(虛擬簇號(hào))。通過(guò)VCN到LCN的映射來(lái)描述非常駐屬性流。 LCN是文件系統(tǒng)
10、的邏輯簇號(hào),VCN則是一個(gè)文件內(nèi)容的內(nèi)部編號(hào)。因此,屬性流中VCN的04號(hào)簇對(duì)應(yīng)于LCN的3034號(hào)簇,VCN的5,6號(hào)簇對(duì)應(yīng)于LCN的66,67號(hào)簇,VCN的710號(hào)簇對(duì)應(yīng)于LCN的3942號(hào)簇。 因此LCN與VCN的對(duì)應(yīng)關(guān)系及簇流列表中真正的記錄如圖:,,,常規(guī)屬性值及其含義,標(biāo)準(zhǔn)信息屬性0 x10,標(biāo)準(zhǔn)屬性($STANDARD_INFOMATION)的類型值為0 x10,它總是常駐屬性。它包含一個(gè)文件或目錄的基本元數(shù)據(jù),如時(shí)間、所有權(quán)和安全信息等。所有文件和目錄必須有這個(gè)屬性。,,,,,標(biāo)準(zhǔn)屬性實(shí)例,,,0 x000 x1F字節(jié)處32個(gè)字節(jié)分為4個(gè)8字節(jié)部分,分別為文件的建立時(shí)間、最后修
11、改時(shí)間、MFT改變時(shí)間和最后訪問(wèn)時(shí)間。 0 x200 x23處4個(gè)字節(jié)為標(biāo)志,這個(gè)文件的標(biāo)志為0 x22,則為“存檔、隱藏”,文件名屬性,文件名屬性($FILE_NAME)的類型值為0 x30。任何文件和目錄在它的MFT項(xiàng)中至少有一個(gè)文件名屬性。該屬性用于存儲(chǔ)文件名,還包含文件大小、時(shí)間等信息。,,,數(shù)據(jù)屬性,即($DATA,0 x80)。這個(gè)屬性存放文件的內(nèi)容。 常駐數(shù)據(jù)屬性,可以看到,常駐數(shù)據(jù)屬性的內(nèi)容直接跟著屬性頭之后,一起存儲(chǔ)在MFT中。,,,,,非常駐數(shù)據(jù)屬性,,一個(gè)簇流項(xiàng)合一分為以下三部分: 1、第一個(gè)字節(jié)為第一部分,分為高4bit和低4bit,其中低4bit說(shuō)明第二個(gè)部分的字節(jié)數(shù)
12、。高4bit說(shuō)明第三部分的字節(jié)數(shù) 2、第二部分從第二個(gè)字節(jié)開(kāi)始,長(zhǎng)度為第一部分的低4bit描述的字節(jié)數(shù),用以說(shuō)明簇流的長(zhǎng)度,即該簇流包含的簇?cái)?shù)。 3、第三部分跟著第二部分,長(zhǎng)度為第一部分高4bit描述的字節(jié)數(shù),用以說(shuō)明簇流起始簇號(hào)。,,可以看到,簇流起始位置為561055(0 x 08 8F 9F)號(hào)簇。簇流長(zhǎng)度為12(0 x0C)個(gè)簇,其他屬性,0 x60 卷名屬性($VOLUME_NAME)用來(lái)記錄卷名。最長(zhǎng)為127個(gè)unicode字符。 0 x90 索引根屬性($INDEX_ROOT)為實(shí)現(xiàn)B+樹(shù)設(shè)置的根節(jié)點(diǎn)。 0 xA0 索引分配屬性($INDEX_ALLOCATION)用于存放索引項(xiàng)
13、。索引分配屬性總是非常駐屬性,由一個(gè)個(gè)的索引記錄組成。索引記錄存儲(chǔ)在MFT之外的簇空間中,每個(gè)索引記錄有固定的大小,并包含一個(gè)分類樹(shù)中的節(jié)點(diǎn),大小通常為4096字節(jié)。,,0 xB0 位圖屬性($BITMAP)用于描述索引或$MFT的分配情況。對(duì)于索引,它用1bit描述索引的一個(gè)VCN,對(duì)于$MFT,用1bit描述一個(gè)MFT項(xiàng)的分配情況。 0 xC0 重解析點(diǎn)屬性 0 x100 安全屬性,NTFS文件存儲(chǔ)的定位,1、在G盤根目錄創(chuàng)建文件,,,,,2、打開(kāi)G盤,,,查看其DBR表,,,,將文件名另存為16進(jìn)制格式在winhex中打開(kāi),,找到G盤的MFT,,查找“測(cè)試文件”對(duì)應(yīng)的16進(jìn)制字串,,,,,解析這一部分的結(jié)構(gòu)可知:,1、該文件占用了6個(gè)簇 2、該文件起始位置 LCN為0 x 62 4F=25167(?扇區(qū)),,,,,定位并復(fù)制文件數(shù)據(jù),,,,,,,,,,請(qǐng)思考,為什么兩次操作后文件的實(shí)際大小不一致?,