摘 要:随着信息技术的发展,计算机的应用范围也越来越广泛,随之计算机信息安全也越来越被人所重视,本文着重对Windows NTFS下硬盘格式化数据的恢复技术进行了研究,其它不同格式的磁盘数据恢复技术与其类似
关键词:Windows NTFS;数据恢复
1 引 言
随着信息技术的发展,计算机的应用越来越广泛,在人们生活中所扮演的角色也日益重要。目前,计算机已经渗透到了文教、军事、政府与日常生活中的各个方面,一些非常重要的信息都存储在计算机中。随着技术的进步,信息安全的保障已经上升到了国家战略安全的层面,“电脑有价,而数据无价”的说法是对数据重要性的肯定。
数据的价值非常大,一旦数据丢失或者破坏,将带来难以想象的后果,从1998年的CIH病毒事件,到911事件,花旗银行390万用户信息丢失事件等,这些都给人们带来了巨大的财产损失,根据IDC的统计,美国自2000年以来,在数据被破坏的公司中,有54%立即倒闭,有28%的公司在两年内倒闭,仅剩下18%的公司依然生存下来。
在这些数据灾难中,有很大一部分是因为人为不小心所造成的。硬盘是数据存取的核心部件。通常硬盘被分成了很多个分区,数据都保存在这些分区中。一旦不小心,误操作将这些分区格式化,分区中的数据也会被格式化,造成数据损失,如何正确、迅速的恢复这些硬盘上的数据也是一个非常重要的问题,本文就以Windows NTFS格式下的硬盘误格式化为例,介绍硬盘误格式化后数据的快速恢复问题。
2 Windows NTFS下格式化数据恢复方案设计
当客户将一个NTFS卷进行高级格式化时,程序将Bitmap元数据中的内容以及根目录下的索引都清空掉。但是其上的数据、MFT以及除根目录以外的索引并没有被清除,而且MFT上记载着该文件的文件名、创建时间、所存储的簇号等信息。因此,在数据被覆盖之前进行数据的恢复从理论上来说可以达到100%。并且,目前Windows操作系统中对磁盘进行快速格式化或者非快速格式化都不会将卷从头到尾进行某个数字的填充。据此,本文提出了Windows NTFS下的数据恢复方案。其中MFT区域、文件名属性、目录树结构以及数据属性的恢复对数据的恢复至关重要。以下分别就这几个方面的设计进行介绍。
(1)获取MFT区域起始位置
在NTFS中,MFT的前面16项存储着16个元数据文件,在这16项之后才是用户用来建立文件或者文件夹的MFT。并且在MFT元数据中文件总是用“FILE”开始,这样,就可以很容易的获取MFT区域的起始位置,其设计的方案如图一所示:
(2)目录节点生成
每个文件都必须找到与其相关的目录。在每一个MFT中,便宜2H的地方有这个文件的MFT记录编号,在30H属性中,便宜18H处是其上一级目录的文件参考号,如果没有找到其父目录,就可以寻找目录名为DIR的根目录作为其父目录,目录节点的生成方案如图二所示:
图二 目录结点生成
图一 获取MFT的起始位置
(3)目录树重构
NTFS文件系统中采用了B+树形的目录结构,在A0H处保存有目录结构中所有节点的地址信息。因此,可以根据索引分配属性来重构目录树。但是在每一个MFT中便宜2CH的地方有文件的MFT记录编号,在30H属性便宜18H的地方有父目录的参考号。因此可以通过MFT号和父目录的文件参考号来寻找与文件相关的目录,从而实现目录树的重构,其实现可以采用递归的方法。
3 关键代码
(1)GetDiskInfo( )
GetDiskInfo( )函数可以获取DBR扇区、文件系统、扇区字节数、每簇的扇区数、以及MFT记录的簇号和每个索引的簇数等信息。
(2)GetFileItemFromMFT()
这个函数可以从缓冲区中获取硬盘上文件和文件夹的MFT项,然后分别将这些信息存储起来。
void GetFileItemFromMFTP(BYTE? *buff)
{
offset=(*LPWORD)(buff+20);
attrib=(*LPDWORD)(buff+offset);
while(attrib!=0xFFFFFFFF)
{
if(attrib==0x30)
{//找到30H,则获取文件名称
m_fileItems.push(fileItem);
}
if(attrib==0x80)
{//找到80H,则获取文件内容所在位置信息
m_fileItems.push(fileItem);
}
offset+=(*LPDWORD)(buff+offset+4)//获取下一个属性的偏移量
attrib=(*LPDWORD)(buff+offset);
}
4 结束语
本章介绍了Window NTFS下格式化磁盘的数据恢复技术,其实现的重点在于获取文件系统中的MFT起始位置,然后根据这个起始位置信息来构建文件系统的目录树,并根据文件系统的目录树中的数据存取地址,将其中的内容读取出来存放到新建的文件或者文件夹中,从而实现了数据的恢复,出于篇幅所限,文中重点介绍了Window NTFS下格式化磁盘的数据恢复方案设计,其具体的实现只是进行了简单的分析。
参考文献:
.北京联合大学学报(自然科学版).2007.06月第21卷第2期