前言

本节将从底层分析 NTFS 删除文件前后的变化。

知识点总览

  • NTFS 删除文件的底层分析

NTFS 删除文件的底层分析

本例中有一 NTFS 分区,该分区的参数如下图

image-20211206104820267

文件删除前的底层分析

分区中有两个文件 0.pngTextFile.txt 为例,文件如下图所示:

image-20211206105155050

0.png 是一个图片文件,该文件的底层参数如下:

  • 文件记录

image-20211206105448987

文件的数据是由 80H 属性管理的,该文件的 80H 属性如下:

image-20211206113237455

从 80H 属性中可以看出文件 0.png 的属性体是非常驻的,其 RunList 中只有一个数据流,所以文件是连续的。

  • 数据区

image-20211206105455532

TextFile.txt 是一个文本文件,打开后内容如图所示:

image-20211206113417030

该文件的文件记录为:

image-20211206113517002

从 80H 属性中可以看出,TextFile.txt 的属性体是常驻的。

image-20211206113613710

80H 属性为数据属性,所以其属性体就是这个文件的数据。

文件删除后的底层分析

为了了解文件删除后恢复的方法,先从文件系统级别了解一下文件删除时在 NTFS 文件系统中发生的变化。

查看了 0.pngTextFile.txt 文件的各部分结构后,现在把此文件彻底删除(不是放入回收站),然后再对其各部分结构进行分析,并讲解恢复的思路。

删除文件后,0.png 的文件记录如下图所示:

image-20211206114254208

从图中可以看出 0.png 的文件记录的状态字节变为了 00 (文件被删除),而其他所有信息都没有被改变。

跳转到数据区后可以发现该文件的数据区没有改变。

image-20211207092426063

TextFile.txt 的文件记录如下图所示:

image-20211207092414453

查看 80H 属性体部分,可以发现文件内容没有被更改,只有状态字节变为了 00 (文件被删除)。

文件删除后的恢复

将被删除的 0.png 文件的数据区的内容全部选中,并右键选块——编辑——复制选块——至新文件,将文件另存为新的文件,打开后可以看到文件的内容如下图所示:

image-20211207093852266

很显然,这个文件就是被删除的 0.png

80H 属性为常驻的文件删除后更容易恢复,跳转到 TextFile.txt 的文件记录,选中 80H 属性的属性体部分。

image-20211207094056223

将这个选块另存为一个 txt 文件,打开之后就可以看到内容为原来的 TextFile.txt 文件内容:

image-20211207094205853