《NTFS文件系统扇区存储探秘》——2.2 FAT16扇区寻址实例分析

简介:

本节书摘来自异步社区《NTFS文件系统扇区存储探秘》一书中的第2章,第2.2节,作者:宋群生 , 宋亚琼著,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.2 FAT16扇区寻址实例分析

NTFS文件系统扇区存储探秘
详细了解文件系统的扇区分配是排除硬盘逻辑故障的重要基础。下面以作者使用的硬盘为例,介绍FAT16文件系统的扇区地址的寻址计算方法。

在进行扇区寻址和计算的过程中,需要用到后面《工具篇》中介绍的一些工具程序,本章先使用这些程序的执行结果,程序的详细运行方法在后面的章节中再作介绍。

作者使用的计算机上挂接了两块硬盘,为了在以后进行扇区扫描时节省时间,特意选用了两块小容量的硬盘。一块容量是6.2GB,接在第一IDE接口上,硬盘编号是“0”。另一块容量是40GB,接在第二IDE接口上,硬盘编号是“1”。

现在将1号硬盘作为主要操作对象,该硬盘划分成C、D、E、F、G、H、I七个逻辑驱动器,将0号硬盘作为辅助操作对象。1号硬盘的前五个逻辑驱动器的容量都是2GB,除了F盘使用NTFS文件系统,其余的C、D、E、G盘都使用FAT16文件系统。后两个逻辑驱动器使用FAT32文件系统,H盘的容量是10GB,I盘的容量是18GB。

下面以E盘为例,介绍FAT16文件系统的扇区分配。

运行“备份系统扇区数据.EXE”程序,就可以将硬盘上所有的逻辑驱动器的系统扇区数据,备份到文件中进行保存。每个逻辑驱动器备份两个扇区,其中一个是存储分区表或分区链表的扇区,另一个是存储分区引导记录的扇区。当分区引导记录占用多个扇区时,如FAT32和NTFS文件系统,只备份第一个扇区的数据。

程序运行以后,除了每个逻辑驱动器建立两个备份文件之外,还建立了一个扇区号的备查文件。目的是当系统引导出现故障时,可以将备份出来的数据,再按照原来的扇区号写回去,就可以修复硬盘。

扇区号备查文件的内容如下。

Boot sector number:
 1: 0
 2: 63
 3: 4192965
 4: 4193028
 5: 8385930
 6: 8385993
 7: 12578895
 8: 12578958
 9: 16771860
10: 16771923
11: 20964825
12: 20964888
13: 41447700
14: 41447763

根据扇区号备查文件中的记录,可以读出E盘存储分区链表的扇区号是“8385930”。再运行“查看硬盘扇区数据.EXE”程序,将“8385930”号扇区的数据显示在对话框中,程序的运行结果如图2-1所示。

screenshot

因为E盘不是第一个逻辑驱动器,所以在图2-1所示的对话框显示的数据中,没有主引导记录,只有分区链表。

找到字节位移1c6H开始的4字节,也就是字节编号455-458,扇区数据中的字节值是“3F 00 00 00”。这是一个双字,由于存储时的顺序是低字节在前,高字节在后,因此这个双字写成十六进制的形式是“0000003fH”,换算成十进制是“63”。

这个数值是分区前的扇区数,也可以看作是系统保留的扇区数。文件系统在检索文件的过程中,需要进行扇区号计算时,是从分区引导记录存储的扇区号开始的,系统保留扇区不计算在内。

在这63个系统保留扇区中,只有最前面的扇区写有数据,其余62个扇区空置不用。系统保留扇区之后,就是存储分区引导记录的扇区。用8385930加上63,就得到分区引导记录的扇区号是“8385993”。

运行“查看硬盘扇区数据.EXE”程序,将“8385993”号扇区的数据显示在对话框中,程序的运行结果如图2-2所示。

在图2-2所示的对话框显示的数据中,与当前讨论的问题相关的是BPB表,其他的内容不在本书讨论的范围。

解读E盘BPB表的内容,可以参考第1章中的表1-2来进行。为了简化叙述的过程,在描述扇区中某一个字节的位置时,只使用字节编号,暂时就不再使用字节位移的概念了。

现在找到第23字节开始的两字节,存储在扇区中的数据是“00 01”,也就是“0100H”,十进制是“256”。这一个字段的值,记录的是每个FAT表占用的扇区数。

screenshot

先读出第一FAT表的第一个扇区,因为FAT16文件系统的分区引导记录只占用1个扇区,而紧接在分区引导记录之后的就是FAT表,所以第一FAT表的首扇区号是“8385993”加上1,即“8385994”。

运行“查看硬盘扇区数据.EXE”程序,将“8385994”号扇区的数据显示在对话框中,程序的运行结果如图2-3所示。

screenshot

在第1章中曾经介绍过,FAT16文件系统和FAT32文件系统有一个共同的特点,它们的FAT表的首扇区的前两字节是F8 FF,图2-3所示的对话框显示的数据符合这个特征。

