数据的逻辑运算

  1. 逻辑或:逻辑加运算,运算符:+、OR等,当输入变量有一个满足时(例如,为1有效),输出就有效。所有输入变量均不满足条件(例如,为0),输出就无效。例如0+0=0;0+1=1;1+1=1
  2. 逻辑与:逻辑乘运算,指所有输入都同时满足条件(例如,都为1有效),输出才有效(如,为1),否则输出无效(为0).例如1*1=1;0*1=0
  3. 逻辑非:逻辑反运算。运算符为在变量上画一条横线。输入变量中为1时,输出为0,输入为0,输出为1.也就是0的非为1,1的非为0。
  4. 逻辑异或:如果AB两个值是相同,则结果为0,如果AB两个值是不相同,则结果为1,0⊕0=0;1⊕0=1;1⊕1=0.(这种逻辑运算在RAID中是一种很重要的算法,熟练掌握)

数据结构的分类

数据结构关系分类:线性结构,树结构,图结构。

数据结构按层次分类有两种:数据的逻辑结构和数据的物理结构

数据的逻辑结构:线性关系和非线性关系。非线性结构包括图结构和树结构。

数据的物理结构:是数据逻辑结构在计算机中的表示和实现,称数据“存储结构”

存储结构:顺序、链式、索引、散列。

树结构:在文件系统中使用最多 。

winhex窗口认识:

打开的是一个原始磁盘镜像文件,按页面浏览就会产生诸多不便 ,会让分析,定位扇区及解释文件 系统等常规工作无法完成,这时就需要将此文件强制按照每512字节/扇区进行处理,“专业工具——将镜像文件转换为磁盘”

选择扇区数据:在起始位置,鼠标右击选择“选块起始位置”,在尾部数据鼠标选择“选块尾部”,然后复制选块

。将数据 写入到相应的位置。

粘贴与写入的区别:

粘贴:

,会另起一行,粘贴数据。

写入:会在选定的数据覆盖原有数据。

数据恢复工具有(存放在百度网盘):

WinHex、DiskExplorer for Fat、DiskExplorer for Fat、DiskExplorer for NTFS、DiskExplorer for Linux

虚拟硬盘工具:win7 8 10 都自带。计算机右击“管理”,选择磁盘管理,创建VHD。选择位置保存文件。

引导程序占用的前400字节:

以下是十进制的表示方法(点击偏移地址:输入399,就是引导程序占用的前400字节)

以下是十六进制表示方法(点击偏移地址:输入1B7,就是引导程序占用的前400字节)

WIN磁盘标签占用引导程序后的4个字节,WIN系统对硬盘初始化时写入的一个磁盘标签。

86 67 13 36

分区表:1BEH~1FDH的64个字节,是MBR中非常重要的一个结构。

结束标志:“55 AA”1FEH~1FFH.(H表示十六进制,不需要在偏移量输入H)

总结:首先是引导程序前440字节,接着4个字节是磁盘签名标签,空两个字节后是分区表占用64字节,最后是结束标志55AA。

一块硬盘如果还是系统引导盘,MBR扇区中可以没有引导程序,但是绝对不能没有磁盘签名。

磁盘签名实验结果:

将磁盘签名删除后,重新挂载,WINhex工具查看磁盘签名低位字节有改变,高位与原来还是一致的

原来磁盘签名

修改后磁盘签名。13,36是高位。再一次删除磁盘签名,另外一台计算机没有给该硬盘写入磁盘签名,就会提示没有初始化。

分区表的作用:用来管理硬盘的分区的,如果分区表被清除或者破坏,则硬盘的分区就会丢失。

结束标志:在执行MBR的引导程序时,会验证MBR扇区最后两个字节是否为"55 AA",如果 是,正常执行,否则,报错。

如果一块MBR结构完好并且有分区的硬盘,其结束标志"55aa"被破坏后,该硬盘的分区也将无法读取,硬盘会成为“没有初始化”状态。

主磁盘分区结构分析:

结束标志前64字节中,以16字节为一个分区表项来描述一个分区的结构

(80)(02 03 00)(07)(A7 20 07)(80 00 00 00)(00 E0 01 00)

(80):表示C盘为活动分区(可引导的)。即系统会从C盘活动,只能是00H和80H,

(02 03 00):表示C盘的起始扇区为(0柱面 03扇区 02磁头),注意是反过来看。

(07):表示C盘的文件系统为NTFS。

