陳培德,吳建平,王麗清
(云南大學(xué),a.云南省電子計算中心;b.云南省高校數(shù)字媒體技術(shù)重點實驗室,云南 昆明 650223)
重建NTFS的DBR及分區(qū)表的研究與實現(xiàn)
陳培德a,b,吳建平a,b,王麗清a,b
(云南大學(xué),a.云南省電子計算中心;b.云南省高校數(shù)字媒體技術(shù)重點實驗室,云南 昆明 650223)
通過對硬盤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及硬盤MBR分區(qū)表的基本思路與方法,解決了在較短的時間內(nèi)修復(fù)硬盤MBR分區(qū)表及NTFS文件系統(tǒng)的DBR并恢復(fù)NTFS文件系統(tǒng)中全部數(shù)據(jù)的問題。實踐證明該方法不僅方便實用,而且快捷有效。
NTFS文件系統(tǒng);分區(qū)表;元文件$MFT;元文件$MFTMirr
隨著信息化建設(shè)的不斷推進(jìn)以及個人電腦的普及應(yīng)用,人們的日常生活和工作越來越離不開電腦。人們的許多重要信息都存儲在電腦中,但是由于計算機病毒、斷電、誤操作、振動等各種原因?qū)е码娔X出現(xiàn)這樣或那樣故障,從而使用電腦無法正常工作的現(xiàn)象時有發(fā)生。其中,有關(guān)電腦硬盤故障是電腦最常見的也是必須在較短時間內(nèi)需要解決的故障。筆者經(jīng)過長期的研究,總結(jié)了重建NTFS文件系統(tǒng)DBR與MBR分區(qū)表的基本思路及方法。
作為目前主流的操作系統(tǒng)Windows,它能夠支持的分區(qū)結(jié)構(gòu)包括MBR磁盤分區(qū)、動態(tài)磁盤分區(qū)和GPT磁盤分區(qū)。本文重點討論整個硬盤0扇區(qū)的MBR分區(qū),在MBR分區(qū)中,整個硬盤0扇區(qū)由主引導(dǎo)記錄、磁盤簽名、分區(qū)表和結(jié)束標(biāo)志4部分組成,其中,最重要的就是分區(qū)表。在硬盤0扇區(qū)中最多只能存放4個分區(qū)表[1]。每個分區(qū)表項長度為16個字節(jié),分為6個部分,說明如下:
1)引導(dǎo)標(biāo)志占1個字節(jié),其取值為0X00或0X80,如該分區(qū)不引操作系統(tǒng),則取值為0X00;
2)起始地址占3個字節(jié),由于目前操作系統(tǒng)對硬盤的存取方式為LBA(即邏輯塊存取方式),這3個字節(jié)未定義;
3)分區(qū)標(biāo)志占1個字節(jié),NTFS文件系統(tǒng)為0X07;
4)結(jié)束地址占3個字節(jié),由于目前操作系統(tǒng)對硬盤的存取方式為LBA(即邏輯塊存取方式),這3個字節(jié)未定義;
5)相對扇區(qū)占4個字節(jié),即DBR所在整個硬盤的扇區(qū)位置;
6)總扇區(qū)數(shù)占有4個字節(jié),即分區(qū)所占扇區(qū)總數(shù),如果分區(qū)為NTFS文件系統(tǒng),總扇區(qū)數(shù)比NTFS文件系統(tǒng)DBR中的總扇區(qū)多1個扇區(qū)。
例如,某硬盤0扇區(qū)存放的分區(qū)表為“00 02 03 00 07 FE 3F 3E 80 00 00 00 00 88 0F 00”:在該硬盤中,只有一個MBR分區(qū),分區(qū)標(biāo)志為0X07,所對應(yīng)的文件系統(tǒng)為NTFS;相對扇區(qū)為128(在分區(qū)表中的存儲形式為80 00 00 00);總扇區(qū)數(shù)為1 017 856(在分區(qū)表中的存儲形式為00 88 0F 00)。注意,MBR分區(qū)及DBR所存儲的數(shù)據(jù)均采用小頭序,即低字節(jié)在前、高字節(jié)在后。所以,NTFS文件系統(tǒng)的DBR在128號扇區(qū),NTFS文件系統(tǒng)的總扇區(qū)數(shù)為1 017 855(在DBR中的存儲形式為FF 87 0F 00 00 00 00 00,DBR中總扇區(qū)數(shù)比分區(qū)表的總扇區(qū)數(shù)少1個扇區(qū),總扇區(qū)數(shù)占8個字節(jié))。
從整體結(jié)構(gòu)上看,NTFS文件系統(tǒng)由元文件、用戶文件以及數(shù)據(jù)組成。NTFS系統(tǒng)在創(chuàng)建時,會將一些重要的系統(tǒng)信息以文件的形式進(jìn)行存儲,存儲這些重要信息所對應(yīng)的文件就是元文件,元文件是NTFS文件系統(tǒng)最重要的組成部分,NTFS文件系統(tǒng)的總體布局如圖1所示[2]。
圖1 某NTFS文件系統(tǒng)的總體布局
從圖1可知,NTFS的DBR位于NTFS卷的0扇區(qū),占一個扇區(qū),在卷的最后一個扇區(qū)存儲著DBR的備份,該DBR備份不屬于NTFS文件系統(tǒng)。NTFS的元文件是分散地存儲在邏輯盤(或者卷)中,整個NTFS文件系統(tǒng)中是以簇為單位來分配磁盤空間的。而在分區(qū)時,總扇區(qū)數(shù)不一定是簇的倍數(shù),因此有可能會出現(xiàn)剩余扇區(qū),剩余扇區(qū)一般大于或等于一個扇區(qū)而小于一個簇(即最后不能夠成一個簇的扇區(qū))。在NTFS中,有關(guān)簇號的指針以數(shù)據(jù)運行列表的形式存儲在元文件$MFT記錄中。
DBR是NTFS文件系統(tǒng)元文件$Boot的重要組成部分,占一個扇區(qū)的位置,從NTFS的分區(qū)表可以計算出DBR在整個物理盤中的位置,DBR完成定義分區(qū)參數(shù)和引導(dǎo)系統(tǒng)的作用,NTFS的DBR定義[2]如表1所示。
表1 NTFS文件系統(tǒng)中DBR的結(jié)構(gòu)
表2 扇區(qū)數(shù)/簇、$MFT記錄大小與索引節(jié)點大小關(guān)系對應(yīng)表
本文經(jīng)過大量的實驗,發(fā)現(xiàn)NTFS文件系統(tǒng)中每個簇的扇區(qū)數(shù)、元文件$MFT記錄大小與每個索引結(jié)點大小對應(yīng)關(guān)系如表2所示。
重建NTFS文件系統(tǒng)的DBR所需計算的參數(shù)為“每個簇的扇區(qū)數(shù)”“扇區(qū)總數(shù)”“元文件$MFT的起始簇號”“元文件$MFTMirr的起始簇號”“每個$MFT記錄大小的描述”和“每個索引結(jié)點大小的描述”,其他參數(shù)可以使用同一版本的NTFS文件系統(tǒng)中的DBR參數(shù)。
當(dāng)分區(qū)表被破壞后,在資源管理器中無法看到盤符,使用計算機管理中的磁盤管理查看時,出現(xiàn)“未分配”的提示。
如果分區(qū)表完好,而只有NTFS的DBR被破壞,在資源管理器中可以看到盤符,但當(dāng)單擊該盤符時,出現(xià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的備份。
對于情況1),重建DBR的基本思路是通過分區(qū)表確定DBR所在扇區(qū),通過查找的方式找到DBR的備份;將DBR的備份復(fù)制到DBR所在扇區(qū)即可。
對于情況2),重建DBR的基本思路是通過分區(qū)表確定DBR所在扇區(qū),通過查找的方式找到元文件$MFT,通過元文件$MFT知道元文件$MFT和元文件$MFTMirr所在簇號,通過元文件$MFT的80H屬性計算出每個簇的扇區(qū)數(shù),通過表2知道$MFT記錄大小和索引結(jié)點大小,通過分區(qū)表可以計算出NTFS文件系統(tǒng)中總扇區(qū)數(shù);將同一版本的NTFS文件系統(tǒng)的DBR復(fù)制到DBR所在扇區(qū),將DBR的參數(shù)修改為所計算出的參數(shù)即可。
本文重點討論情況3),由于分區(qū)表被破壞,無法從分區(qū)表中得到NTFS文件系統(tǒng)中的總扇區(qū)數(shù),也無法確定DBR所在扇區(qū)。
下面以實例的方式討論重建NTFS文件系統(tǒng)DBR基本思路。
1)使用Winhex軟件菜單欄上的工具→打開物理磁盤功能打開該硬盤。
2)查找元文件$MFT,在整個硬盤339 412扇區(qū)找到,元文件$MFT的80H屬性如圖2所示,元文件$MFT的分配大小為25 952 256字節(jié)(存儲形式為00 00 8C 01 00 00 00 00);從數(shù)據(jù)運行列表可知,元文件$MFT的開始簇號為848 21(存儲形式為55 4B 01),所占簇數(shù)為12 672(存儲形式為80 31)。所以,每個簇的扇區(qū)數(shù)=元文件$MFT的分配大小÷所占簇數(shù)÷512字節(jié)/扇區(qū)=25 952 256字節(jié)÷12672簇÷512字節(jié)/扇區(qū)=4扇區(qū)/簇。
圖2 元文件$MFT的記錄
3)通過表2可得每個$MFT記錄的大小為1 024字節(jié),在DBR中的存儲形式為F6;每個索引結(jié)點的大小為2個簇,在DBR中的存儲形式為02。
4)查找元文件$MFTMrirr,在144扇區(qū)找到,將光標(biāo)移動到146扇區(qū),元文件$MFTMirr的80H屬性的數(shù)據(jù)運行列表為“11 02 04”。所以,元文件$MFTMirr的開始簇號為4(存儲形式為04),所占簇數(shù)為2(存儲形式為02)。
5)查找元文件$Bitmap,在整個硬盤的339 424扇區(qū)找到,從元文件$Bitmap的80H屬性可知,元文件$Bitmap所占空間為31 808字節(jié)(注:在元文件$Bitmap中的存儲式為40 7C 00 00 00 00 00 00),由于元文件$Bitmap中每1位表示一個簇的狀態(tài),每個字節(jié)為8位,在該NTFS文件系統(tǒng)中每個簇為4個扇區(qū)。所以,分區(qū)表中該NTFS文件系統(tǒng)所占扇區(qū)=元文件$Bitmap所占空間× 8位/字節(jié)×每個簇的扇區(qū)數(shù)×1個簇/位=318 08×8× 4×1=1 017 856。因此,DBR的總扇區(qū)數(shù)=1 017 855。
6)由于元文件$MFTMirr在整個硬盤的第144扇區(qū),所對應(yīng)的簇號為4,而NTFS文件系統(tǒng)的DBR在0號簇,每個簇的扇區(qū)數(shù)為4,由此可以計算出NTFS文件系統(tǒng)的DBR所在的0號簇也就是整個硬盤的128號扇區(qū)。
7)綜合步驟2)~步驟6),所計算出的NTFS文件系統(tǒng)的DBR參數(shù)為每個簇的扇區(qū)數(shù)為4,扇區(qū)總數(shù)為1 017 855,$MFT的起始簇號為84 821,$MFTMirr的起始簇號為4,每個$MFT記錄大小為1 024字節(jié),每個索引結(jié)點大小為2個簇。
8)將數(shù)據(jù)轉(zhuǎn)換成在DBR中的存儲形式如表3所示。
表3 所計算的DBR參數(shù)的存儲形式
9)將同一版本NTFS的DBR復(fù)制到128號扇區(qū),并修改DBR的參數(shù)后存盤,如圖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在整個硬盤的128號扇區(qū),在分區(qū)表中的存儲形式為80 00 00 00;而總扇區(qū)數(shù)為1 017 855,而分區(qū)表中的總扇區(qū)數(shù)要比DBR的總扇區(qū)數(shù)多1個扇區(qū),所以分區(qū)表中的總扇區(qū)數(shù)為1017 856,在分區(qū)表中的存儲形式為00 88 0F 00。由于目前硬盤的存儲形式均為LBA,所以起始地址和結(jié)束地址均未定義,可以為任意值。NTFS文件系統(tǒng)的分區(qū)標(biāo)志為0X07,由于此硬盤不是引導(dǎo)盤,所以引導(dǎo)標(biāo)志為
00。由此可以計算出NTFS文件系統(tǒng)的分區(qū)為:
將該值填入到整個硬盤的0扇區(qū)偏移地址0X01BE~0X01CD處后,存盤并退出Winhex。重新啟動Windows操作系統(tǒng)后,在資源管理器中即可看該硬盤的盤符,打開該硬盤即可看到恢復(fù)出來的文件。
針對NTFS文件系統(tǒng)分區(qū)表及DBR同時被破壞的情況,通過分析NTFS文件系統(tǒng)的結(jié)構(gòu)、根據(jù)元文件$MFT、$MFTMirr、$Bitmap的80H屬性,提出了重建NTFS文件系統(tǒng)DBR及分區(qū)表的基本思路與方法,通過實踐證明,該方法方便快捷、簡單實用。用戶可以通過資源管理器中看到所恢復(fù)出來的全部數(shù)據(jù)。
[1]張鐘澍,陳代軍,李新萌.修復(fù)和維護(hù)你的硬盤[M].北京:北京希望電子出版社,2002:44.
[2]劉偉.數(shù)據(jù)恢復(fù)技術(shù)深度揭秘[M].北京:電子工業(yè)出版社,2010:280-281.
[3]馬林.數(shù)據(jù)重現(xiàn)——文件系統(tǒng)原理精解與數(shù)據(jù)恢復(fù)最佳實踐[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ù)重點實驗室2014年度資助項目(2014KFKT001)。
陳培德(1966-),男,工程師,主要從事文件系統(tǒng)與數(shù)據(jù)恢復(fù)技術(shù)方面的工作。