深入浅出硬盘分区表.docx
- 文档编号:25670789
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:19
- 大小:24.13KB
深入浅出硬盘分区表.docx
《深入浅出硬盘分区表.docx》由会员分享,可在线阅读,更多相关《深入浅出硬盘分区表.docx(19页珍藏版)》请在冰豆网上搜索。
深入浅出硬盘分区表
深入浅出硬盘分区表
作者:
武汉市中国地质大学印涛,秦剑
人们在使用电脑时,有时由于异常操作,有时由于病毒侵袭,会导致某个分区消失或硬盘无法启动。
究其原因,就是硬盘分区表受损。
硬盘分区表可以说是支持硬盘正常工作的骨架.操作系统正是通过它把硬盘划分为若干个分区,然后再在每个分区里面创建文件系统,写入数据文件.本文主要讲述的是分区表的位置,结构以及各个分区表是如何链接起来的.当掌握了这些知识后,即使分区表受到破坏,一样也可以根据残存的数据手工修复分区表,从而修复分区。
一.分区表的位置及识别标志
分区表一般位于硬盘某柱面的0磁头1扇区.而第1个分区表(也即主分区表)总是位于
(0柱面,1磁头,1扇区),剩余的分区表位置可以由主分区表依次推导出来.分区表有64个字节,占据其所在扇区的[441-509]字节.要判定是不是分区表,就看其后紧邻的两个字节(也即[510-511])是不是"55AA",若是,则为分区表.
二.分区表的结构
分区表由4项组成,每项16个字节.共4×16=64个字节.每项描述一个分区的基本信息.每个字节的含义如下:
分区表项含义
字节
含义
0
Activeflag.活动标志.若为0x80H,则表示该分区为活动分区.若为0x00H,则表示该分区为非活动分区.
1,2,3
该分区的起始磁头号,扇区号,柱面号磁头号--1字节,扇区号--2字节低6位,柱面号--2字节高2位+3字节
4
分区文件系统标志:
分区未用:
0x00H.
扩展分区:
0x05H,0x0FH.
FAT16分区:
0x06H.
FAT32分区:
0x0BH,0x1BH,0x0CH,0x1CH.
NTFS分区:
0x07H.
5,6,7
该分区的结束磁头号,扇区号,柱面号,含义同上.
8,9,10,11
逻辑起始扇区号。
表示分区起点之前已用了的扇区数.
12,13,14,15
该分区所占用的扇区数.
分区表项有几个字节比较重要,下面分别阐述之:
1、(1,2,3)字节
磁头号由
(1)字节8位表示,其范围为(0--28-1),也即(0磁头--254磁头)。
扇区号由
(2)字节低6位表示,其范围为(0--26-1),由于扇区号从1开始,所以其范围是(1扇区--63扇区)。
柱面号由
(2)字节高2位+(3)字节,共10位表示,其范围为(0--210-1),也即(0柱面--1023柱面)。
当柱面号超过1023时,这10位依然表示成1023,需要注意。
(5,6,7)字节含义同上。
2、(8,9,10,11)字节
如果是主分区表,则这4个字节表示该分区起始逻辑扇区号与逻辑0扇区(0柱面,0磁头,1扇区)之差。
如果非主分区表,
则这4个字节要么表示该分区起始逻辑扇区号与扩展分区起始逻辑扇区号之差,要么为63。
详细情况在后面有所阐述。
注意:
1、扇区上的字节是按左边低位,右边高位的顺序排列的。
所以在取值时,需要把字节再反一下,让高位字节在左边,低位字节在右边,
这一点在读取逻辑起始扇区号和分区大小时需要注意。
举个例子:
第一项的逻辑起始扇区为(3F000000),转换为十进制前要先反一下字
节顺序,为(0000003F)然后在转换为十进制,即63.同理分区大小为(3F047D00),先反为(007D043F)再转换为十进制,
即8193087。
2、逻辑扇区号与(柱面,磁头,扇区)的相互转换:
令L=逻辑扇区号,C=柱面号,H=磁头号,S=扇区号。
每道扇区数=63
每柱面磁头数=255
每柱面扇区数=每道扇区数*每柱面磁头数
=63×255
=16065
柱面号下标从0开始。
磁头号[0--254],扇区号[1--63]。
逻辑扇区号下标也从0开始。
(柱面,磁头,扇区)转换成逻辑扇区号的公式为:
L=C×16065+H×63+S-1;
比如(1柱面,1磁头,1扇区),其逻辑扇区号为:
L=1×16065+1×63+1-1
=16128
逻辑扇区号转换成(柱面,磁头,扇区)公式为:
C=L/16065
H=(L%16065)/63
S=(L%16065)%63+1
比如逻辑扇区号16127:
C=16127/16065=1
H=(16127%16065)/63=0
S=(16127%16065)%63+1=63
即(1柱面,0磁头,63扇区)
3、分区表上有四项,每一项表示一个分区,所以一个分区表最多只能表示4个分区。
主分
区表上的4项用来表示主分区和扩展分区的信息。
因为扩展分区最多只能有一个,所以硬盘
最多可以有四个主分区或者三个主分区,一个扩展分区。
余下的分区表是表示逻辑分区的。
这里有必要阐述一点:
逻辑区都是位于扩展分区里面的,并且逻辑分区的个数没有限制。
4、分区表所在扇区通常在(0磁头,1扇区),而该分区的开始扇区通常位于(1磁头,1扇区),中间隔了63个隐藏扇区。
三.分区表链的查找
分区表链实际上相当于一个单向链表结构。
第一个分区表,也即主分区表,可以有一项描述扩展分区。
而这一项就相当于指针,指向扩展分区。
然后我们根据该指针来到扩展分区起始柱面的0头1扇区,找到第二个分区表。
对于该分区表,通常情况下:
第一项描述了扩展分区中第一个分区的信息,第二项描述下一个分区,而这第二项就相当于指向第二个分区的指针,第三项,第四项一般均为0。
我们可以根据该指针来到扩展分区中第二个分区起始柱面的0头1扇区,找到第三个分区表。
以此类推,只到最后一个分区表。
而最后一个分区表只有第一项有信息,余下三项均为0.相当于其指针为空.所以只要找到了一个分区表就可以推导找出其后面所有分区表。
不过该分区表前面的分区表就不好推导出来了。
但令人高兴的是这个链表的头节点,也即主分区表的位置是固定的位于(0柱面,0磁头,1扇区)处,我们可以很轻易的找到它,然后把剩下的所有分区表一一找到。
以笔者的硬盘为例:
一个主分区(C盘),一个扩展分区.扩展分区中有两个逻辑分区(D盘,E盘)其分区表链示意图如下:
图一分区表链示意图
(一).读取(0柱面,0磁头,1扇区)处C盘的主分区表:
[800101000BFE7FFD3F0000003F047D00]
[000041FE0FFEFFFF7E047D001F2CB400]
[00000000000000000000000000000000]
[00000000000000000000000000000000]
第一项:
(80)(010100)(0B)(FE7FFD)(3F000000)(3F047D00)
描述的是C盘的情况。
1.(80):
表示C盘为活动分区。
即系统会从C盘启动。
2.(010100):
表示C盘的起始扇区为(0柱面,0磁头,1扇区)。
3.(0B):
表示C盘的文件系统为FAT32。
4.(FE7FFD):
(FE)16=(254)10(7F)16=(01111111)2(FD)16=(11111101)2
磁头号:
(254)10;
扇区号:
(111111)2=(63)10.
柱面号:
(0111111101)2=(509)10
故C盘结束扇区为(509柱面,254磁头,63扇区)。
5.(3F000000):
反向,(0000003F)16=(63)10,为C盘起始逻辑扇区号与逻辑0扇区号之差。
表示C盘前面已有63个扇区,这63个扇区为系统隐藏扇区。
6.(3F047D00):
反向,(007D043F)16=(8193087)10。
表明C盘有8193087个扇区。
即(0柱面,1磁头,1扇区)至(509柱面,254磁头,63扇区)
共有8193087个扇区。
第二项:
(00)(0041FE)(0F)(FEFFFF)(7E047D00)(1F2CB400)
描述的是扩展分区的情况。
1.(00):
表示该分区不是活动分区。
2.(0041FE):
(00)16=(0)10 (41)16=(01000001)2(FE)16=(11111110)2
磁头号:
(0)10;
扇区号:
(000001)2=
(1)10.
柱面号:
(0111111110)2=(510)10
所以扩展分区的起始扇区为(510柱面,0磁头,1扇区)。
3.(0F):
表示该分区为扩展分区。
4.(FEFFFF):
(FE)16=(254)10(FF)16=(11111111)2(FF)16=(11111111)2;
磁头号:
(254)10;
扇区号:
(111111)2=(63)10.
柱面号:
(1111111111)2=(1023)10
但这是不准确的,因为当柱面号的真实值超过1023时,表示柱面号的10位也依然是1023。
5.(7E047D00):
反向,(007D047E)16=(8193150)10.表示扩展分区的起始扇区号为8193150,即(510柱面,0磁头,1扇区)。
这是真实准确的,
我一般都用这一项来定位分区起点。
6.(1F2CB400):
反向,(00B42C1F)16=(11807775)10.表示扩展分区共有11807775个扇区。
通过上面得到的起点和分区的大小,
可以推导出扩展分区的结束位置:
8193150+11807775=20000925号扇区,即(1244柱面,254磁头,63扇区)。
二.查找D盘分区表 根据上面的信息,第二个分区表,也即D盘分区表在(510柱面,0磁头,1扇区)处。
读取该扇区,得到分区表如下:
[000141FE0BFEFF7B3F000000BFA35D00]
[0000C17C05FEFFFFFEA35D0021885600]
[00000000000000000000000000000000]
[00000000000000000000000000000000]
第一项:
(00)(0141FE)(0B)(FEFF7B)(3F000000)(BFA35D00)
描述的是D盘的情况。
1.(00):
表示D盘不是活动分区。
2.(0141FE):
(01)16=
(1)10(41)16=(01000001)2(FE)16=(11111110)2.
磁头号:
(1)10;
扇区号:
(000001)2=
(1)10.
柱面号:
(0111111110)2=(510)10;
故D盘开始扇区为(510柱面,1磁头,1扇区)。
3.(0B):
表示D盘的文件系统为FAT32。
4.(FEFF7B):
(FE)16=(254)10。
(FF)16=(11111111)2(7B)16=(01111011)2.
磁头号:
(254)10;
扇区号:
(111111)2=(63)10.
柱面号:
(1101111011)2=(891)10
故D盘结束扇区为(891柱面,254磁头,63扇区)。
5.(3F000000):
反向,(0000003F)16=(63)10,为D盘起始逻辑扇区号(510柱面,1磁头,1扇区)与扩展分区起始逻辑扇区号
(510柱面,0磁头,1扇区)之差。
表示D盘前面已有63个扇区,这63个扇区为系统隐藏扇区。
6.(BFA35D00):
反向,(005DA3BF)16=(6136767)10。
表明D盘有6136767个扇区。
通过上面得到的起点和分区的大小,可以推导出D盘的结束位置:
8193150+63+6136767=14329980号扇区。
即(891柱面,254磁头,63扇区)。
与上面的正好吻合。
第二项:
(00)(00C17C)(05)(FEFFFF)(FEA35D00)(21885600)
描述的是E盘的情况。
1.(00):
表示E盘不是活动分区。
2.(00C17C):
(00)16=(0)10(C1)16=(11000001)2(7C)16=(01111100)2
磁头号:
(0)10
扇区号:
(000001)2=
(1)10
柱面号:
(1101111100)2=(892)10
所以E盘的起始扇区为(892柱面,0磁头,1扇区)。
3.(05):
表示E盘的在扩展分区里面。
4.(FEFFFF):
(FE)16=(254)10(FF)16=(11111111)2(FF)16=(11111111)2
磁头号:
(254)10
扇区号:
(111111)2=(63)10
柱面号:
(1111111111)2=(1023)10
但这是不准确的,原因同上。
5.(FEA35D00):
反向,(005DA3FE)16=(6136830)10.这一项非常重要,它定位了E盘分区表所在扇区。
其值为E盘分区表所在扇区号
与扩展分区起始扇区号之差。
所以,E盘分区表所在扇区号为:
8193150+6136830=14329980。
即(892柱面,0磁头,1扇区)。
6.(21885600):
反向,(00568821)16=(5670945)10.表示E盘共有11807775个扇区。
通过上面得到的起点和分区的大小,可以推导出E
盘的结束位置:
14329980+5670945=20000925号扇区,即(1244柱面,254磁头,63扇区)。
三.查找E盘分区表根据上面的信息,第三个分区表,也即E盘分区表在(892柱面,0磁头,1扇区)处。
读取该扇区,得到分区表如下:
[0001C17C0BFEFFFF3F000000E2875600]
[00000000000000000000000000000000]
[00000000000000000000000000000000]
[00000000000000000000000000000000]
该分区表第二项全为0,说明没有下一个分区表了。
该分区表就是分区表链的最后一个节点。
第一项:
(00)(01C17C)(0B)(FEFFFF)(3F000000)(E2875600)
该项与D盘分区表的第二项描述的都是E盘的情况,但它们在某些细节上又有所区别。
1.(00):
表示E盘不是活动分区。
2.(01C17C):
(01)16=
(1)10(C1)16=(11000001)2(7C)16=(01111100)2.
磁头号:
(1)10
扇区号:
(000001)2=
(1)10
柱面号:
(1101111100)2=(892)10
故E盘起始扇区为(892柱面,1磁头,1扇区)。
3.(0B):
表示E盘的文件系统为FAT32。
4.(FEFFFF):
(FE)16=(254)10。
(FF)16=(11111111)2(FF)16=(11111111)2.
磁头号:
(254)10;
扇区号:
(111111)2=(63)10.
柱面号:
(1111111111)2=(1023)10
但这是不准确的,原因同上。
5.(3F000000):
反向,(0000003F)16=(63)10.这一项与D盘分区表相应项有所不同.为E盘起始逻辑
扇区号(892柱面,1磁头,1扇区)与(892柱面,0磁头,1扇区)之差。
表示E盘前面已有63个扇区,这63个扇区为系统隐藏扇区。
操作系统无法对这些扇区进行读写,所以可以把自己的秘密信息写在这里.
6.(E2875600):
反向,(005687E2)16=(5670882)10。
表明E盘有5670882个扇区。
而D盘分区表相应项为5670945.5670945-5670882=63.
正好等于63个隐藏扇区.这是因为D盘分区表描述的是(892柱面,0磁头,1扇区)到(1244柱面,254磁头,63扇区)之间的扇区数。
而E盘分区表描述的是(892柱面,1磁头,1扇区)到(1244柱面,254磁头,63扇区)之间的扇区数。
四.结束语
至此,我们已经打通了整个分区表链.以后在某个链节点数据受损时,也可以根据上下节点的信息而手工定位并修复之。
修复工具可采用可读写磁盘的Winhex.
上文是两们研的成果,在戴士剑的《数据恢复》一书也有介绍,关于C的算法实现对引导记录的读写在后面自己实践了再贴出来。
硬盘主引导记录详解[作者:
佚名 转贴自:
网易学院 点击数:
5596 更新时间:
2006-2-28 ]
硬盘的数据结构对于一些朋友来说总是很神密!
为什么我们删除了的文件用软件能找到?
为什么我们格式化了的硬盘数据还能找回来?
要回答这一切,你就得对硬盘的数据结构有个清醒的认识。
硬盘上的数据由五大部分组成,它们分别是:
MBR区、DBR区,FAT区,DIR区和DATA区。
1.MBR(MainBootRecord)区,即主引导记录区,位于整个硬盘的0磁道0柱面1扇区.
2.DBR(DosBootRecord)区,操作系统引导记录区。
位于硬盘的0磁道1柱面1扇区,是操作系统可以直接访问的第一个扇区.
3.FAT(FileAllocationTable文件分配表)区;
4.DIR(Directory)根目录区,记录着根目录下每个文件(目录)的起始单元,文件的属性等;
5.DATA区是真正意义上的数据存储的地方,位于DIR区之后,占据硬盘上的大部分数据空间。
了解了硬盘数据的基本结构,今天我们把重点放在mbr所在的扇区:
主引导扇区。
主引导扇区包括:
mbr,dpt和结束标志。
位于硬盘的0磁道0柱面1扇区,用diskman可以读出其中的内容,下面是一次操作的结果:
表一:
0123456789ABCDEF
00000000EB4890D0BC007CFB5007501FFCBE1B7C
00000010BF1B065057B9E501F3A4CBBEBE07B104
00000020382C7C09751583C610E2F5CD188B148B
00000030EE83C610497416382C74F6BE10070302
000000408000008068B676000008FAEA507C0000
0000005031C08ED88ED0BC0020FBA0407C3CFF74
000000600288C252BE817DE83F01F6C280745FB4
0000007041BBAA55CD13725681FB55AA7550A041
000000807C84C0750583E1017444B448BE007FC7
00000090044200CD137237668B4C10BE057CC644
000000A0FF01668B1E447CC7041000C744020100
000000B066895C08C7440600706631C089440466
000000C089440CB442CD137205BB0070EB7DB408
000000D0CD13730AF6C2800F84E800E98D00BE05
000000E07CC644FF006631C088F0406689440431
000000F0D288CAC1E20288E888F44089440831C0
0000010088D0C0E80266890466A1447C6631D266
00000110F73488540A6631D266F7740488540B89
00000120440C3B44087D3C8A540DC0E2068A4C0A
00000130FEC108D18A6C0C5A8A740BBB00708EC3
0000014031DBB80102CD13722A8CC38E06487C60
000001501EB900018EDB31F631FFFCF3A51F61FF
0000016026427CBE877DE84000EB0EBE8C7DE838
0000017000EB06BE967DE83000BE9B7DE82A00EB
00000180FE47525542200047656F6D0048617264
00000190204469736B005265616400204572726F
000001A07200BB0100B40ECD10AC3C0075F4C300
000001B000000000000000004CA64CA600008001
000001C001000BFE3FD83F0000005A3135000000
000001D001D90FFEFFFF9931350004FFFB000000
000001E00000000000000000
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 深入浅出 硬盘 分区表
![提示](https://static.bdocx.com/images/bang_tan.gif)