(A7 20 07):表示C盘的结束扇区为(柱面:07=(00000111)2=(4+2+1)10 扇区:20=(00100000)2=(32)10 磁头:A7=(1010 0111)2=(128+32+7)10),注意是反过来看。注:有1的地方相加。

(80 00 00 00):反向(00 00 00 80)16=(128)10表示C盘前面已有128个扇区,这128个扇区为系统隐藏扇区.大于1字节的数值被以低字节在前的存储格式顺序保存下来,按照习惯的高位在前的方式表示为(00 00 00 80)

(00 E0 01 00):反向(00 01 E0 00)16=

07:表示NTFS .05:表示EXTENDED(扩展分区),0B:表示FAT32格式

一个字节8位表示。

128(第一分区开始扇区数)+122880(第一分区的总扇区)=123880(第二分区的开始扇区号)

123008是第二个分区扇区开始,

点击扇区输入“123008”,到第二个扇区,

扩展分区的结构分析

EBR中分区表中第一项描述第一个逻辑驱动器,第二项指向下一个逻辑驱动器的EBR。如果不存在下一个驱动器,第二项就不需要使用。

首先查看0扇区分区表项,第一个分区表:80表示活动区,07表示NTFS。第二个分区表0表示非活动区,0F/05表示扩展分区.

表示下一个起始扇区位置。

查找“209,719,296”扇区,查看第一分区表项是用来管理第一个逻辑驱动器的,开始于2048号扇区,这个值就不是绝对值了,而是个相对值,也就是说这值EBR1开始扇区209,719,296作为起始扇区来定位。

第二分区表,分区类型为05H,为什么在扩展分区中还有扩展分区?因为扩展分区是一种链式结构来管理的。EBR扇区中第一个分区表项总是描述当前的逻辑驱动器,第二个分区表项则链接到下一个EBR扇区,583,012,352也是相对值。也就是说这值EBR1开始扇区209,719,296作为起始扇区来定位。583,012,352+209,719,296=792731648下一个逻辑驱动器开始扇区

查找”792731648“扇区,第一分区表2048是相对值,是以MBR2"792731648"作为起始扇区来定位。第二分区表”1,163,927,552“相对值,是以EBR1”209,719,296“所有扇区为起始点来定位的,而不是EBR2,这一点很重要,一定不要搞错。1,163,927,552+209,719,296=1373646848

查找”1373646848“扇区,发现只能第一个分区表中有数据,第二分区表中没有数据,这说明是主扩展分区中的最后 一个EBR扇区,因为最后一个,所有 就没有下一个扩展分区了,第二个分区表自然就不再使用了。

总结:一共四个盘,一个主磁盘区,另外三个是逻辑驱动器。在0扇区中,第一分区表是可以看出主分区的格式,分区是从2048开始的。第二分区表描述是一个扩展分区的,因为类型是0F/05,

,这个参数很重要,下面磁盘的绝对值起始扇区值要与这值相加。查找209719296扇区,查找这个扇区后,第一个分区表是当前逻辑驱动器参数,扇区2048是相对值是基于EBR1(第一逻辑驱动器)”209719296“作为起始扇区来定位的。第二分区表,分区开始位置也是相对值,与(第一逻辑驱动器)”209719296“作为起始扇区来定位相加,得出第二个逻辑驱动器开始扇区,第一分区表的开始分区值是将第二个逻辑驱动器开始扇区作为定位的。第二个分区表中的开始分区值要与第一个开始扇区相加,得出第三个逻辑驱动器。第三个逻辑驱动器第一个分区表,开始分区值是把第三个逻辑驱动器开始扇区作为定位。第二个分区表的开始分区值与EBR1开始扇区值相加,注意不是EBR2开始扇区值。

我们要计算出每个逻辑驱动器开始扇区值,第一个逻辑驱动器值可以从主磁盘中第二个分区表开始分区获取,得出第二个逻辑驱动器开始扇区值。第三个逻辑驱动器开始扇区值从第二个逻辑驱动器第二分区表中开始分区值与第一个逻辑驱动器开始扇区值相加。解决了每个逻辑驱动器开始扇区值。每个逻辑驱动器第一分区表的开始分区值是相对值,将每个逻辑驱动器开始扇区作为定位。

MBR及EBR被破坏的分区恢复实例

症状如下:

磁盘显示没有初始化,分区丢失。可以确定该硬盘MBR结构一定是有问题的。

需要将故障盘全部扇区镜像到另一块盘中。

恢复思路和方法:

