陈培德,吴建平,王丽清
(云南大学,a.云南省电子计算中心;b.云南省高校数字媒体技术重点实验室,云南 昆明 650223)
重建NTFS的DBR及分区表的研究与实现
陈培德a,b,吴建平a,b,王丽清a,b
(云南大学,a.云南省电子计算中心;b.云南省高校数字媒体技术重点实验室,云南 昆明 650223)
通过对硬盘MBR(主引导记录)分区表结构、NTFS文件系统的DBR(DOS操作系统的引导区)结构以及NTFS文件系统整体布局的分析研究,以NTFS文件系统元文件$MFT、$MFTMirr和$Bitmap的80H属性中的数据为依据,该文提出了重建NTFS文件系统DBR及硬盘MBR分区表的基本思路与方法,解决了在较短的时间内修复硬盘MBR分区表及NTFS文件系统的DBR并恢复NTFS文件系统中全部数据的问题。实践证明该方法不仅方便实用,而且快捷有效。
NTFS文件系统;分区表;元文件$MFT;元文件$MFTMirr
随着信息化建设的不断推进以及个人电脑的普及应用,人们的日常生活和工作越来越离不开电脑。人们的许多重要信息都存储在电脑中,但是由于计算机病毒、断电、误操作、振动等各种原因导致电脑出现这样或那样故障,从而使用电脑无法正常工作的现象时有发生。其中,有关电脑硬盘故障是电脑最常见的也是必须在较短时间内需要解决的故障。笔者经过长期的研究,总结了重建NTFS文件系统DBR与MBR分区表的基本思路及方法。
作为目前主流的操作系统Windows,它能够支持的分区结构包括MBR磁盘分区、动态磁盘分区和GPT磁盘分区。本文重点讨论整个硬盘0扇区的MBR分区,在MBR分区中,整个硬盘0扇区由主引导记录、磁盘签名、分区表和结束标志4部分组成,其中,最重要的就是分区表。在硬盘0扇区中最多只能存放4个分区表[1]。每个分区表项长度为16个字节,分为6个部分,说明如下:
1)引导标志占1个字节,其取值为0X00或0X80,如该分区不引操作系统,则取值为0X00;
2)起始地址占3个字节,由于目前操作系统对硬盘的存取方式为LBA(即逻辑块存取方式),这3个字节未定义;
3)分区标志占1个字节,NTFS文件系统为0X07;
4)结束地址占3个字节,由于目前操作系统对硬盘的存取方式为LBA(即逻辑块存取方式),这3个字节未定义;
5)相对扇区占4个字节,即DBR所在整个硬盘的扇区位置;
6)总扇区数占有4个字节,即分区所占扇区总数,如果分区为NTFS文件系统,总扇区数比NTFS文件系统DBR中的总扇区多1个扇区。
例如,某硬盘0扇区存放的分区表为“00 02 03 00 07 FE 3F 3E 80 00 00 00 00 88 0F 00”:在该硬盘中,只有一个MBR分区,分区标志为0X07,所对应的文件系统为NTFS;相对扇区为128(在分区表中的存储形式为80 00 00 00);总扇区数为1 017 856(在分区表中的存储形式为00 88 0F 00)。注意,MBR分区及DBR所存储的数据均采用小头序,即低字节在前、高字节在后。所以,NTFS文件系统的DBR在128号扇区,NTFS文件系统的总扇区数为1 017 855(在DBR中的存储形式为FF 87 0F 00 00 00 00 00,DBR中总扇区数比分区表的总扇区数少1个扇区,总扇区数占8个字节)。
从整体结构上看,NTFS文件系统由元文件、用户文件以及数据组成。NTFS系统在创建时,会将一些重要的系统信息以文件的形式进行存储,存储这些重要信息所对应的文件就是元文件,元文件是NTFS文件系统最重要的组成部分,NTFS文件系统的总体布局如图1所示[2]。
图1 某NTFS文件系统的总体布局
从图1可知,NTFS的DBR位于NTFS卷的0扇区,占一个扇区,在卷的最后一个扇区存储着DBR的备份,该DBR备份不属于NTFS文件系统。NTFS的元文件是分散地存储在逻辑盘(或者卷)中,整个NTFS文件系统中是以簇为单位来分配磁盘空间的。而在分区时,总扇区数不一定是簇的倍数,因此有可能会出现剩余扇区,剩余扇区一般大于或等于一个扇区而小于一个簇(即最后不能够成一个簇的扇区)。在NTFS中,有关簇号的指针以数据运行列表的形式存储在元文件$MFT记录中。
DBR是NTFS文件系统元文件$Boot的重要组成部分,占一个扇区的位置,从NTFS的分区表可以计算出DBR在整个物理盘中的位置,DBR完成定义分区参数和引导系统的作用,NTFS的DBR定义[2]如表1所示。
表1 NTFS文件系统中DBR的结构
表2 扇区数/簇、$MFT记录大小与索引节点大小关系对应表
本文经过大量的实验,发现NTFS文件系统中每个簇的扇区数、元文件$MFT记录大小与每个索引结点大小对应关系如表2所示。
重建NTFS文件系统的DBR所需计算的参数为“每个簇的扇区数”“扇区总数”“元文件$MFT的起始簇号”“元文件$MFTMirr的起始簇号”“每个$MFT记录大小的描述”和“每个索引结点大小的描述”,其他参数可以使用同一版本的NTFS文件系统中的DBR参数。
当分区表被破坏后,在资源管理器中无法看到盘符,使用计算机管理中的磁盘管理查看时,出现“未分配”的提示。
如果分区表完好,而只有NTFS的DBR被破坏,在资源管理器中可以看到盘符,但当单击该盘符时,出现“磁盘未格式化”的提示。
NTFS文件系统的DBR被破坏要分以下3种情况考虑。
1)DBR被破坏,分区表及NTFS的DBR的备份完好,只需要恢复NTFS的DBR。
2)分区表完好,NTFS的DBR和DBR的备份均被破坏需要恢复。
3)分区表、NTFS的DBR及DBR的备份均被破坏,需要恢复分区表及DBR及DBR的备份。
对于情况1),重建DBR的基本思路是通过分区表确定DBR所在扇区,通过查找的方式找到DBR的备份;将DBR的备份复制到DBR所在扇区即可。
对于情况2),重建DBR的基本思路是通过分区表确定DBR所在扇区,通过查找的方式找到元文件$MFT,通过元文件$MFT知道元文件$MFT和元文件$MFTMirr所在簇号,通过元文件$MFT的80H属性计算出每个簇的扇区数,通过表2知道$MFT记录大小和索引结点大小,通过分区表可以计算出NTFS文件系统中总扇区数;将同一版本的NTFS文件系统的DBR复制到DBR所在扇区,将DBR的参数修改为所计算出的参数即可。
本文重点讨论情况3),由于分区表被破坏,无法从分区表中得到NTFS文件系统中的总扇区数,也无法确定DBR所在扇区。
下面以实例的方式讨论重建NTFS文件系统DBR基本思路。
1)使用Winhex软件菜单栏上的工具→打开物理磁盘功能打开该硬盘。
2)查找元文件$MFT,在整个硬盘339 412扇区找到,元文件$MFT的80H属性如图2所示,元文件$MFT的分配大小为25 952 256字节(存储形式为00 00 8C 01 00 00 00 00);从数据运行列表可知,元文件$MFT的开始簇号为848 21(存储形式为55 4B 01),所占簇数为12 672(存储形式为80 31)。所以,每个簇的扇区数=元文件$MFT的分配大小÷所占簇数÷512字节/扇区=25 952 256字节÷12672簇÷512字节/扇区=4扇区/簇。
图2 元文件$MFT的记录
3)通过表2可得每个$MFT记录的大小为1 024字节,在DBR中的存储形式为F6;每个索引结点的大小为2个簇,在DBR中的存储形式为02。
4)查找元文件$MFTMrirr,在144扇区找到,将光标移动到146扇区,元文件$MFTMirr的80H属性的数据运行列表为“11 02 04”。所以,元文件$MFTMirr的开始簇号为4(存储形式为04),所占簇数为2(存储形式为02)。
5)查找元文件$Bitmap,在整个硬盘的339 424扇区找到,从元文件$Bitmap的80H属性可知,元文件$Bitmap所占空间为31 808字节(注:在元文件$Bitmap中的存储式为40 7C 00 00 00 00 00 00),由于元文件$Bitmap中每1位表示一个簇的状态,每个字节为8位,在该NTFS文件系统中每个簇为4个扇区。所以,分区表中该NTFS文件系统所占扇区=元文件$Bitmap所占空间× 8位/字节×每个簇的扇区数×1个簇/位=318 08×8× 4×1=1 017 856。因此,DBR的总扇区数=1 017 855。
6)由于元文件$MFTMirr在整个硬盘的第144扇区,所对应的簇号为4,而NTFS文件系统的DBR在0号簇,每个簇的扇区数为4,由此可以计算出NTFS文件系统的DBR所在的0号簇也就是整个硬盘的128号扇区。
7)综合步骤2)~步骤6),所计算出的NTFS文件系统的DBR参数为每个簇的扇区数为4,扇区总数为1 017 855,$MFT的起始簇号为84 821,$MFTMirr的起始簇号为4,每个$MFT记录大小为1 024字节,每个索引结点大小为2个簇。
8)将数据转换成在DBR中的存储形式如表3所示。
表3 所计算的DBR参数的存储形式
9)将同一版本NTFS的DBR复制到128号扇区,并修改DBR的参数后存盘,如图3所示,至此NTFS的DBR已经恢复完成。
图3 修改的DBR参数
重建NTFS文件系统MBR分区表的基本思路如下:
1)需要知道NTFS文件系统DBR所在扇区;
2)需要知道NTFS文件系统的总扇区数。
从图3可知,NTFS文件系统的DBR在整个硬盘的128号扇区,在分区表中的存储形式为80 00 00 00;而总扇区数为1 017 855,而分区表中的总扇区数要比DBR的总扇区数多1个扇区,所以分区表中的总扇区数为1017 856,在分区表中的存储形式为00 88 0F 00。由于目前硬盘的存储形式均为LBA,所以起始地址和结束地址均未定义,可以为任意值。NTFS文件系统的分区标志为0X07,由于此硬盘不是引导盘,所以引导标志为
00。由此可以计算出NTFS文件系统的分区为:
将该值填入到整个硬盘的0扇区偏移地址0X01BE~0X01CD处后,存盘并退出Winhex。重新启动Windows操作系统后,在资源管理器中即可看该硬盘的盘符,打开该硬盘即可看到恢复出来的文件。
针对NTFS文件系统分区表及DBR同时被破坏的情况,通过分析NTFS文件系统的结构、根据元文件$MFT、$MFTMirr、$Bitmap的80H属性,提出了重建NTFS文件系统DBR及分区表的基本思路与方法,通过实践证明,该方法方便快捷、简单实用。用户可以通过资源管理器中看到所恢复出来的全部数据。
[1]张钟澍,陈代军,李新萌.修复和维护你的硬盘[M].北京:北京希望电子出版社,2002:44.
[2]刘伟.数据恢复技术深度揭秘[M].北京:电子工业出版社,2010:280-281.
[3]马林.数据重现——文件系统原理精解与数据恢复最佳实践[M].北京:清华大学出版社,2009:178.
[4]汪中夏,张京生,刘伟.RAID数据恢复技术揭秘[M].北京:清华大学出版社,2010:165.
[5]戴士剑,涂彦晖.数据恢复技术[M].北京:电子工业出版社,2005:226.
[6]刘乃琦,郭建东,张可.系统与数据恢复技术[M].成都:电子科技大学出版社.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
云南省高校数字媒体技术重点实验室2014年度资助项目(2014KFKT001)。
陈培德(1966-),男,工程师,主要从事文件系统与数据恢复技术方面的工作。