Winhex手工定位NTFS文件系统下的文件
 
相信很多朋友在认真看完数据恢复书籍中,关于NTFS文件系统中讲述的一系列属性以后,或多或少还是有些范迷糊。确实,NTFS文件系统结构比较复杂,且书中也没有讲到如何利用这些属性来定位文件,这对于初学者来说,无疑是一个缺憾.为弥补这一缺憾,我根据我个人对NTFS文件系统的理解,制作了本分析过程。申明,这只是本人的理解,难免会有错误的地方。仅供大家参考。
现在我就以我电脑里的一个叫“MFT结构分析”的图片文件,其存储路径为E:\教程\数据恢复。
接下来我们一层一层的去定位文件.以对所学的属性做一个融会贯通.或许有的朋友会说:在实际操作中,可以通过在MFT中搜索文件名的方式来做出定位,这样也是可以的。我制作本分析过程的初衷也就是给初学者对NTFS的理解提供一个思路。
    学过FAT文件系统的,一定知道如何定位分区以及DBR,那好,我们就直接从DBR开始
DBR中得出,每簇扇区数为08H,($MFT一下简称MFT.MFT的起始簇为:00000C00H,转换为十六进制分别为8扇区和786432簇。现在跳转到786432簇,如下图:
我们可以看到,这是MFT的第一个记录,记录的是它自己。,接下来我们跳转到MFT的关于根目录的记录,也就是第5号记录。根目录一般存储的文件以及文件夹比较多。所以,它是非常驻的,关于这些文件夹的信息记录在了其它的位置。而记录在什么位置是由索引分配属性来记录的,也就是A0属性,接下来着重看一下A0属性,如图:
上图红色的标注的位置是运行(Data run31H表示用三个字节描述的是索引的位置的起始LCN3E9002H),一个字节描述的是长度(02H)。下一个运行的位置描述的是00H表示到此结束,只有一个运行。(提示:如果下一个运行由内容,那么它描述的LCN加上前一个运行描述的LCN才是其真正的LCN,如果由三个运行,用第三个运行的LCN加上前两个的LCN就是第三个运行的真正的LCN,以此类推!)
我们将其转换为10进制数值得到这样一个信息,索引项的起始位置为167998簇,乘以每簇扇区数8,等于1343984扇区,长度为2个簇,跳转到1343984扇区,如图:
这个位置是根目录的索引项,可以看到里面索引的文件名为元数据。“教程”这个文件夹也存放在根目录里面,我们搜索该文件名,以找到相对应的索引项,由于NTFS里面文件名是用Unincode字符来表示的,所以该文件名转换为16进制数值为59650B7A8765H,我们在根目录索引项里搜索此文件名:
 
1343994扇区找到了“教程”的索引项,(1343994-1343984=10,每簇扇区数为8,说明次索引项存放在第二簇里面)从上图可以看出,其文件记录存放在第6B3500H号扇区,转换为十六进制为13675号记录,一个MFT占用2个扇区,其文件记录的开始为,从MFT第一号记录向下数27350个扇区,就其文件记录存放的位置,计算方式为:6291456 +13675*2=6318806,跳转到6318806扇区,如图:
 
图中描述的本MFT号正是我们要找的,看下面的运行31011BEB01H,转换为16进制数值为:125723,再乘以每簇扇区数8等于1005784扇区,现在跳转到1005784扇区搜索“数据恢复”这个文件夹的十六进制数值70656E6362600D59H,结果没找到,难道是此文件夹没有记录?不可能。猜想,会不会是被驻留了。存放在MFT里面,跳回6318806扇区,搜索70656E6362600D59 ,在该MFT的第二个扇区里面找到了该文件夹的记录。
跳转到文件的“数据恢复”文件MFT记录号:23A100000000H,十进制为41251号,乘以2加上6291456,等于6373958。如图:
NTFS多少有点了解的人都会发现,这并不是MFT。为什么?看一下我的MFT的分布情况,如图:
 
我的MFT是分三大块来存放的,(我自己的命名)接下来计算一下:
第一块:MFT786432簇开始,796687结束用了10255个簇=82040扇区,每2个扇区为一个完整的MFT
第二块:MFT397607开始到结束397686,用了79个簇632
第三块:……
 
第一块MFT只用了10255个簇来记录,(我用簇为来但来计算)而我们要找的文件“数据恢复”存放在41251号,(41251*2/8= 10312.75簇)已经超出了第一块的记录范围,超出75.75个簇,经计算,在第二块里面才是存放的“数据恢复”的MFT。第二块的开始位置为397607簇,加上75簇,等于397664簇,由于硬盘是从0开始记录数据的,所以,这个地方应该还要减去1。跳转到397663簇的四分之三(0.75)位置,也就是第6个扇区
根据运行,得知其起始LCNA08AH(35488*8=283904),占用一个簇。跳转到283904扇区:搜索文件名“MFT”结构分析4D0046005400D37E7E00H
 
其文件MFT号为26A1H41254号记录),根据前面的MFT记录块的计算,在“数据恢复”MFT记录向下数三个记录,就是“MFT结构分析”这个文件的MFT记录了。跳转到该位置
 
其运行为3281000F8F00H,起始LCN0F8F0036623*8=292984扇区),长度为8100H129*8=1032扇区),那么结束位置为292984+1032=294016扇区
跳转到文件的开始292984
跳转到294016,选取上一个扇区的结尾
编辑-复制-植入新文件-保存文件名为“MFT结构分析.jpg”。双击,能够正常打开。
说明定位是正确的,而且也没有计算错误。
大家可以看到NTFS要比FAT复杂的多,但是只要是对文件系统的结构充分了解,然后再通过逆向分析,发现也不是很难。NTFS文件系统是学系RAID的基础,要想学习RAID的朋友,一定得充分熟悉NTFS的结构。文中有明白的地方请加QQ11391767讨论。如有错误的地方,也欢迎各位网友加我的QQ共同讨论86081166