修复MBR引导程序及结束标志,MBR扇区结构由引导结构、WIN磁盘签名、分区表、结束标志四部分组成。MBR的引导程序具有公共引导特性,找一块正常硬盘的MBR扇区中复制这段代码,到故障盘,为了避免两块硬盘的磁盘签名相同,可以把磁盘签名的4个字节稍作修改。

第三步:写入结束标志:“55 AA”1FEH~1FFH.

第四步:结束标志前的64个字节。分区表:1BEH~1FDH的64个字节,全部清零,方便重建分区表。

修复第一分区(DBR指主磁盘区,EBR指扩展分区)

跳转到硬盘63号或128扇区(为什么是63或128?因为第一个开始扇区是63或128),查看DBR是否完好?

跳转128后,点击Boot Sector NTFS

查看这三个数值:分别是分区类型,开始扇区,分区大小102399(注:这数值要加1,即102400),得到该数值后,可以填写到MBR第一个分区表中,第一分区装有操作系统,要激活填写80,C/H/S,已经不起作用,可以随便写开始C/H/S:1/1/1,结束C/H/S:2/2/2.分区类型:07,分区开始扇区128,分区大小102400,第一分区修复完成。

修复第二分区:

将第一分区的开始位置128+分区大小102400,结果为102528,跳转到102528扇区,发现是DBR,使

使用NTFS,将分区类型 开始扇区 分区大小,填写到MBR模板中,注意NTFS里的分区大小要加1.第二个分区恢复完成。

修复第三个分区

将第二分区表中的开始位置与分区大小相加,得到14378175,跳转到这扇区,发现没有镜像成功,再往后转63个扇区,NTFS查看参数,跳转14378175扇区清零,扇区未尾填入结束标志55AA,打开MBR模板填写分区表第一项,注分区表第二项暂填写 。

修复第四个分区

将扩展分区开始扇区14378175加上逻辑驱动器1的开始扇区号63,再加上逻辑驱动器1的大小,结果为27888840,跳转到27888840扇区,发现没有镜像成功,再往后转63个扇区,NTFS查看参数,跳转27888840扇区清零,扇区未尾填入结束标志55AA,打开MBR模板填写分区表第一项,

填写主扩展分区表项和子扩展分区表项

扩展分区开始扇区14378175,加上逻辑驱动器1开始扇区63加上逻辑驱动器1大小,加上逻辑驱动器2开始扇区63加上逻辑驱动器1大小的和)(第二个空白),209719296数值是由上面一个分区表开始扇区与分区大小的和,跳转到MBR扇区并打开模板填入数值到第三个分区表,注:MBR扇区第一分区表是第一主磁盘器,第二分区表是第二主磁盘器,第三分区表是扩展分区05/0F的数值。

子扩展分区的分区表项应该填写在EBR1(逻辑驱动器1)跳转到14378175扇区,填写第二分区表项,开始扇区为第一分区表项开始扇区和分区大小的和。子扩展分区大小 为开始分区63加上逻辑驱动器2的大小31872960

以上数值为案例数值,可能与实际不不一样。

原来有四个分区,由于一次操作,其中一个分区被删除。

恢复思路:

分区误删除后,主要就是对分区表进行重建。打开MBR模板,查看分区表数值是正常的,接下来跳转到主扩展分区05分区类型的开始位置,,打开EBR2该扇区的模板,第一分区表项是管理逻辑驱动器1,发现第二分区表项开始位置和分区大小是错误的。我们按照错误的开始扇区跳转到所在扇区,其中分区表只使用了一个分区青藏,显然这是最后一个逻辑驱动器的EBR扇区,也就是EBR3,其管理的是硬盘的最后分区。分析发现,EBR1的指针直接指向了EBR3,把EBR2跳过去,而丢失的那个分区正是由EBR2管理的。EBR2被跳过去也就是不起作用。这正是分区丢失的原因所在。我们把EBR2的起始扇区,也就是EBR2第一分区表项的开始扇区与分区大小的和,这个是相对一个扇区号,转换成绝对扇区号(相对扇区号+MBR第二项分区表开始扇区),跳转后,EBR2分区表中还存在,

如何让EBR1R 指针指向EBR2所在扇区的呢。只需要修改EBR1的分区表项2即可。

将EBR1的第二分区表项的开始扇区修改为第一分区表项的开始扇区和分区大小的和,第二分区表项的分区大小填写EBR2第一分区表项的开始扇区和分区大小 ,重启,恢复完成。

相关推荐