用第一FAT表的首扇区号加上每个FAT表占用的扇区数,就是第二FAT表的首扇区号。具体计算方法是8385994+256=8386250。

运行“查看硬盘扇区数据.EXE”程序,将“8386250”号扇区的数据显示在对话框中,程序的运行结果如图2-4所示。

screenshot

将图2-4所示的对话框显示的数据与图2-3所示数据比较一下,可以发现它们完全相同。因此当第一FAT表意外损坏时,可以将第二FAT表的数据拷贝到第一FAT表相对应的扇区中去,覆盖损坏的数据,就可以修复文件系统。

接下来继续计算文件目录表FDT的扇区地址。将第二FAT表的首扇区号,加上每个FAT表占用的扇区数,就是FDT的首扇区号,具体计算方法是8386250+256=8386506。

运行“查看硬盘扇区数据.EXE”程序,将“8386506”号扇区的数据显示在对话框中。可是FDT表的首扇区不象FAT表的首扇区那样,有一个“F8 FF”的判断标志,如何验证显示的就是首扇区呢?为了消除这个疑问,可以在显示了“8386506”号扇区的数据以后,再打开一个对话框,显示的是其前一个扇区,即“8386505”号扇区的数据。通过两个对话框数据的比较,就能验证这个问题,程序的运行结果如图2-5所示。

如图2-5所示,左边的对话框显示的是“8386505”号扇区的数据,右边的对话框显示的是“8386506”号扇区的数据。因为“8386505”号扇区属于第二FAT表的最后一个扇区,而一般情况下FAT表不会被写满,所以该扇区的数据为0。由此可以验证出,“8386506”号扇区确是FDT表的首扇区。

screenshot

如果将 “8386506”号扇区的数据用字符方式显示出来,就能观察到存储在E盘的部分目录或文件名。在WINDOWS 2000的32位图形界面下,有些特殊字符不容易显示,使用辅助的16位程序,显示效果要好一些。打开WINDOWS 2000的“命令提示符”窗口,在命令行运行程序READSF.EXE,显示效果如图2-6所示。

screenshot

现在将图2-6的截图画面解释一下。执行程序时在命令行输入“readsf /rc”,readsf是可执行文件名,/rc是命令行开关,设定程序用字符方式显示文件内容。回车后程序显示提示行“Enter file name :”,输入需要显示数据的文件名“fdtfile”,该文件中备份的是“8386506”号扇区的数据,是由“查看硬盘扇区数据.EXE”程序建立的。

在显示的字符内容中,上面几行的第一个字符都是“σ”,这个ASCII字符的值是e5H,表示原来的文件已被删除。下面有几行显示出目前存储的目录或文件名,如在第11行显示的“NTCPP”就是一个目录名。

最后计算数据区DATA的首扇区地址。因为FAT16文件系统的FDT表占用固定的32个扇区,所以用FDT表的首扇区号加上32,就是数据区的首扇区号,计算结果是“8386538”。为了验证这种推导是否正确,仍然采用前面的方法,将其前一个扇区的数据并列显示在对话框中加以比较。程序的运行界面如图2-7所示。

screenshot

如图2-7所示,左边的对话框显示的是“8386537”号扇区的数据,右边的对话框显示的是“8386538”号扇区的数据。因为“8386537”号扇区属于FDT表的最后一个扇区,而一般情况下FDT表不会被写满,所以该扇区的数据为0。由此可以验证,“8386538”号扇区确实是数据区DATA的首扇区。

相关文章
|
11月前
|
存储 Linux
高级格式化 4K 扇区硬盘的介绍
硬盘行业正在经历一场变革。多年来,在存储密度大幅增长的同时,作为硬盘设计最主要方面之一的逻辑块格式化大小(也称为扇区)却始终没有变化。
163 0
|
Windows
[操作系统]Fat32磁盘结构与数据恢复实验报告(上)
[操作系统]Fat32磁盘结构与数据恢复实验报告
268 0
[操作系统]Fat32磁盘结构与数据恢复实验报告(上)
[操作系统]Fat32磁盘结构与数据恢复实验报告(下)
[操作系统]Fat32磁盘结构与数据恢复实验报告
208 0
[操作系统]Fat32磁盘结构与数据恢复实验报告(下)
|
存储 安全 数据安全/隐私保护
基本磁盘与动态磁盘 RAID磁盘冗余阵列区分(简单了解各种卷组)
基本磁盘与动态磁盘 RAID磁盘冗余阵列区分(简单了解各种卷组)
488 0
基本磁盘与动态磁盘 RAID磁盘冗余阵列区分(简单了解各种卷组)
|
存储 数据安全/隐私保护 Windows
|
存储 安全 数据安全/隐私保护
《NTFS文件系统扇区存储探秘》——导读
在众多的磁盘文件系统中,NTFS文件系统是各项性能都比较优越的文件系统,集中体现了高效和安全两大特性。NTFS文件系统早年在服务器领域得到了广泛应用。微软公司推出WINDOWS 2000和WINDOWS XP以来,NTFS文件系统在PC机上也得到了迅速普及。
1764 0