该案例是一个非常简单的常规RAID-0案例,由两块500GB物理盘组成,两块物理盘已被做成两个文件镜像。这两个文件是RAID-0中两块成员盘的部分镜像,直接用WinHex打开这两个文件就可以进行分析了。
用WinHex打开镜像文件后,WinHex是用“页”来显示文件内容的,而不是“扇区”,如图17-29所示。
在分析RAID结构时,需要以“扇区”为单位去分析,而不是“页”。WinHex提供将“页”转换为“扇区”的功能,具体菜单命令为“专用工具”→“将镜像文件转换为磁盘”,如图17-30所示。
分别将每个镜像文件解释为磁盘后,就可以开始分析了,这一步是恢复磁盘RAID数据的重点步骤。
这个RAID是由两块盘组成的RAID-0。首先做一个约定,我们这里称文件“0.img”为“硬盘0”,文件“1.img”为“硬盘1”,但请读者注意,这些文件的编号只是随意编排的,并不一定与RAID中各个硬盘的盘序相符。
通过WinHex查看两块盘的第一个扇区可以看出,“硬盘0”的第一个扇区是MBR,如图17-31所示。
从图17-31的MBR扇区尾部可以看见磁盘签名、分区表项及结束标志。“硬盘1”的第一个扇区看不出是什么结构,如图17-32所示。
从两块成员盘的第一个扇区就可看出“硬盘0”是RAID的开始,所以“硬盘0”是0号盘,而“硬盘1”自然就是1号盘了,这样,RAID的盘序就确定了。
下面分析RAID的条带大小。
从“硬盘0”MBR扇区的分区表可以看出该RAID只分了一个区,分区开始位置在63号扇区,如图17-33所示。
跳转到“硬盘0”的63号扇区,发现是一个DBR扇区,如图17-34所示。
从这一点可以证明该RAID-0的条带大小一定大于或等于64扇区,而“硬盘0”的64号扇区的内容显然是$Boot文件的第二个扇区,即NTLDR区域,也就是说与DBR是衔接的,如图17-35所示。
这就可以断定该RAID-0的条带大小一定大于64扇区了。
再跳转到“硬盘0”127号扇区,查看127扇区的内容与128扇区的内容是否有衔接性,如果没有,就可以断定块大小为128扇区了。图17-36所示为“硬盘0”127号扇区。
图17-37所示为“硬盘0”128号扇区。
从这两个扇区看不出它们是否有衔接性,所以无法判断条带大小是否为128扇区。再看“硬盘1”的127号扇区和的128号扇区,同样看不出数据是否衔接,所以这种方法行不通,我们只能寻找其他方法。
因为NTFS文件系统中的$MFT文件是我们所熟悉的,可以从这个文件入手来判断条带大小。找$MFT文件的位置有两种方法,一是可以通过搜索文件记录的头标志找到,二是可以通过BPB参数大致算出$MFT文件的开始位置。我们采用第二种方法。
DBR在“硬盘0”的63号扇区。跳转到DBR扇区,通过WinHex的模板查看BPB参数得知$MFT文件开始于20152簇,如图17-38所示。
从BPB参数中还能够知道每簇扇区数为8,所以可以计算出$MFT文件在逻辑卷中的扇区号为20152×8=161216,而该RAID-0是由两块成员盘组成的,所以$MFT文件在物理盘中的开始扇区大致为(161216÷2)+63=80671。跳转到“硬盘0”的80671扇区,果真是$MFT文件的开始,如图17-39所示。
同时将“硬盘1”也跳转到80671号扇区,内容如图17-40所示。
显然这也是一个文件记录,现在就从这两个并列的扇区入手,分析条带大小。
从文件记录的内容中可以看到该文件系统的文件记录包含“文件记录号”这一参数,在文件记录的“2CH-2FH”偏移地址处就是当前文件记录的记录号,“硬盘0”的80671号扇区为0号文件记录,如图17-41所示。
“硬盘1”的80671号扇区为0x40号文件记录,换算为十进制也就是64,如图17-42所示。
两块成员盘的80671号扇区所在文件记录的差为64,而每个文件记录占2个扇区,所以这两个并列的扇区之间就相差64×2=128个扇区,即条带大小为128扇区。
重组数据可以通过镜像的方式,也可以通过工具组建虚拟RAID-0,然后直接提取数据,下面分别讲解。
我们这里介绍用Raid Reconstructor做镜像的方法,做法如下:
第1步 选择RAID类型。
打开Raid Reconstructor工具,选择RAID类型为RAID-0,如图17-43所示。
第2步 设定盘数。
该RAID-0由两块成员盘组成,在“drives”后面输入“2”,如图17-44所示。
第3步 加入镜像文件。
类型选择好后,在“Drive1”和“Drive2”处分别把两个镜像文件加载进去,如图17-45所示。
注意:在加载镜像文件时必须按照事先分析好的盘序依次加进去。
第4步 设置条带大小。
两个镜像文件按顺序加载好后,需要设置RAID在每块盘中的起始扇区号及条带大小,“Start sector of the RAID on each individual drive”这一项就是设置RAID在每块盘中的起始扇区号的,当前RAID-0起始于每块物理盘的0号扇区,所以填0即可。“Block size”处是填写条带大小的位置,依据前面分析好的结果,填写128,如图17-46所示。
第5步 打开驱动器。
参数都设置好后,单击工具下方的“Open drive”,将驱动器打开,如图17-47所示。
第6步 做镜像。
该RAID的结构我们已经分析好,所以工具中的“Analyze”就可以跳过了,直接进入“Copy”。
可以选择做成硬盘镜像,也可以选择做成文件镜像,这里选择做成镜像文件,如图17-48所示。
选择一个镜像文件的保存路径后,单击“Copy”按钮就可以开始做了。因为这两块盘并不是RAID-0中完整的两块成员盘,只是部分扇区的镜像,所以数据重组后无法看到文件。如果是两块完整的硬盘或镜像文件,这一步做完后就可以看到RAID逻辑盘中的文件了。
有些时候并不一定需要把RAID逻辑盘做成镜像,而只需要组建一个虚拟RAID就可以提取需要的数据了,下面实际操作。
第1步 打开镜像文件。
打开工具R-studio,选择Drive→Open Image命令,如图17-49所示。
打开镜像文件所在的路径,选中两个镜像文件,单击“打开”按钮,如图17-50所示。
第2步 创建虚拟RAID。
选择菜单“Create”→“Create Virtual BLOCK RAID”,创建一个虚拟条带RIAD,如图17-51所示。
然后在工具的界面右侧选择RAID类型为RAID-0,如图17-52所示。
创建了一个虚拟RAID-0后,在界面右边的虚拟RAID-0区域内单击鼠标右键,把两个镜像文件按照分析好的盘序的顺序加入进来,如图17-53所示。
第3步 设置参数。
用鼠标单击右边的“Block Size”,把块大小设置为64KB(128扇区),如图17-54所示。
第4步 查看数据。
参数设置正确后,在左边对话框中的“Virtual Block Raid 1”就会出现RAID-0逻辑盘的分区,如图17-55所示。
用鼠标双击“Partition1”就能够直接看到RAID-0逻辑卷中的数据了,或者也可以在“Virtual Stripe Set 1”上单击鼠标右键,对该虚拟RAID进行扫描,如图17-56所示。
另外也把这个虚拟RAID-0做成一个镜像文件,如图17-57所示。
以上方法可以根据实际情况选择,总之以最终得到数据为目的。