1.物理扇区定位中的扇区号、磁头号、柱面号与逻辑扇区号的关系
物理扇区号(psecn)=(逻辑扇区号+隐含扇区数)MOD扇区数/每道+1
物理头号(phen)=((逻辑扇区号+隐含扇区数)DIV扇区数/每道)MOD 磁头数
物理道号(pcyn)=((逻辑扇区号+隐含扇区数)DIV扇区数/每道)DIV 磁头数
2.逻辑扇区定位中逻辑扇区号与物理扇区的关系
逻辑扇区号=(扇区数/每道*磁头数)*柱面号+(磁头号)*扇区数/每道+扇区号-隐含扇区数-1
3.举例说明
下面分别以分区小于等于32M硬盘和分区大于32M硬盘为例说明。
(1)分区小于32MB硬盘、磁盘I/O参数表如图6.1所示。
图6.1 分区小于32MB硬盘、磁盘I/O参数
(2)分区大于32MB硬盘、磁盘I/O参数表如图6.2所示。
【例6.3】 在小于32M硬盘中(图6.1),现查得某文件目录项被删除(在小于32M硬盘中如图一),已知:该文件连续存贮,且文件的长度为284AH,起始簇号为1204H,请将其恢复,其名为
HFNAME。试写出计算过程及恢复步骤。
(1)由起始簇号计算起始逻辑扇区号。
首先由BPB(磁盘参数块,在boot区中0BH偏移开始到26H结束)中有关信息推出下列公式中的常数C1。
文件所在逻辑扇区号LJ=簇号*扇区数/簇+C1
图6.2 分区大于32MB硬盘、磁盘I/O参数
由于数据区中首扇区号所对应的簇号为2。
它前面的逻辑扇区数=1(boot)+2*扇区数/每FAT+目录项所占扇区数
其中,目录项所占扇区数=目录项数(在11H偏移处按字计算)*20H/200H
每簇扇区数在0DH偏移处按字节计算常为1、2、4、8、16等
所以C1=数据区前所有扇区数-首簇号*扇区数/簇
具体计算如下:
每簇扇区数[0DH]=04H
扇区数/每FAT(16H偏字)=0038H
目录项数(11H偏字)=0200H
所以,C1=1(boot)+2*38H+200H*20H/200H-2*4H=89H
文件所在逻辑扇区号LJ=簇号*4H+89H
同理,推得如图6.2中BPB表的公式如下:
C1=1(boot)+2*A0H+200H*20H/200H-2*4H=159H
文件所在逻辑扇区号LJ=簇号*4H+159H
由于例题给出为图一所示硬盘,故文件所在逻辑扇区号=1240H*4+89H=4989H
(2)由文件长度计算该文件占扇区数。
扇区数=284AH/200H(向上取整)=15H
(3)应用DEBUG去恢复该文件。
至此,文件恢复完毕。其名为HFNAME,存当前A盘。
6.5.1.2 硬盘维护中 FAT16位的文件意外删除的恢复
硬盘FAT格式文件为FAT16类型。该类型硬盘分区小于2G,每簇占扇区数从4~64不等,每个簇值在FAT16表中占16位,即2个字节,簇号与其在FAT16中的位置关系为:
偏移地址=簇号*2
其文件类型分为两种。
1.第一种类型文件
一个文件最少占用一个簇号,若一个文件的实长小于一个簇号占扇区的长度,则该文件在FAT16中只占用一个簇,即16位(2字节),且该簇中的值将为FFFF(文件结束标志)。如果此类文件被删除,则文件名的首字节被置成E5,FAT16中的FFFF被清0。此类文件无论怎样恢复都是非常容易的,且数据可完全恢复,恢复的长度为该分区一个簇所占的长度(2~26,即2~32K)。
此类文件恢复的方法如下。
(1)第一种方法:将文件名的首字节改成可识别的正常字符,例如A~Z等即可,文件FAT16表中的00 00可不予改成FFFF,即可读出该文件。
(2)第二种方法:将文件实体内容装入内存,再写到其他盘中即可。此种方法需要先推导出该逻辑盘的逻辑扇区号与簇号之间的关系。公式形式如下:
其中,word[11],word[16],byte[0D]为该盘引导区中的偏移地址(即磁盘I/O参数表)。
一般来说word[11]=0200,word[16]<=100,byte[0D]=2˄~2˄6。
2.第二种类型文件
当文件的长度远大于一个簇长的时候(且连续),恢复过程较复杂。
(1)第一种方法:利用逻辑扇区号与簇号之间关系公式,将文件实体装入内存,并写入其他盘中即可。文件超过64K时,装入内存的起始偏移地址,应改成200H,再改段继续装入(比较繁琐)。
(2)第二种方法:对长文件的恢复,可采用先改被删除文件名的第一个字节的内容E5为其他正常字符,再将该文件占用的FAT16表中的值改成原值即可。
1)首先查到该文件在FAT16中的起始地址,文件长=14E88,设其首簇号为 = 1C6,[0D]=04,[16]=0065,[11]=0200,[0E]=0001。
偏移地址=簇号*2=1C6*2=38C
2)确定首簇号在FAT16中的第几个扇区。
扇区号=38C/200=1...18C=2有余则+1
3)确定该文件簇号占用的FAT16表尾地址。
占簇号数=文件长/(簇长)=文件长/(簇大小*200)
=14E88/(4*200)=14E88/800
=(14E88/1000)*2
=14.E*2=29.C=2A(有余则+1)
偏移地址=(1C6+29)*2=1EF*2=3DE
4)确定尾占FAT16中的第几个扇区。
扇区号=3DE/200=1...1DE=2(有余则+1)
5)由于文件连续则FAT16表中的值也连续,且首地址内容为01C7,尾内容为FFFF[1DE]。
从FAT16表中第二个扇区18C处开始添C701 C801...EF01 FFFF[1DE]
6.5.1.3 硬盘维护中 FAT32位的文件意外删除的恢复
硬盘FAT格式文件为FAT32类型。
该类型硬盘分区使用FDISK分区时,一般为大于512MB,每簇占扇区数从8~64不等,见表6.1。
表6.1 每簇占扇区数
每簇号值在FAT32表中占32位,即4个字节,簇号与其在FAT32表中的位置关系为:
表中偏移地址=簇号*4。
一个文件最少占用一个簇号,若一个文件的实长小于一个簇占扇区的长度,则该文件在FAT32中只占用一个簇,即32位(4字节),且该簇中的值为:FF FF FF 0F(文件结束标志)。如果此类文件被删除,则目录项中文件名的首字节被置成E5,FAT32表中FF FF FF 0F被清0。此类文件恢复比较容易,且数据可完全恢复。恢复实长由文件目录项的文件长度值决定(一定小于一个簇)。
1.被删除文件只占用一个簇号
实际可采用的恢复方法有如下两种。
(1)第一种方法:将被删除文件名的首字节E5改成可识别的正常字符如A~Z等即可,文件FAT32 表中的00 00 00 00 可不予改成FF FF FF 0F。即可读出该文件。
具体实践如下。
(2)第二种方法:将文件实体内容装入内存,再写到其他盘即可。此种方法需要先推导出该盘的逻辑扇区号与簇号之间的关系,公式形式如下:(www.xing528.com)
逻辑扇区号=簇号*[0D](每簇扇区号)+C
即3E84=2*8+C (目录项起始逻辑扇区号与非数据区扇区数相等)
所以,C=3E74
因此公式导出如下:
逻辑扇区号=簇号*8+3E74
1)先查文件目录项表确定其文件长度及首簇号。查被删除文件的长度为400,首簇号为0112。
2)确定文件占扇区数。
占扇区数=文件长度/200(有余则+1)=2
3)确定文件起始逻辑扇区号。
起始逻辑扇区号=112*2+3E74=4098
4)装文件实体于内存,并起名存盘。
2.被删除文件占用多个簇号
被删除文件占用多个簇号且连续,文件长度小于64K,恢复方法如下所示。
(1)第一种方法:第一种方法同(1.)中的第二种方法,设被删除的文件名为FDISK.EXE。目录如下:
1)用相同方法查找该文件的长度为FA6C,首簇号为E7。
起始扇区号=E7*8+3E74=45AC
文件占用扇区数=FA6C/200=7E(有余则加1)
2)将文件实体装入内存并起名存盘
C>
(2)第二种方法:首先将被删除文件的文件名的首字节由E5改成其他正常可用字符,再将该文件占用的FAT32中的值改成原值即可。
【例6.4】 以上述文件FDISK.EXE被删除为例,具体实现过程如下。
(1)显示FAT32位文件的目录项。
因为连续所以从29C=19C+100开始填E8 00 00 00 等.
【例6.5】 FAT32位文件意外删除的恢复实例。
(1)该实例被删除的文件名为AASSDD查看根目录项的部分内容如下。
(2)计算文件实体占的扇区数、簇号数。
计算文件实体占的扇区数=5121234H/200H=2890A...余34加1
计算文件实体占的簇号数=2890A/8=5122..........余2加1
终止簇号=起始簇号+5122-1=0A373FH
簇号数占的扇区数(FAT32)=(5122H*4)/200=A2...88H
(3)计算该文件实体在FAT32表中的起始位置(起始于0)。
起始偏移位置=9E614*8=279878
相对起始扇区号=279878/200=13CC...余78
本逻辑盘相对起始扇区号=13CC+20=13EC
(4)根据计算该文件实体在FAT32中的起始位置装入如下(模拟)。
(5)计算该文件实体占的FAT32结束位置。
计算该文件末簇号在FAT32表中的结束偏移位置=A373F*4=28DCFCH
相对起始扇区号=28DCFC/200=146E...余FC
本逻辑盘相对起始扇区号=146E+20=148E
(6)根据计算该文件实体在FAT32中的结束位置装入如下(模拟)。
(7)手工填FAT32表。
第一次读入70H扇,还剩A3-70=33H扇。
(8)也可编程填FAT32表。
使用程序恢复FAT32表:第一次读入70H扇,还剩A3-70=33H扇。
第二次读入33H扇,还剩A3-70=33H扇。
6.5.1.4 硬盘维护中 FAT32位长文件名文件意外删除的恢复
通过对Windows98 FAT32位目录项结构的剖析,便于用户更好地维护大容量硬盘。即使由于某种原因造成数据信息丢失,也可通过剖析结论,将丢失文件予以恢复。
掌握Windows98 FAT32位目录项结构,对硬盘的维护起着举足轻重的作用。当文件的起始簇号超过16位时,如何从目录中获取某文件32位首簇号,如何计算该文件在大硬盘中的起始位置,是对硬盘进行维护必不可少的步骤。
1.Windws98 FAT32位目录结构
(1)8.3格式短文件名目录结构。每文件名表项占32字节,偏移地址0~7主文件名,8~0AH扩展名,0BH文件属性,0CH~0DH保留,0EH~0FH,10H~11H为创建文件的时间与日期,12H~13H 为访问文件日期,16H~17H,18H~19H
为修改文件的时间与日期。14H~15H为文件首簇号的高16位,1AH~1BH 为文件首簇号的低16位,1CH~1FH为文件32位的长度。
(2)长文件名目录项结构。长文件名是按目录链在目录项区中存放的,目录链的格式如下:
其中相关的8.3格式短文件名是在WIN95/98下建立长文件名,自动产生的符合DOS 系统短文件名,其结构基本同8.3格式短文件名目录结构。它与长文件名配套使用,缺一不可。它必须位于长文件名的下面,且相连。
长文件名链表的各项(32字节)结构如下:
其中文件名1个字符占2个字节,1个字节为字符,另一个字节为00。详情请参阅实例。
2.FAT32位文件首簇号与逻辑扇区号之间的关系
为方便有效地管理磁盘,Windows98引入了簇和逻辑扇区的概念,簇是Win 98文件存取的基本单位,它是磁盘中一个或相邻的几个扇区,(2n,n=0~6),即每簇为1,2,4,8,16,32,64个扇区。逻辑扇区是磁盘中扇区的逻辑划分,其顺序是从0开始直至最后一个扇区号。根据磁盘引导扇区中的磁盘I/O参数表可以确定,该盘非数据区占用扇区数和数据区起始逻辑扇区号。非数据区占用扇区数=Word[0EH]+Word[24H]*Byte[10H]。其中地址为硬盘FAT32位引导区中的偏移地址。
由于非数据区与数据区相连,因此数据区起始逻辑扇区号即为非数据区占用扇区数。又因任何一个硬盘的首簇号均为2。
所以,非数据区占用扇区数(即数据区逻辑扇区号)=2*Byte[0DH]+常数C(随盘而定)常数C=Word[0EH]+Word[24H]*Byte[10H]-2*Byte[0DH]
逻辑扇区号=文件首簇号*byte[0DH]+C
3.实 例
【例6.6】 已知某硬盘逻辑盘E:,FAT32位I/O参数表如下:
已知一被删除文件的目录项如下,其中第1个长文件名未被删除,第2个长文件名已被删除。
文件的恢复操作如下:
起始逻辑扇区号=338CC*8+4426=1A0A86
所占扇区数=C800H/200H=64H
A>
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。