论文部分内容阅读
摘要 本文根据硬盘分区链表、主引导扇区、分区结点的结构和特点,提出一组对分区链表进行恢复的方法。
关键词 分区链表;主引导扇区记录;分区结点
中图分类号:TP333 文献标识码:A 文章编号:1671—7597(2013)041-113-01
分区链表对于硬盘数据意义重大,假如分区链表因为种种原因被破坏,如病毒、误操作等,就会造成无法进入系统或者盘符丢失,从而找不到数据。这里我们提供了一组对分区链表恢复的方法。
主引导扇区主要由三部分组成:主引导记录 MBR(Master Boot Record)、硬盘分区表DPT(Disk Partition Table)和结束标志字三大部分组成。分区表位于整个硬盘的0柱面0磁头1扇区{(柱面,磁头,扇区)|(0,0,1)},以位移1BEH开始的第一分区表作为链首,由表内的链接表项指示下一分区表的物理位置(xx柱面、0磁头、1扇区),在该位置的扇区内同样位移1BEH处,保存着第2张分区表,依次类推,直至指向最后一张分区表的物理位置(yy柱面、0磁头、1扇区)。因该分区表内不存在链接表项,即作为分区表链的链尾。如图1所示,这是一个具有4个逻辑盘的硬盘,位于硬盘柱面0、磁头0、扇区1上MBR的分区表指向基本分区及扩展分区中的第一个逻辑盘。
图1 具有4个逻辑盘的分区链表示意图
我们可以使用软件对分区表进行备份与恢复,但是操作过程中很有可能会出现纰漏而导致崩溃。根据图1我们可以看出,能够找到C:以外的其他逻辑盘的惟一办法是沿着虚拟MBR分区表项的基本链进行查找。如果其中一个逻辑盘的分区数据丢失时,就无法找到下一个虚拟MBR分区表。一般的备份还原软件也只涉及到系统盘的分区数据修复,我们所研究就是如何找到下一个分区表信息。
方法1:根据主分区引导记录恢复
如果硬盘主分区引导记录完整,并且是引导扇区的情况下,我们可以读出硬盘参数,磁头数、每磁道扇区数、总柱面数、硬盘数等,并根据主引导记录计算出结尾柱面号、扇区号:
BI=80H;HS=01H;Ss=01H;Cs=00H;He=HEADS-1;SR=SECTORS
结尾柱面号=(NS+SECTORS)/SECTORS/CYCLINDERS-1;
结尾扇区号=SECTORS
用这种方法确定Se和Ce,并用以下C语言语句求出SI:
if(NS〈0x8000)SI=1;
else if(NS〉0xffff)SI=6;
else SI=4
如果结尾柱面=CYLINDERS,检测终止;否则,读入下一个柱面的0头1扇区。若该扇区的前1BEH字节均为零,且以55H0AAH结尾,则说明这是扩展分区的扩展主引导记录,次扇区记作EMB,否则检测结束,对于表项2:
BI=00H;HS=00H;Ss=EMB[0X1C0];Cs=EMB[0X1C1];SI=05H;He=HEADS-1;
R=SECTORS+表项1的NS
因为每一个扩展卷中的物理地址都以链表的方式记录在MBR中,所以,可以将主引导记录中的链表读至结束,并将尾部的扩展主引导记录记作EMBT,则:
Se=EMBT[0X1C4];
Ce=EMBT[OX1C5]
NS=(结尾柱面号-起始柱面号+1)*SECTORS*HEADS
使用以上方法可以完成對表项2的修复,将新的主引导记录替换原有记录即可。
方法2:根据结点扇区号恢复
在MBR被破坏的情况下,我们需要逐一柱面搜索读取磁头0扇区1,并将记录连接成多个链表,根据它可以计算出每个逻辑盘的大小,并搜索出与MBR的分区表连接的链表,从而进行整个分区链表的恢复。
另外,我们可以通过结点扇区号的方式进行恢复,它可以通过以下几种方式获得:1)分区链表的结构分析得来。2)引导扇区的备份信息得来。3)搜索虚拟主引导扇区号等方式得到。通过一个结点扇区的物理位置,可以计算到其他结点的扇区物理位置和分区大小,进而恢复分区表。
图2 根据结点扇区号恢复分区链表流程
结论:本文介绍了根据主分区引导记录、扩展主引导记录、结点扇区号对分区链表进行恢复的方法。这些恢复方法是在了解分区链表结构特点,分析记录表结构和虚拟主引导扇区的特征的基础上进行的,经过大量实验证明,只要引导扇区保持完好,就能够对分区表进行修复;即使引导扇区损坏,也可以通过分区结点进行恢复。
参考文献
[1]鲁恩铭,袁丁.windows环境中硬盘分区链表结构分析与分区表恢复[J].科协论坛,2008.
[2]周英.硬盘“逻辑炸弹”的排除[J].达州职业技术学院学报,2004.
作者简介
徐娟(1970-),女,广东环境保护工程职业学院机电工程系工学硕士,讲师,主要从事电子信息及计算机应用工作。
关键词 分区链表;主引导扇区记录;分区结点
中图分类号:TP333 文献标识码:A 文章编号:1671—7597(2013)041-113-01
分区链表对于硬盘数据意义重大,假如分区链表因为种种原因被破坏,如病毒、误操作等,就会造成无法进入系统或者盘符丢失,从而找不到数据。这里我们提供了一组对分区链表恢复的方法。
主引导扇区主要由三部分组成:主引导记录 MBR(Master Boot Record)、硬盘分区表DPT(Disk Partition Table)和结束标志字三大部分组成。分区表位于整个硬盘的0柱面0磁头1扇区{(柱面,磁头,扇区)|(0,0,1)},以位移1BEH开始的第一分区表作为链首,由表内的链接表项指示下一分区表的物理位置(xx柱面、0磁头、1扇区),在该位置的扇区内同样位移1BEH处,保存着第2张分区表,依次类推,直至指向最后一张分区表的物理位置(yy柱面、0磁头、1扇区)。因该分区表内不存在链接表项,即作为分区表链的链尾。如图1所示,这是一个具有4个逻辑盘的硬盘,位于硬盘柱面0、磁头0、扇区1上MBR的分区表指向基本分区及扩展分区中的第一个逻辑盘。
图1 具有4个逻辑盘的分区链表示意图
我们可以使用软件对分区表进行备份与恢复,但是操作过程中很有可能会出现纰漏而导致崩溃。根据图1我们可以看出,能够找到C:以外的其他逻辑盘的惟一办法是沿着虚拟MBR分区表项的基本链进行查找。如果其中一个逻辑盘的分区数据丢失时,就无法找到下一个虚拟MBR分区表。一般的备份还原软件也只涉及到系统盘的分区数据修复,我们所研究就是如何找到下一个分区表信息。
方法1:根据主分区引导记录恢复
如果硬盘主分区引导记录完整,并且是引导扇区的情况下,我们可以读出硬盘参数,磁头数、每磁道扇区数、总柱面数、硬盘数等,并根据主引导记录计算出结尾柱面号、扇区号:
BI=80H;HS=01H;Ss=01H;Cs=00H;He=HEADS-1;SR=SECTORS
结尾柱面号=(NS+SECTORS)/SECTORS/CYCLINDERS-1;
结尾扇区号=SECTORS
用这种方法确定Se和Ce,并用以下C语言语句求出SI:
if(NS〈0x8000)SI=1;
else if(NS〉0xffff)SI=6;
else SI=4
如果结尾柱面=CYLINDERS,检测终止;否则,读入下一个柱面的0头1扇区。若该扇区的前1BEH字节均为零,且以55H0AAH结尾,则说明这是扩展分区的扩展主引导记录,次扇区记作EMB,否则检测结束,对于表项2:
BI=00H;HS=00H;Ss=EMB[0X1C0];Cs=EMB[0X1C1];SI=05H;He=HEADS-1;
R=SECTORS+表项1的NS
因为每一个扩展卷中的物理地址都以链表的方式记录在MBR中,所以,可以将主引导记录中的链表读至结束,并将尾部的扩展主引导记录记作EMBT,则:
Se=EMBT[0X1C4];
Ce=EMBT[OX1C5]
NS=(结尾柱面号-起始柱面号+1)*SECTORS*HEADS
使用以上方法可以完成對表项2的修复,将新的主引导记录替换原有记录即可。
方法2:根据结点扇区号恢复
在MBR被破坏的情况下,我们需要逐一柱面搜索读取磁头0扇区1,并将记录连接成多个链表,根据它可以计算出每个逻辑盘的大小,并搜索出与MBR的分区表连接的链表,从而进行整个分区链表的恢复。
另外,我们可以通过结点扇区号的方式进行恢复,它可以通过以下几种方式获得:1)分区链表的结构分析得来。2)引导扇区的备份信息得来。3)搜索虚拟主引导扇区号等方式得到。通过一个结点扇区的物理位置,可以计算到其他结点的扇区物理位置和分区大小,进而恢复分区表。
图2 根据结点扇区号恢复分区链表流程
结论:本文介绍了根据主分区引导记录、扩展主引导记录、结点扇区号对分区链表进行恢复的方法。这些恢复方法是在了解分区链表结构特点,分析记录表结构和虚拟主引导扇区的特征的基础上进行的,经过大量实验证明,只要引导扇区保持完好,就能够对分区表进行修复;即使引导扇区损坏,也可以通过分区结点进行恢复。
参考文献
[1]鲁恩铭,袁丁.windows环境中硬盘分区链表结构分析与分区表恢复[J].科协论坛,2008.
[2]周英.硬盘“逻辑炸弹”的排除[J].达州职业技术学院学报,2004.
作者简介
徐娟(1970-),女,广东环境保护工程职业学院机电工程系工学硕士,讲师,主要从事电子信息及计算机应用工作。