← 返回博客

如何借助 MFT 在 NTFS 上恢复已删除的文件

· 阅读 1 分钟

简短回答: NTFS 上已删除的文件,通常在其 MFT 记录槽被重用、其数据簇被覆写之前都可以恢复。对于小文件而言,内容往往就保存在 MFT 记录本身里,即便簇已不在也仍可存活。可靠的工作流是:停止使用该卷、对其做镜像,然后要么用取证解析器回放 MFT,要么对磁盘做 FILE 签名的「雕刻」恢复。

为什么删除并不擦除

当 Windows 从 NTFS 卷上删除一个文件时,会发生三件事,而有一件事不会发生:

  1. 该文件 MFT 记录中的 in-use 标志被清除。
  2. 持有该文件数据的簇在 $Bitmap 中被标记为空闲。
  3. 父目录中的索引条目被移除。

不会 发生的:实际上没有任何东西去覆写记录或这些簇。它们只是被标记为可供下一次分配使用。在其他东西占用它们之前,文件都是可恢复的。逐字段的细节见在 NTFS 上删除文件时,哪些信息还会留下

第 1 步:停止对该卷的写入

你对该卷的每一次写入,都有可能重用已删除记录的槽位或其数据簇。如果该文件很重要:

  • 关闭曾经触碰过它的应用。
  • 如果该文件位于系统盘且系统仍在运行,操作系统本身就在持续写入。请关机,或从外部介质引导。
  • 如果是外接驱动器,立即卸载。

第 2 步:对磁盘做镜像

在副本上工作,绝不要动原盘。常见选项:

  • FTK Imager —— 免费,带图形界面,生成 .dd.E01 镜像。读取时同时对源做哈希。
  • dd(Linux/macOS) —— 比特对比特复制。dd if=/dev/sdX of=disk.img bs=4M conv=noerror,sync status=progress
  • ddrescue —— 较慢,但能容忍故障盘上的读取错误。

取证采集完成后立即对镜像计算哈希(SHA-256)。之后每一步都在镜像上进行。

第 3 步:用三种方法之一进行恢复

MFT 回放 —— 解析 $MFT(从镜像中提取出来,或直接原地读取),使用能列出已删除记录的工具。已删除文件的名称、时间戳,以及(对小文件而言)数据,都可以从记录本身恢复出来。

  • MFTECmd 会列出已删除记录,并标记常驻数据。
  • 本站的浏览器解析器可一键过滤出已删除条目,并将其元数据导出为 CSV。

文件系统感知的恢复工具 —— 这些工具读取活动文件系统(或镜像),并把已删除文件呈现出来供你按需还原:

  • R-Studio —— 商业软件,在 NTFS 上是分析师的首选。可以处理复杂损坏。
  • TestDisk + PhotoRec —— 免费、成熟,擅长处理分区损坏和签名雕刻。
  • Recuva —— 消费级软件,但用于单盘单文件的恢复也够用。

签名雕刻(signature carving) —— 当 MFT 已不存在时,scalpelforemost 或 PhotoRec 会扫描原始镜像,寻找已知的文件签名(JPEG FF D8 FF、PNG 89 50 4E 47、ZIP 50 4B 03 04 等等),并把找到的东西重新拼起来。被雕刻出来的文件会失去文件名和时间戳 —— 这些信息原本就存放在 MFT 中 —— 但字节本身能够回来。

什么是真正不可恢复的?

  • 被覆写的簇。 现代 HDD 上,没有任何现实可行的途径能够恢复已被覆写一次的数据。早期取证文献里那种依靠「残留磁化」做恢复的说法,并不适用于本十年生产的硬盘。
  • 被 TRIM 回收的 SSD 块。 一旦 SSD 控制器对某个块执行了 TRIM,底层闪存就会在垃圾回收阶段被清零。数据消失得很快。
  • 没有密钥的加密卷。 没有恢复密钥的 BitLocker、VeraCrypt 或 LUKS 加密的 NTFS 卷,根本无法恢复 —— 明文从一开始就没有触及过磁盘。

何时只能依靠 MFT 恢复

如果该文件是一个小文本文件、小 JSON 配置或小脚本,数据很可能是 常驻 的 —— 就内联保存在 MFT 记录里,而不是放在单独的簇中。即便 $Bitmap 已被覆写数十次,常驻字节仍会留在记录中,直到该槽被重用。见常驻数据

对这类文件,浏览器解析器往往是最快的路径:拖入你导出的 $MFT,过滤出已删除条目,查找带常驻 $DATA 的记录,把字节复制出来即可。

常见问题

NTFS 上已删除的文件能保留多久还可恢复?

直到 MFT 槽被重用、数据簇被覆写为止。在繁忙的系统上是几个小时;在闲置的系统上可以是几个月。并没有固定的计时器。

清空回收站会让恢复更难吗?

不会。回收站只是每个卷上的一个隐藏目录($Recycle.Bin)。「清空」相当于按常规方式删除文件 —— 同样的恢复技术依然适用。

del /F 或 shift+delete 删除的文件还能恢复吗?

可以 —— 这些方式会跳过回收站,但删除方式是一样的。MFT 记录在被重用之前都还在那里。

已格式化的 NTFS 盘上还能恢复文件吗?

快速格式化只重写引导扇区和一个新的 $MFT。绝大多数旧数据簇仍完好,过去的 MFT 记录也很多还在(NTFS 会复用相同的起始偏移)。签名雕刻能找回不少东西。完整格式化会把整个卷清零 —— 那些数据就真的没了。

外部资源