重建分区表与FAT32_DBR研究与实现

2016-02-27 00:44陈培德吴建平王丽清
计算机技术与发展 2016年10期
关键词:扇区字节硬盘

陈培德,吴建平,王丽清

(1.云南大学 信息学院,云南 昆明 650223;2.云南省高校数字媒体技术重点实验室,云南 昆明 650223)

重建分区表与FAT32_DBR研究与实现

陈培德1,2,吴建平1,2,王丽清1,2

(1.云南大学 信息学院,云南 昆明 650223;2.云南省高校数字媒体技术重点实验室,云南 昆明 650223)

通过对硬盘MBR分区表结构、FAT32文件系统整体布局以及FAT32_DBR结构的分析,以实验的方式对硬盘MBR分区表、FAT32_DBR以及FAT1同时被破坏后进行修复研究。提出了恢复硬盘数据的两种方法:修复硬盘FAT32_DBR和FAT1以及修复硬盘MBR分区表、FAT32_DBR和FAT1。实验结果表明:当硬盘MBR分区表、FAT32_DBR和FAT1同时被破坏后,可以采用这两种方法中的一种来恢复FAT32文件系统中的全部数据,解决了由于硬盘MBR分区表、FAT32_DBR和FAT1同时被破坏后数据难以恢复的难题。方法一只能恢复只有一个MBR分区表中的数据,而方法二可以恢复多个MBR分区表中的数据。

FAT32文件系统;分区表;子目录;文件分配表

0 引 言

FAT32文件系统广泛应用于U盘、硬盘、移动硬盘、照相机(或摄像机)的SD卡、手机的TF卡等外存储器上,但是由于用户操作不当、计算机病毒、断电、误操作、振动等各种原因导致FAT32文件系统被破坏的现象时有发生,从而引发数据丢失。其中:当MBR(即主引导记录)分区表、FAT32_DBR(即DOS操作系统的引导记录)和FAT1(即FAT32文件系统的第1个文件分配表)同时被破坏后,重建的难度非常大。

当MBR分区表被破坏后,在资源管理器中无法看到盘符,使用计算机管理中的磁盘管理查看时,出现“未分配”的提示[1]。

如果分区表完好,而只是FAT32_DBR被破坏,在资源管理器中可以看到盘符,但当单击该盘符时,出现“磁盘未格式化”的提示[2]。

经过长期的实验研究,总结了重建MBR分区表、FAT32_DBR和FAT1的基本思路与方法。

1 MBR分区表的基本结构

在Windows平台下能够支持的分区结构包括MBR分区、GPT磁盘分区和动态磁盘分区[1]。其中MBR分区仍然是外存储器的主要分区形式。在MBR分区中,整个硬盘0扇区由主引导记录、磁盘签名、分区表和结束标志四部分组成。其中,最重要的就是分区表。在硬盘0号扇区中最多只能存放4个分区表。每个分区表项长度为16个字节[2],分为6部分,说明如下:

(1)引导标志占1个字节,其取值为0x00或0x80,如该分区不引操作系统,则取值为0x00[3]。

(2)在CHS(即柱面、磁头和扇区)存储方式下作为起始地址占3个字节,而在LBA(即逻辑块存取方式)下这3个字节未定义,可以使用任意数据,目前Windows操作系统下硬盘使用的存取方式为LBA[4]。

(3)分区标志占1个字节,FAT32文件系统为0x0C或者0x0B。

(4)在CHS存储方式下作为结束地址占3个字节,而在LBA下这3个字节未定义,可以使用任意数据[5]。

(5)相对扇区占4个字节,即分区表到DBR扇区数。

(6)总扇区数占4个字节,即分区所占扇区总数[6],如果分区为FAT32文件系统,总扇区数等于FAT32_DBR中的总扇区数。

2 FAT32整体布局及FAT32_DBR结构

从整体结构上看,FAT32文件系统由保留扇区(注:DBR位于保留扇区的第1个扇区,即FAT32文件系统的0号扇区)、FAT表(包括FAT1和FAT2)和数据区三部分组成。FAT32文件系统的总体布局[7]如图1所示。

保留扇区FAT表FAT1FAT2数据区0号扇区、1号扇区、…………2号簇、3号簇、…

图1 FAT32文件系统的总体布局

