NTFS文件系统下文件的删除

  [复制链接]

该用户从未签到

8

主题

177

回帖

1447

积分

[INTOHARD]营长

Rank: 6Rank: 6

积分
1447
发表于 2008-8-15 03:09:09 | 显示全部楼层 |阅读模式
前些时间在论坛上发表了一篇《[wiki]FAT[/wiki]32分区[wiki]格式化[/wiki]后手工恢复数据一例(手工重建FAT和FDT)》原文地址:http://bbs.intohard.com/viewthread.php?tid=46905和一篇《NTFS分区格式化后用winhex手工提取数据一例》原文地址:http://bbs.intohard.com/viewthread.php?tid=46244的贴子。应一些朋友们的要求说是希望出一个关于在FAT32系统下文件[wiki]删除[/wiki]的视频教程,看了下,在论坛上和一些关于[wiki]数据恢复[/wiki]技术的书籍上,及最新出版的一本《数据恢复方法及案例分析》对FAT32文件系统及文件的删除都有很详细的介绍,数据恢复新手们可以买来看看。(这里就不再对FAT的文件系统进行研讨了)反倒是对NTFS文件系统及文件的删除介绍得不是很详细,所以今天就抽了点时间参考了些资料,写了这篇《NTFS文件系统下文件的删除》由于NTFS文件系统相关的资料实在是太少也介绍得不是很详细,大部分还是我自己个人所理解。文中如有错误和疏漏之处还请高手加以指正。
       在NTFS系统中删除一个文件时,系统至少在三个地方做了改变。一是该文件MFT的头偏移16H处的一个[wiki]字节[/wiki],该字节为0表示文件被删除,为1表示该文件是正被使用的文件,为2表示其是一个目录;二是其父目录文件夹的INDEX-ROOT属性(90H属性)或者INDEX-ALLOCATION(A0属性);三是在位图($Bitmap)元数据文件中把该文件占用的[wiki]簇[/wiki]对应的位置清0,以便给其他文件留出空间。
       比较一下删除一个文件前后该文件在两个地方的变化,即该文件的MFT与该文件父目录的INDEX属性(90属性或是A0属性)。我们看下面的这个案例:用WINHEX打开这个NTFS格式的分区有一个名为个人资料的文件夹,该文件夹中有几个WORD文档。看下图:
                            1.jpg
      接下来我们看其中一个名为《武汉市商品房买卖合同》的文档在删除前的MFT记录:
                            2.jpg
      然后我们在系统下将《武汉市商品房买卖合同》这个文档删除再用WINHEX打开看删除后该文件的MFT记录:
                            3.jpg
        
       经过对比我们可以发现文件删除前后MFT的变化如下:
                            4.jpg    
        在NTFS分区格式中,虽然文件被删除了,但是其MFT并没有被清空,不过删除文件的同时MFT被清空的可能性也不是没有,那是在最极端的情况下,我们都知道NTFS把磁盘分成了两大部分,其中大约百分之十二分配给了MFT,以满足其不断增长的文件数量。如果系统分配给MFT空间已经接近用完时,系统在删除文件的同时也会将MFT清空,并直接用其它文件的MFT覆盖该文件的MFT。
       这里我们就不讨论上面所说的最极端的情况,通过观察对比前后MFT的变化,可以发现,文件的删除前后MFT的不同之处有四点,它们全部在MFT头中如上表所示。除了MFT头不同,MFT中的其它属性完全一样,包括10H标准文件属性、30H文件名属性、80H数据流属性,看起来好像是只有把文件删除标志从0改成1就能够恢复被删除的文件了,但实际上并非如此。因为NTFS在删除文件时并不只是做了个标记而已,它还在其它至少两个地方做了改变,分别是其父目录的INDEX属性,它可能是90H属性或是A0H属性,当目录中文件或子目录很少完全可以在NFT中描述该目录中的所有文件或子目录的文件索引时,系统会用90H属性。而当该目录下的文件和子目录非常多,多到该目录下的索引项并不能容纳在1KB大小的MFT中,NNTFS系统会选择用A0H属性,并将这些索引放入A0H属性的运行中。
       文件删除前其父目录的变化情况看下图:
                            5.jpg
   文件删除后其父目录的变化情况看下图:
                           

熬到三点多了,就收一两银子意思意思一下吧

