陳培德,吳建平,王麗清
(云南大學(xué),a.云南省電子計(jì)算中心;b.云南省高校數(shù)字媒體技術(shù)重點(diǎn)實(shí)驗(yàn)室,云南 昆明 650223)
重建NTFS的DBR及分區(qū)表的研究與實(shí)現(xiàn)
陳培德a,b,吳建平a,b,王麗清a,b
(云南大學(xué),a.云南省電子計(jì)算中心;b.云南省高校數(shù)字媒體技術(shù)重點(diǎn)實(shí)驗(yàn)室,云南 昆明 650223)
通過(guò)對(duì)硬盤(pán)MBR(主引導(dǎo)記錄)分區(qū)表結(jié)構(gòu)、NTFS文件系統(tǒng)的DBR(DOS操作系統(tǒng)的引導(dǎo)區(qū))結(jié)構(gòu)以及NTFS文件系統(tǒng)整體布局的分析研究,以NTFS文件系統(tǒng)元文件$MFT、$MFTMirr和$Bitmap的80H屬性中的數(shù)據(jù)為依據(jù),該文提出了重建NTFS文件系統(tǒng)DBR及硬盤(pán)MBR分區(qū)表的基本思路與方法,解決了在較短的時(shí)間內(nèi)修復(fù)硬盤(pán)MBR分區(qū)表及NTFS文件系統(tǒng)的DBR并恢復(fù)NTFS文件系統(tǒng)中全部數(shù)據(jù)的問(wèn)題。實(shí)踐證明該方法不僅方便實(shí)用,而且快捷有效。
NTFS文件系統(tǒng);分區(qū)表;元文件$MFT;元文件$MFTMirr
隨著信息化建設(shè)的不斷推進(jìn)以及個(gè)人電腦的普及應(yīng)用,人們的日常生活和工作越來(lái)越離不開(kāi)電腦。人們的許多重要信息都存儲(chǔ)在電腦中,但是由于計(jì)算機(jī)病毒、斷電、誤操作、振動(dòng)等各種原因?qū)е码娔X出現(xiàn)這樣或那樣故障,從而使用電腦無(wú)法正常工作的現(xiàn)象時(shí)有發(fā)生。其中,有關(guān)電腦硬盤(pán)故障是電腦最常見(jiàn)的也是必須在較短時(shí)間內(nèi)需要解決的故障。筆者經(jīng)過(guò)長(zhǎng)期的研究,總結(jié)了重建NTFS文件系統(tǒng)DBR與MBR分區(qū)表的基本思路及方法。
作為目前主流的操作系統(tǒng)Windows,它能夠支持的分區(qū)結(jié)構(gòu)包括MBR磁盤(pán)分區(qū)、動(dòng)態(tài)磁盤(pán)分區(qū)和GPT磁盤(pán)分區(qū)。本文重點(diǎn)討論整個(gè)硬盤(pán)0扇區(qū)的MBR分區(qū),在MBR分區(qū)中,整個(gè)硬盤(pán)0扇區(qū)由主引導(dǎo)記錄、磁盤(pán)簽名、分區(qū)表和結(jié)束標(biāo)志4部分組成,其中,最重要的就是分區(qū)表。在硬盤(pán)0扇區(qū)中最多只能存放4個(gè)分區(qū)表[1]。每個(gè)分區(qū)表項(xiàng)長(zhǎng)度為16個(gè)字節(jié),分為6個(gè)部分,說(shuō)明如下:
1)引導(dǎo)標(biāo)志占1個(gè)字節(jié),其取值為0X00或0X80,如該分區(qū)不引操作系統(tǒng),則取值為0X00;
2)起始地址占3個(gè)字節(jié),由于目前操作系統(tǒng)對(duì)硬盤(pán)的存取方式為L(zhǎng)BA(即邏輯塊存取方式),這3個(gè)字節(jié)未定義;
3)分區(qū)標(biāo)志占1個(gè)字節(jié),NTFS文件系統(tǒng)為0X07;
4)結(jié)束地址占3個(gè)字節(jié),由于目前操作系統(tǒng)對(duì)硬盤(pán)的存取方式為L(zhǎng)BA(即邏輯塊存取方式),這3個(gè)字節(jié)未定義;
5)相對(duì)扇區(qū)占4個(gè)字節(jié),即DBR所在整個(gè)硬盤(pán)的扇區(qū)位置;
6)總扇區(qū)數(shù)占有4個(gè)字節(jié),即分區(qū)所占扇區(qū)總數(shù),如果分區(qū)為NTFS文件系統(tǒng),總扇區(qū)數(shù)比NTFS文件系統(tǒng)DBR中的總扇區(qū)多1個(gè)扇區(qū)。
例如,某硬盤(pán)0扇區(qū)存放的分區(qū)表為“00 02 03 00 07 FE 3F 3E 80 00 00 00 00 88 0F 00”:在該硬盤(pán)中,只有一個(gè)MBR分區(qū),分區(qū)標(biāo)志為0X07,所對(duì)應(yīng)的文件系統(tǒng)為NTFS;相對(duì)扇區(qū)為128(在分區(qū)表中的存儲(chǔ)形式為80 00 00 00);總扇區(qū)數(shù)為1 017 856(在分區(qū)表中的存儲(chǔ)形式為00 88 0F 00)。注意,MBR分區(qū)及DBR所存儲(chǔ)的數(shù)據(jù)均采用小頭序,即低字節(jié)在前、高字節(jié)在后。所以,NTFS文件系統(tǒng)的DBR在128號(hào)扇區(qū),NTFS文件系統(tǒng)的總扇區(qū)數(shù)為1 017 855(在DBR中的存儲(chǔ)形式為FF 87 0F 00 00 00 00 00,DBR中總扇區(qū)數(shù)比分區(qū)表的總扇區(qū)數(shù)少1個(gè)扇區(qū),總扇區(qū)數(shù)占8個(gè)字節(jié))。
從整體結(jié)構(gòu)上看,NTFS文件系統(tǒng)由元文件、用戶(hù)文件以及數(shù)據(jù)組成。NTFS系統(tǒng)在創(chuàng)建時(shí),會(huì)將一些重要的系統(tǒng)信息以文件的形式進(jìn)行存儲(chǔ),存儲(chǔ)這些重要信息所對(duì)應(yīng)的文件就是元文件,元文件是NTFS文件系統(tǒng)最重要的組成部分,NTFS文件系統(tǒng)的總體布局如圖1所示[2]。
圖1 某NTFS文件系統(tǒng)的總體布局
從圖1可知,NTFS的DBR位于NTFS卷的0扇區(qū),占一個(gè)扇區(qū),在卷的最后一個(gè)扇區(qū)存儲(chǔ)著DBR的備份,該DBR備份不屬于NTFS文件系統(tǒng)。NTFS的元文件是分散地存儲(chǔ)在邏輯盤(pán)(或者卷)中,整個(gè)NTFS文件系統(tǒng)中是以簇為單位來(lái)分配磁盤(pán)空間的。而在分區(qū)時(shí),總扇區(qū)數(shù)不一定是簇的倍數(shù),因此有可能會(huì)出現(xiàn)剩余扇區(qū),剩余扇區(qū)一般大于或等于一個(gè)扇區(qū)而小于一個(gè)簇(即最后不能夠成一個(gè)簇的扇區(qū))。在NTFS中,有關(guān)簇號(hào)的指針以數(shù)據(jù)運(yùn)行列表的形式存儲(chǔ)在元文件$MFT記錄中。
DBR是NTFS文件系統(tǒng)元文件$Boot的重要組成部分,占一個(gè)扇區(qū)的位置,從NTFS的分區(qū)表可以計(jì)算出DBR在整個(gè)物理盤(pán)中的位置,DBR完成定義分區(qū)參數(shù)和引導(dǎo)系統(tǒng)的作用,NTFS的DBR定義[2]如表1所示。
表1 NTFS文件系統(tǒng)中DBR的結(jié)構(gòu)
表2 扇區(qū)數(shù)/簇、$MFT記錄大小與索引節(jié)點(diǎn)大小關(guān)系對(duì)應(yīng)表
本文經(jīng)過(guò)大量的實(shí)驗(yàn),發(fā)現(xiàn)NTFS文件系統(tǒng)中每個(gè)簇的扇區(qū)數(shù)、元文件$MFT記錄大小與每個(gè)索引結(jié)點(diǎn)大小對(duì)應(yīng)關(guān)系如表2所示。
重建NTFS文件系統(tǒng)的DBR所需計(jì)算的參數(shù)為“每個(gè)簇的扇區(qū)數(shù)”“扇區(qū)總數(shù)”“元文件$MFT的起始簇號(hào)”“元文件$MFTMirr的起始簇號(hào)”“每個(gè)$MFT記錄大小的描述”和“每個(gè)索引結(jié)點(diǎn)大小的描述”,其他參數(shù)可以使用同一版本的NTFS文件系統(tǒng)中的DBR參數(shù)。
當(dāng)分區(qū)表被破壞后,在資源管理器中無(wú)法看到盤(pán)符,使用計(jì)算機(jī)管理中的磁盤(pán)管理查看時(shí),出現(xiàn)“未分配”的提示。
如果分區(qū)表完好,而只有NTFS的DBR被破壞,在資源管理器中可以看到盤(pán)符,但當(dāng)單擊該盤(pán)符時(shí),出現(xiàn)“磁盤(pán)未格式化”的提示。
NTFS文件系統(tǒng)的DBR被破壞要分以下3種情況考慮。
1)DBR被破壞,分區(qū)表及NTFS的DBR的備份完好,只需要恢復(fù)NTFS的DBR。
2)分區(qū)表完好,NTFS的DBR和DBR的備份均被破壞需要恢復(fù)。
3)分區(qū)表、NTFS的DBR及DBR的備份均被破壞,需要恢復(fù)分區(qū)表及DBR及DBR的備份。
對(duì)于情況1),重建DBR的基本思路是通過(guò)分區(qū)表確定DBR所在扇區(qū),通過(guò)查找的方式找到DBR的備份;將DBR的備份復(fù)制到DBR所在扇區(qū)即可。
對(duì)于情況2),重建DBR的基本思路是通過(guò)分區(qū)表確定DBR所在扇區(qū),通過(guò)查找的方式找到元文件$MFT,通過(guò)元文件$MFT知道元文件$MFT和元文件$MFTMirr所在簇號(hào),通過(guò)元文件$MFT的80H屬性計(jì)算出每個(gè)簇的扇區(qū)數(shù),通過(guò)表2知道$MFT記錄大小和索引結(jié)點(diǎn)大小,通過(guò)分區(qū)表可以計(jì)算出NTFS文件系統(tǒng)中總扇區(qū)數(shù);將同一版本的NTFS文件系統(tǒng)的DBR復(fù)制到DBR所在扇區(qū),將DBR的參數(shù)修改為所計(jì)算出的參數(shù)即可。
本文重點(diǎn)討論情況3),由于分區(qū)表被破壞,無(wú)法從分區(qū)表中得到NTFS文件系統(tǒng)中的總扇區(qū)數(shù),也無(wú)法確定DBR所在扇區(qū)。
下面以實(shí)例的方式討論重建NTFS文件系統(tǒng)DBR基本思路。
1)使用Winhex軟件菜單欄上的工具→打開(kāi)物理磁盤(pán)功能打開(kāi)該硬盤(pán)。
2)查找元文件$MFT,在整個(gè)硬盤(pán)339 412扇區(qū)找到,元文件$MFT的80H屬性如圖2所示,元文件$MFT的分配大小為25 952 256字節(jié)(存儲(chǔ)形式為00 00 8C 01 00 00 00 00);從數(shù)據(jù)運(yùn)行列表可知,元文件$MFT的開(kāi)始簇號(hào)為848 21(存儲(chǔ)形式為55 4B 01),所占簇?cái)?shù)為12 672(存儲(chǔ)形式為80 31)。所以,每個(gè)簇的扇區(qū)數(shù)=元文件$MFT的分配大小÷所占簇?cái)?shù)÷512字節(jié)/扇區(qū)=25 952 256字節(jié)÷12672簇÷512字節(jié)/扇區(qū)=4扇區(qū)/簇。
圖2 元文件$MFT的記錄
3)通過(guò)表2可得每個(gè)$MFT記錄的大小為1 024字節(jié),在DBR中的存儲(chǔ)形式為F6;每個(gè)索引結(jié)點(diǎn)的大小為2個(gè)簇,在DBR中的存儲(chǔ)形式為02。
4)查找元文件$MFTMrirr,在144扇區(qū)找到,將光標(biāo)移動(dòng)到146扇區(qū),元文件$MFTMirr的80H屬性的數(shù)據(jù)運(yùn)行列表為“11 02 04”。所以,元文件$MFTMirr的開(kāi)始簇號(hào)為4(存儲(chǔ)形式為04),所占簇?cái)?shù)為2(存儲(chǔ)形式為02)。
5)查找元文件$Bitmap,在整個(gè)硬盤(pán)的339 424扇區(qū)找到,從元文件$Bitmap的80H屬性可知,元文件$Bitmap所占空間為31 808字節(jié)(注:在元文件$Bitmap中的存儲(chǔ)式為40 7C 00 00 00 00 00 00),由于元文件$Bitmap中每1位表示一個(gè)簇的狀態(tài),每個(gè)字節(jié)為8位,在該NTFS文件系統(tǒng)中每個(gè)簇為4個(gè)扇區(qū)。所以,分區(qū)表中該NTFS文件系統(tǒng)所占扇區(qū)=元文件$Bitmap所占空間× 8位/字節(jié)×每個(gè)簇的扇區(qū)數(shù)×1個(gè)簇/位=318 08×8× 4×1=1 017 856。因此,DBR的總扇區(qū)數(shù)=1 017 855。
6)由于元文件$MFTMirr在整個(gè)硬盤(pán)的第144扇區(qū),所對(duì)應(yīng)的簇號(hào)為4,而NTFS文件系統(tǒng)的DBR在0號(hào)簇,每個(gè)簇的扇區(qū)數(shù)為4,由此可以計(jì)算出NTFS文件系統(tǒng)的DBR所在的0號(hào)簇也就是整個(gè)硬盤(pán)的128號(hào)扇區(qū)。
7)綜合步驟2)~步驟6),所計(jì)算出的NTFS文件系統(tǒng)的DBR參數(shù)為每個(gè)簇的扇區(qū)數(shù)為4,扇區(qū)總數(shù)為1 017 855,$MFT的起始簇號(hào)為84 821,$MFTMirr的起始簇號(hào)為4,每個(gè)$MFT記錄大小為1 024字節(jié),每個(gè)索引結(jié)點(diǎn)大小為2個(gè)簇。
8)將數(shù)據(jù)轉(zhuǎn)換成在DBR中的存儲(chǔ)形式如表3所示。
表3 所計(jì)算的DBR參數(shù)的存儲(chǔ)形式
9)將同一版本NTFS的DBR復(fù)制到128號(hào)扇區(qū),并修改DBR的參數(shù)后存盤(pán),如圖3所示,至此NTFS的DBR已經(jīng)恢復(fù)完成。
圖3 修改的DBR參數(shù)
重建NTFS文件系統(tǒng)MBR分區(qū)表的基本思路如下:
1)需要知道NTFS文件系統(tǒng)DBR所在扇區(qū);
2)需要知道NTFS文件系統(tǒng)的總扇區(qū)數(shù)。
從圖3可知,NTFS文件系統(tǒng)的DBR在整個(gè)硬盤(pán)的128號(hào)扇區(qū),在分區(qū)表中的存儲(chǔ)形式為80 00 00 00;而總扇區(qū)數(shù)為1 017 855,而分區(qū)表中的總扇區(qū)數(shù)要比DBR的總扇區(qū)數(shù)多1個(gè)扇區(qū),所以分區(qū)表中的總扇區(qū)數(shù)為1017 856,在分區(qū)表中的存儲(chǔ)形式為00 88 0F 00。由于目前硬盤(pán)的存儲(chǔ)形式均為L(zhǎng)BA,所以起始地址和結(jié)束地址均未定義,可以為任意值。NTFS文件系統(tǒng)的分區(qū)標(biāo)志為0X07,由于此硬盤(pán)不是引導(dǎo)盤(pán),所以引導(dǎo)標(biāo)志為
00。由此可以計(jì)算出NTFS文件系統(tǒng)的分區(qū)為:
將該值填入到整個(gè)硬盤(pán)的0扇區(qū)偏移地址0X01BE~0X01CD處后,存盤(pán)并退出Winhex。重新啟動(dòng)Windows操作系統(tǒng)后,在資源管理器中即可看該硬盤(pán)的盤(pán)符,打開(kāi)該硬盤(pán)即可看到恢復(fù)出來(lái)的文件。
針對(duì)NTFS文件系統(tǒng)分區(qū)表及DBR同時(shí)被破壞的情況,通過(guò)分析NTFS文件系統(tǒng)的結(jié)構(gòu)、根據(jù)元文件$MFT、$MFTMirr、$Bitmap的80H屬性,提出了重建NTFS文件系統(tǒng)DBR及分區(qū)表的基本思路與方法,通過(guò)實(shí)踐證明,該方法方便快捷、簡(jiǎn)單實(shí)用。用戶(hù)可以通過(guò)資源管理器中看到所恢復(fù)出來(lái)的全部數(shù)據(jù)。
[1]張鐘澍,陳代軍,李新萌.修復(fù)和維護(hù)你的硬盤(pán)[M].北京:北京希望電子出版社,2002:44.
[2]劉偉.數(shù)據(jù)恢復(fù)技術(shù)深度揭秘[M].北京:電子工業(yè)出版社,2010:280-281.
[3]馬林.數(shù)據(jù)重現(xiàn)——文件系統(tǒng)原理精解與數(shù)據(jù)恢復(fù)最佳實(shí)踐[M].北京:清華大學(xué)出版社,2009:178.
[4]汪中夏,張京生,劉偉.RAID數(shù)據(jù)恢復(fù)技術(shù)揭秘[M].北京:清華大學(xué)出版社,2010:165.
[5]戴士劍,涂彥暉.數(shù)據(jù)恢復(fù)技術(shù)[M].北京:電子工業(yè)出版社,2005:226.
[6]劉乃琦,郭建東,張可.系統(tǒng)與數(shù)據(jù)恢復(fù)技術(shù)[M].成都:電子科技大學(xué)出版社.2008:77.
[7]IVENS K,GARDINIER K.Windows 2000:The complete reference 2001[M].Beijing:China Machine Press.2001.
[8]SOLOMON D A.Inside Windows NT[M].2nd ed.Published by arrangement with the original publisher,Microsoft Press,a division of Microsoft Corporation.1998.
[9]LSOFT TECHNOLOGIES NTFS optimization[EB/OL].[2015-08-12].http://www.ntfs.com/ntfs_optimization.htm.2010.
[10]ALEX IONESCS.NTFS on-disk structure:Visual basic NTFS programmer's guide[EB/OL].[2015-06-11].http://www.alex-ionescu.com.
[11]SEAN DAILY.Optimizing NTFS.[EB/OL].[2015-06-11].http://technet.microsoft.com/en-us/library.
Research and Implementation for Rebuilding DBR in NTFS File System and the Partition Table
CHEN Peide,WU Jianping,WANG Liqing
(a.Yunnan Provincial Electronic Computing Center,b.Digital Media Technology
Key Laboratory of Universities in Yunnan Province,Yunnan University,Kunming 650223,China)
By analyzing the partition table of hard disk main boot record(MBR),DBR(boot area in DOS operating system)structure of the NTFS file system and the whole layout of NTFS file system,and based on NTFS file system metafile$MFT,$MFTMirr and 80H attribute data in the metafile$Bitmap,this paper bring forward the basic idea and method to rebuild the NTFS File System DBR and hard disk MBR partition table,and solve the problem of repairing the partition table in the hard disk and DBR in the NTFS File System,and recovering all data in NTFS File System in a short time.Practice has proved that the method is not only convenient and practical,but also fast and effective.
NTFS file system;the partition table;metafile $ MFT;metafile $MFTMirr
TP311.12
A
10.3969/j.issn.1672-4550.2016.06.016
2014-12-29;修改日期:2015-10-15
云南省高校數(shù)字媒體技術(shù)重點(diǎn)實(shí)驗(yàn)室2014年度資助項(xiàng)目(2014KFKT001)。
陳培德(1966-),男,工程師,主要從事文件系統(tǒng)與數(shù)據(jù)恢復(fù)技術(shù)方面的工作。
實(shí)驗(yàn)科學(xué)與技術(shù)2016年6期