从图1可知,FAT32_DBR位于FAT32卷的0号扇区,占一个扇区。一般情况下,在FAT32文件系统的6号扇区存储着FAT32_DBR备份[8]。

FAT32_DBR在FAT32文件系统占有极其重要的地位,在FAT32_DBR中存储着FAT32文件系统的重要参数[9]。如:每个扇区的字节数、每个簇的扇区数、保留扇区数、每个FAT表所占扇区数等,这些参数一旦被破坏或不正确,FAT32卷将会出现这样或那样一些故障,并显示在屏幕上。如:出现“磁盘未格式化”、“文件或目录损坏无法读取”、“此卷不包含可识别的文件系统”以及“目录出现乱码”等提示信息[10]。

FAT32_DBR完成对FAT32文件系统参数的定义和引导系统的作用,FAT32_DBR结构定义如表1所示[11-12]。

表1 FAT32_DBR的结构

一般情况下,重建FAT32_DBR所需计算的参数见表2,其他参数可以使用同一版本的FAT32文件系统中的DBR参数[13]。

表2 重建FAT32_DBR所需计算的参数(1)

3 重建FAT1的基本思路和方法

当FAT32文件系统的FAT1被破坏后,可以通过FAT32文件系统的FAT2来恢复,其思路如下:

(1)查找第1个子目录所在位置,并记录下扇区号和所在簇号;

(2)查找第2个子目录所在位置,并记录下扇区号和所在簇号;

(3)通过这两个子目录所在扇区号和所在簇号,计算出每个簇的扇区数;

(4)计算出2号簇所在扇区号[14],即FAT32根目录的开始扇区号;

(5)查找所并记录下FAT2开始扇区号;

(6)通过2号簇所在扇区号和FAT2的开始扇区号,计算出每个FAT表所占扇区数;

(7)通过每个FAT表所占扇区数和FAT2的开始扇区号,计算出FAT1的开始扇区号,并通过FAT2恢复FAT1[15]。

下面以实验的方式讨论重建FAT32文件系统FAT1的基本方法:

(1)使用WinHex软件菜单栏上的工具→打开物理磁盘功能打开该硬盘。

(2)查找第1个子目录在硬盘位置,在整个硬盘8 328号扇区找到,如图2所示。从图2可知,第1个子目录在FAT32的簇号为0x00000003(即3)。

图2 第1个子目录所在硬盘中的位置

(3)查找第2个子目录在硬盘位置,在整个硬盘14 600号扇区找到,第2个子目录在FAT32的簇号为0x0313(即787)。

(4)每个簇的扇区数等于两个子目录所在硬盘开始扇区号之差除以两个子目录在FAT32开始簇号之差。

每个簇的扇区数=(14 600-8 328)÷(787-3)=8

(5)假设2号簇在硬盘的开始扇区号为x,由(14 600-x)÷(787-2)=8,计算出x=8 320,FAT2的结束扇区号为8 319。

(6)查找FAT2在硬盘的开始扇区号,在6 285号扇区找到,如图3所示。

图3 FAT2的开始扇区号所在位置

每个FAT表所占扇区数=FAT2结束扇区号-FAT2开始扇区号+1=8 319-6 285+1=2 035

FAT1开始扇区号=FAT2开始扇区号-每个FAT表所占扇区数=6 285-2 035=4 250

(7)将光标移动到6 285号扇区的开始位置处定义块首,将光标移动到8 319号扇区最后一个字节处定义块尾。单击“复制”按钮。

(8)将光标移动到FAT1开始扇区(即4 250号扇区)的开始位置处,单击“粘贴”按钮,并存盘,即可恢复FAT1。

4 重建FAT32_DBR基本思路和方法

由于分区表被破坏,无法从分区表中获得FAT32_DBR在硬盘中的位置,也无法从分区表中获得FAT32_DBR中的总扇区数。

因此,FAT32_DBR的位置可以放置在硬盘0号扇区至FAT1之间的任一扇区。如果将FAT32_DBR存放在硬盘0号扇区,说明该硬盘没有分区表,此时FAT32_DBR中保留扇区数为FAT1开始扇区前的扇区数;如果FAT32_DBR不存放在硬盘的0号扇区,说明该硬盘存在分区表,还需要恢复分区表。

FAT32_DBR中的总扇区数可以通过每个FAT所占扇区数和每个簇的扇区数估算出来。