熬到三点多了,就收一两银子意思意思一下吧

        经过对比不难看出文件删除后父目录的MFT中定义记录头和属性的总长度的字节发生了变化,删除文件前这个父目录的MFT偏移18H处为十六进制30 02 00 00H而删除后为60 01 00 00H。还有就是偏移30H的更新序列号发生了变化,因为文件夹被修改过,所以其最后的访问时间、修改时间等都发生了变化。但这些变化都不重要,最重要的是这个目录的90H属性的变化,文件《武汉市商品房买卖合同》的索引项已经被删除了。
       除文件自身的MFT和其父目录的MFT中的INDEX属性发生了变化外,为了能将已删除的文件的空间空闲出来,系统还会在位图($Bitmap)元数据文件中的相应位置置0,有兴趣的朋友可以自己往下再分析看看。也可以加我的QQ号共同讨论。
      最后我们到该文件的数据区也可以发现文件删除前后,文件数据区的内容没有任何的改变。至于如何实现手工恢复大家可以参照帖子开头提到的《NTFS分区格式化后用WINHEX手工提取数据一例》。
  • TA的每日心情
    开心
    2020-3-25 12:08
  • 签到天数: 2 天

    [LV.1]布衣百姓

    1

    主题

    163

    回帖

    145

    积分

    [INTOHARD]班长

    Rank: 2

    积分
    145
    发表于 2008-8-15 08:05:40 | 显示全部楼层
    值得学习。。。顶一个先!!!!
  • TA的每日心情
    慵懒
    2012-11-13 10:17
  • 签到天数: 2 天

    [LV.1]布衣百姓

    3

    主题

    100

    回帖

    340

    积分

    [INTOHARD]排长

    Rank: 3Rank: 3

    积分
    340
    QQ
    发表于 2008-8-15 08:28:38 | 显示全部楼层
    呵呵,虽然暂时看不懂,但还是顶一下.
  • TA的每日心情
    开心
    2012-12-11 08:13
  • 签到天数: 1 天

    [LV.1]布衣百姓

    14

    主题

    1421

    回帖

    947

    积分

    [INTOHARD]连长

    Rank: 4

    积分
    947
    发表于 2008-8-15 08:46:30 | 显示全部楼层
    是付出了一定的劳动,收点也应该!!

    该用户从未签到

    1

    主题

    137

    回帖

    344

    积分

    [INTOHARD]排长

    Rank: 3Rank: 3

    积分
    344
    发表于 2008-8-15 09:46:20 | 显示全部楼层
    非常的详细呀。楼主真好。
  • TA的每日心情
    慵懒
    2019-3-26 09:25
  • 签到天数: 3 天

    [LV.2]九品芝麻官

    31

    主题

    799

    回帖

    1万

    积分

    [INTOHARD]团长

    Rank: 8Rank: 8

    积分
    12979
    发表于 2008-8-15 10:03:40 | 显示全部楼层
    已阅!8错,厉害!!

    该用户从未签到

    16

    主题

    170

    回帖

    9

    积分

    [INTOHARD]工兵

    Rank: 1

    积分
    9
    发表于 2008-8-15 10:33:55 | 显示全部楼层
    感谢无私奉献的精神

    该用户从未签到

    29

    主题

    1092

    回帖

    1万

    积分

    [INTOHARD]工兵

    Rank: 1

    积分
    17691
    QQ
    发表于 2008-8-15 10:38:51 | 显示全部楼层
    很好的教程!花了很长时间吧,谢谢LZ的无私奉献!!
    有两个问题讨论一下:
    1、文中除了图片以外的文字部分都是你的原创吗?初看内容时很眼熟,于是查看了涂彦晖和戴仕剑在2005年合写的《数据安全与编程技术》这本书,发现你的内容和这本书中第175页-179页中的文字部分内容惊人的相似(雷同率达到96%)。小心涂彦晖和你打官司(因为你在文中有“大部分还是我自己个人所理解”这句话)!
    2、你的这个文章中好像有两处错误(那本书中那两处也错了!!),这个错误我在这个论坛中曾提到过。

    该用户从未签到

    8

    主题

    177

    回帖

    1447

    积分

    [INTOHARD]营长

    Rank: 6Rank: 6

    积分
    1447
     楼主| 发表于 2008-8-15 10:51:59 | 显示全部楼层

    回复 9# 的帖子

    你说的涂彦晖和戴仕剑在2005年合写的《数据安全与编程技术》这本书我可以发誓我从来没就看过,天地良心.

    该用户从未签到

    29

    主题

    1092

    回帖

    1万

    积分

    [INTOHARD]工兵

    Rank: 1

    积分
    17691
    QQ
    发表于 2008-8-15 11:19:04 | 显示全部楼层

    回复 10# 的帖子

    没别的意思,只是提个醒,因为雷同的内容太我多了,而且错的也是一样。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表