重建FAT32_DBR可以分为两种情况来考虑。

情况一:将FAT32_DBR存放在硬盘的0号扇区,其方法如下:

(1)由于每FAT表项占4个字节,而每个扇区为512个字节,所以每个扇区可以容纳128个FAT表项。

(2)该FAT32文件系统每个FAT表占2 035个扇区,所以该FAT表可以容纳260 480个FAT表项,由于FAT32文件系统的开始簇号为2,所以该FAT32的最大结束簇号为260 479。

可以估算该FAT32文件系统的总簇数为260 469,比最大结束簇号少10个簇,所以数据区所占簇号范围为2~260 470,共计260 469个簇,由于每个簇的扇区数为8,所以,数据区所占扇区数为2 083 752。

(3)由FAT32_DBR存放在硬盘的0号扇区,所以保留扇区数为FAT1的开始扇区号,即4 250。

(4)DBR中总扇区数=数据区所占扇区数+每个FAT所占扇区数×FAT表的个数+保留扇区数=2 083 752+2 035×2+4 250=2 092 072。

(5)将计算出的每个簇的扇区数、保留扇区数等值,转换为在FAT32_DBR中的存储形式,如表3所示。

(6)将同一版本的FAT32_DBR复制到硬盘的0号扇区,并将每个簇的扇区数、保留扇区数等值修改为表3中的值后存盘,如图4所示。

表3 重建FAT32_DBR所需计算的参数(2)

图4 修改FAT32_DBR中的参数(1)

重新启动Windows操作系统后,在资源管理器中即可看该硬盘的盘符,打开该硬盘即可看到恢复出来的文件。

情况二:FAT32_DBR没有存放在硬盘的0号扇区,其方法如下:

方法(1)、(2)同情况一。

(3)由于FAT32_DBR没有存放在硬盘的0号扇区,可以假设FAT32_DBR存放在硬盘的128号扇区(即FAT32的0号扇区,当然也可以存储在其他扇区,但该值必须小于FAT1开始扇区号)。

FAT32_DBR中的保留扇区=FAT1的开始扇区号-FAT32_DBR所在扇区号=4 250-128=4 122

(4)FAT32_DBR中总扇区数=保留扇区数+每个FAT表所占扇区数×FAT表的个数+数据区所占扇区数=4 122+2 035×2+2 083 752=2 091 944。

(5)将计算出每个簇的扇区数、保留扇区数等值,转换为在DBR中的存储形式,如表4所示。

表4 重建FAT32_DBR所需计算的参数(3)

(6)将同一版本的FAT32_DBR复制到硬盘的128号扇区,并将每个簇的扇区数、保留扇区数等值修改为表4中的值后存盘,如图5所示。

图5 修改FAT32_DBR中的参数(2)

5 重建MBR分区表基本思路和方法

针对情况一,不需要重建MBR的分区表即恢复出FAT32文件系统中的所有数据。

针对情况二,还需要重建FAT32文件系统MBR分区表,其基本思路如下:

从FAT32_DBR所在扇区得到分区表的相对扇区和FAT32文件系统的总扇区数。

由图5可知,FAT32_DBR在整个硬盘的128号扇区,在分区表中的存储形式为“80 00 00 00”;而总扇区数为2 091 944,在分区表中的存储形式为“A8 EB 1F 00”。

由于目前硬盘的存储形式均为LBA,所以起始地址和结束地址均未定义,可以为任意值。

FAT32文件系统的分区标志为0X0C。

由于此硬盘不是引导盘,所以引导标志为00。

由此可以计算出NTFS文件系统的分区表如下:

0001 01 00 07 FE FF FF 80 00 00 00 A8 EB 1F 00

将该值填入到整个硬盘的0号扇区偏移地址0X01BE~0X01CD处后,存盘并退出WinHex。

重新启动Windows 操作系统后,在资源管理器中即可看该硬盘的盘符,打开该硬盘即可看到恢复出来的文件。

6 结束语

文中提出两种方法的核心在于通过分析MBR分区表和FAT32文件系统的结构,根据子目录的开始扇区号和开始簇号计算出每簇的扇区数,并计算FAT32文件系统2号簇(即根目录的开始簇号)的开始扇区号,从而计算出每个FAT表所扇区数,估算出FAT32的总扇区数,根据这些参数计算出FAT32_DBR中的相应参数,最终恢复了FAT32文件系统中的全部数据;用户可以通过资源管理器看到恢复出来的全部数据。通过实践证明,该方法不仅方便快捷,而且简单实用。

[1] 刘 伟.数据恢复技术深度揭秘[M].北京:电子工业出版社,2010.

[2] 张钟澍,陈代军,李新萌.修复和维护你的硬盘[M].北京:北京希望电子出版社,2002:44.

[3] Schulman A,Michels R J,Kyle J,et al.Undocumented DOS a programmer’s guide to reserved MS-DOS functions and data structures[M].New York:Addison-Wesley Publishing Company,Inc,1990:129.

[4] 马 林.数据重现:文件系统原理精解与数据恢复最佳实践[M].北京:清华大学出版社,2009:44.

[5] 汪中夏,张京生,刘 伟.RAID数据恢复技术揭秘[M].北京:清华大学出版社,2010:103-105.

[6] 戴士剑,涂彦晖.数据恢复技术[M].北京:电子工业出版社,2005:226.

[7] Ivens K,Gardinier K.Windows2000:the complete reference 2001[M].Beijing:China Machine Press,2001:531.

[8] 刘乃琦,郭建东,张 可.系统与数据恢复技术[M].成都:电子科技大学出版社,2008:77.

[9] 陈培德,张共胜.微机组装与维修实用技术教程[M].成都:电子科技大学出版社,1999.

[10] 郭文武,李宗远,于 泳.硬盘数据恢复及维修[M].北京:国防工业出版社,2015.

[11] 李晓中,乔 晗,马 鑫,等.数据恢复原理与实践[M].北京:国防工业出版社,2011.

[12] 迅维网,罗 工.硬盘维修及数据恢复不是事儿[M].北京:电子工业出版社,2015.

[13] 韩松峰,常俊超.数据恢复技术与应用[M].北京:电子工业出版社,2014.

[14] Hogan T.The programmer’s PC sourcebook[M].Redmond Washington,USA:Microsoft Press,1988:60.

[15] Solomon D A.Inside Windows NT[M].2nd ed.Redmond Washington,USA:Microsoft Corporation,1998:330.

Research and Implementation of Rebuilding Partition Table and FAT32_DBR

CHEN Pei-de1,2,WU Jian-ping1,2,WANG Li-qing1,2

(1.School of Information Science and Engineering,Yunnan University,Kunming 650223,China; 2.Key Laboratory of Digital Media Technology of Universities in Yunnan Province,Kunming 650223,China)

To analyze and research the MBR partition table,the whole layout of FAT32 File System and DBR in the FAT32 File System,the MBR partition table,FAT32_DBR and FAT1 are repaired when they are damaged at one time by the mode of experiment.The two methods are put forward for recovering the data,the first one is to repair FAT32_DBR and FAT1 in hard disk,the second is to repair MBR partition table,FAT32_DBR and FAT1 in hard disk.The results of experiment indicate that one of two methods could be used to recover all data in FAT32 File System.Solved the problem that the data could be recovered difficultly as MBR partition table,FAT32_DBR and FAT1 damaged at one time.The practice is proved that the first method is only used to recover the all data in a partition table and the second one is to used to recover the all data in many partitions.

FAT32 file system;partition table;subdirectory;file allocation table

2015-12-31

2016-04-21

时间:2016-09-26

云南省2015年度高校数字媒体技术重点资助项目(2015KFKT002)

陈培德(1966-),男,工程师,研究方向为文件系统与数据恢复技术。

http://www.cnki.net/kcms/detail/61.1450.TP.20160926.0951.002.html

TP311.12

A

1673-629X(2016)10-0188-04

10.3969/j.issn.1673-629X.2016.10.041

猜你喜欢
扇区字节硬盘
分阶段调整增加扇区通行能力策略
No.8 字节跳动将推出独立出口电商APP
HiFi级4K硬盘播放机 亿格瑞A15
Egreat(亿格瑞)A10二代 4K硬盘播放机
No.10 “字节跳动手机”要来了?
管制扇区复杂网络特性与抗毁性分析
U盘故障排除经验谈
简谈MC7字节码
基于贝叶斯估计的短时空域扇区交通流量预测
我区电视台对硬盘播出系统的应用