数据恢复的基本知识 -...

22
数据恢复的基本知识 一、基本概念 1数据 这里我们所说的数据,只指计算机数据,后面不再专门指出。首先,“数据”是一个广 义的概念,不仅包括计算机文件系统或数据库系统中存储的各种数据、正文、图形、图像、 声音等形式的多媒体数据文件、软件或各种文档资料,也包括存放或管理这些信息的硬件信 息,如计算机硬件及其网络地址、网络结构、网络服务等。尽管在许多文献中都大量引用“数 据”与“信息”两个术语,但却没有一个被公认的数据与信息的定义。本书中对“数据”与 “信息”不加以区分,视为同义。 2、数据恢复 那么什么是数据恢复呢?简单地说,数据恢复就是把遭受破坏、或由硬件缺陷导致不可 访问或不可获得、或由于误操作等各种原因导致丢失的数据还原成正常数据,即恢复至它本 来的“面目”。 数据恢复不仅对已丢失的文件进行恢复,还可以恢复物理损伤的磁盘数据,也可以恢复 不同操作系统的数据。 二、硬盘结构 1、 硬盘的物理结构 图1 2、 硬盘的数据组织 1)盘片:硬盘的每一个盘片都有两个盘面(Side),即上、下盘面,一般每个盘面都利用上, 即都装上磁头可以存储数据,成为有效盘片,也有极个别的硬盘其盘面数为单数。每一个这 样的有效盘面都有一个盘面号,按顺序从上而下自“0”开始依次编号。在硬盘系统中,盘 面号又叫磁头号,就是因为每一个有效盘面都有一个对应的读写磁头。硬盘的盘片组在 2~ 14 片不等,通常有 2~3 个盘片,故盘面号(磁头号)为 0~3 或 0~5。

Transcript of 数据恢复的基本知识 -...

Page 1: 数据恢复的基本知识 - 100xuexi.comfile.100xuexi.com/XXSub/MatUpPT/File/...数据恢复的基本知识 一、基本概念 1、 数据 这里我们所说的数据,只指计算机数据,后面不再专门指出。首先,“数据”是一个广

数据恢复的基本知识

一、基本概念 1、 数据

这里我们所说的数据,只指计算机数据,后面不再专门指出。首先,“数据”是一个广

义的概念,不仅包括计算机文件系统或数据库系统中存储的各种数据、正文、图形、图像、

声音等形式的多媒体数据文件、软件或各种文档资料,也包括存放或管理这些信息的硬件信

息,如计算机硬件及其网络地址、网络结构、网络服务等。尽管在许多文献中都大量引用“数

据”与“信息”两个术语,但却没有一个被公认的数据与信息的定义。本书中对“数据”与

“信息”不加以区分,视为同义。

2、数据恢复

那么什么是数据恢复呢?简单地说,数据恢复就是把遭受破坏、或由硬件缺陷导致不可

访问或不可获得、或由于误操作等各种原因导致丢失的数据还原成正常数据,即恢复至它本

来的“面目”。

数据恢复不仅对已丢失的文件进行恢复,还可以恢复物理损伤的磁盘数据,也可以恢复

不同操作系统的数据。

二、硬盘结构

1、 硬盘的物理结构

图 1

2、 硬盘的数据组织

1)盘片:硬盘的每一个盘片都有两个盘面(Side),即上、下盘面,一般每个盘面都利用上,

即都装上磁头可以存储数据,成为有效盘片,也有极个别的硬盘其盘面数为单数。每一个这

样的有效盘面都有一个盘面号,按顺序从上而下自“0”开始依次编号。在硬盘系统中,盘

面号又叫磁头号,就是因为每一个有效盘面都有一个对应的读写磁头。硬盘的盘片组在 2~

14 片不等,通常有 2~3个盘片,故盘面号(磁头号)为 0~3 或 0~5。

Page 2: 数据恢复的基本知识 - 100xuexi.comfile.100xuexi.com/XXSub/MatUpPT/File/...数据恢复的基本知识 一、基本概念 1、 数据 这里我们所说的数据,只指计算机数据,后面不再专门指出。首先,“数据”是一个广

2)磁道:磁盘在格式化时被划分成许多同心圆,这些同心圆轨迹叫做磁道(Track)。磁道

从外向内自 0 开始顺序编号。硬盘的每一个盘面有 300~1024 个磁道,新式大容量硬盘每面

的磁道数更多,如图 2-24 所示。信息以脉冲串的形式记录在这些轨迹中,这些同心圆不是

连续记录数据,而是被划分成一段段的圆弧,由于径向长度不一样,这些圆弧的角速度一样,

而线速度不一样,外圈的线速度较内圈的线速度大,即同样的转速下,外圈在同样时间段里,

划过的圆弧长度要比内圈划过的圆弧长度大。每段圆弧叫做一个扇区,扇区从“1”开始编

号,每个扇区中的数据是作为一个单元同时读出或写入的。一个标准的 3.5 英寸硬盘盘面通

常有几百到几千条磁道。这些磁道是看不见的,它们只是盘面上以特殊形式磁化了的一些磁

化区。这些磁道是在磁盘格式化时就规划好了的。

3)柱面:所有盘面上的同一磁道构成一个圆柱,通常称作柱面(Cylinder),每个圆柱上的

磁头,由上而下从“0”开始编号。数据的读写是按柱面进行的,即磁头在读写数据时首先

在同一柱面内从“0”磁头开始进行操作,依次向下在同一柱面的不同盘面即磁头上进行操

作,只在同一柱面所有的磁头全部读写完毕后才移动磁头转移到下一柱面,即数据的读/写

是按柱面来进行的,而不是按盘面来进行的。也就是说,一个磁道已写满数据,就在同一柱

面的下一个盘面来写,一个柱面写满后,才移到下一个柱面。

4)扇区:操作系统是以扇区(Sector)形式将信息存储在硬盘上的。每个扇区包括 512 字

节的数据和一些其他信息。一个扇区有两个主要部分:即存储数据地点的标识符和存储数据

的数据段。

三、寻址方式 1、C/H/S 寻址方式 C:柱面号(最大 10 位);H:磁头号(最大 6 位);S:扇区号(最大 6 位),其中扇区

数从 1 编号,其它从 0 编号,用三个参数唯一定位。 2、LBA 寻址方式

LBA 寻址方式下从 0 开始给扇区线性编号,一直编到整块硬盘的最后一个扇区。显然

线性地址是物理扇区的逻辑地址。 3、C/H/S 和 LBA 之间的转换

1)读写规则 要了解从 C/H/S 到 LBA 线性地址的转换规则。由于系统在写入数据时是按照从柱面到

柱面的方式,在上一个柱面写满数据后才移动磁头到下一个柱面,并从下一柱面的第一个磁

头的第一个扇区开始写入,从而使磁盘性能最优,所以,在对物理扇区进行线性编址时,也

按照这种方式进行。即把第一柱面(0 柱)第一磁头(0 面)的第一扇区(1 扇区)编为逻

辑“0”扇区,把第一柱面(0 柱)第一磁头(0 面)的第二扇区(2 扇区)编为逻辑“1”扇区,

直至第一柱面(0 柱)第一磁头(0 面)的第 63 扇区(63 扇区)编为逻辑“62”扇区,然后

转到第一柱面(0 柱)第二磁头(1 面)的第一扇区(1 扇区),接着上一面编为逻辑“63”扇区,0 柱面所有扇区编号完毕后转到 1 柱面的 0 磁头 1 扇区,依次往下进行,直至把所有的

扇区都编上号。 2)从 C/H/S 到 LBA 通过对编号规则的介绍,很容易看出 C/H/S 与 LBA 地址的对应关系。用 C 表示当前柱

面号,H 表示当前磁头号,S 表示当前扇区号,CS 表示起始柱面号,HS 表示起始磁头号,

SS 表示起始扇区号,PS 表示每磁道有多少个扇区,PH 表示每柱面有多少个磁道,则有: LBA=(C–CS)﹡PH﹡PS+(H–HS)﹡PS+(S–SS) (1)

Page 3: 数据恢复的基本知识 - 100xuexi.comfile.100xuexi.com/XXSub/MatUpPT/File/...数据恢复的基本知识 一、基本概念 1、 数据 这里我们所说的数据,只指计算机数据,后面不再专门指出。首先,“数据”是一个广

一般情况下,CS=0,HS=0,SS=1,PS=63,PH=255,LBA 计算如下: C/H/S=0/0/1,代入(1)式中可得 LBA=0 C/H/S=0/0/63,代入(1)式中可得 LBA=62 C/H/S=0/1/1,代入(1)式中可得 LBA=63 C/H/S=220/156/18,代入(1)式中可得 LBA=3544145 3)从 LBA 到 C/H/S

先介绍两种运算 DIV 和 MOD(这里指对正整数的操作)。DIV 称做整除运算,即被除

数除以除数所得商的整数部分。比如,5 DIV 2=2,33 DIV 5=6;MOD 运算则是取商的余数。

比如,5 MOD 2=1,33 MOD 5=3。DIV 和 MOD 是一对搭档,一个取整数部分,一个取余

数部分。 各变量仍按上述假设进行,则有: C=LBA DIV (PH﹡PS)+CS H=(LBA DIV PS) MOD PH +HS (2) S=LBA MOD PS +SS

如果不运用 MOD 运算符,只运用 DIV 运算符,也可按式(3)进行转换,两者的结果

相同,只是运算的复杂度不同。 C=LBA DIV (PH﹡PS)+CS H=LBA DIV PS–(C–CS)﹡PH +HS (3) S=LBA–(C–CS)﹡PH﹡PS–(H–HS)﹡PS+SS 按照这个规律,则有:

LBA=0,相应地,C/H/S=0/0/1 LBA=62,相应地,C/H/S=0/0/63 LBA=63,相应地,C/H/S=0/1/1 LBA=3544145,相应地,C/H/S=220/156/18

四、引导扇区(MBR) MBR,即主引导记录区,位于整个硬盘的 0 磁道 0 柱面 1 扇区。在总共 512 字节的主

引导扇区中,MBR 的引导程序占用其中的前 446 个字节(偏移 0~偏移 1BDH),随后的 64个字节(偏移 1BEH~偏移 1FDH)为 DPT(Disk Partition Table,硬盘分区表),最后的两

个字节“55 AA”(偏移 1FEH~偏移 1FFH)是分区有效结束标志。由它们共同构成硬盘主

引导记录,也称主引导扇区。

Page 4: 数据恢复的基本知识 - 100xuexi.comfile.100xuexi.com/XXSub/MatUpPT/File/...数据恢复的基本知识 一、基本概念 1、 数据 这里我们所说的数据,只指计算机数据,后面不再专门指出。首先,“数据”是一个广

图 2(MBR)

其中,硬盘分区表中的每 16 个字节被称为分区表项,一个分区表项管理一个分区。 在分区表项内:

第 1 个字节为 80 的表示被激活,为 00 的表示未被激活。 第 2 个字节为 C/H/S 模式下起始磁头号。 第 3 个字节为 C/H/S 模式下起始扇区号。 第 4 个字节为 C/H/S 模式下起始柱面号。 第 6 个字节为 C/H/S 模式下结束磁头号。 第 7 个字节为 C/H/S 模式下结束扇区号。 第 8 个字节为 C/H/S 模式下结束柱面号。 其中,第 3、4 个字节结合,扇区号为 6 位,柱面号为 10 位(占用第 3 个字节的高两位)。 第 5 个字节为分区类型:若值为 01 表示是 FAT12 格式;若值为 04 表示是小于 32M 的

FAT16 格式;若值为 06 表示是大于 32M 的 FAT16 格式;若值为 0B 或 0C 表示是 FAT32 格

式;若值为 07 表示是 NTFS 格式;若此分区表项为扩展分区,则第 5 个字节的值应为 05

Page 5: 数据恢复的基本知识 - 100xuexi.comfile.100xuexi.com/XXSub/MatUpPT/File/...数据恢复的基本知识 一、基本概念 1、 数据 这里我们所说的数据,只指计算机数据,后面不再专门指出。首先,“数据”是一个广

或 0F,05 为小于 8.4G,0F 为大于 8.4G。 从第 9 个字节开始为 LBA 寻址方式下的管理。第 9~12 字节为当前分区的起始扇区号。

第 12~16 字节为当前分区的大小(分区所包含的扇区数)。

五、扩展分区(EBR) 如何在一个硬盘中来划分扩展分区呢? 1) 在第一个扇区(引导扇区)中的第一个分区表项上填写主分区信息。 2)在第二个分区表项上的第 5 个字节上填写 05 或 0F,则证明此分区为一个扩展分区,此

时这个分区为主扩展分区。 如果在这个扩展分区上在划分扩展分区的话,则找到这个扩展分区的第一个扇区

(EBR),重复上述两个步骤,所得到的是次扩展分区,以此类推。

图 3(EBR)

Page 6: 数据恢复的基本知识 - 100xuexi.comfile.100xuexi.com/XXSub/MatUpPT/File/...数据恢复的基本知识 一、基本概念 1、 数据 这里我们所说的数据,只指计算机数据,后面不再专门指出。首先,“数据”是一个广

下面是一块硬盘的数据组织结构:

图 4

六、操作系统引导记录区(DBR) 进入一个分区的内部,第一个扇区就是 DBR(DOS Boot Record)。它包括一个引导程

序和一个被称为 BPB(BIOS Parameter Block)的本分区参数记录表。引导程序的主要任务

是,当 MBR 将系统控制权交给它时,判断本分区根目录前两个文件是不是操作系统的引导

文件。BPB 参数块记录着本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、

根目录大小、FAT 个数,分配单元大小等重要参数。 第 1、2 字节如果为 EB 58 则表示跳转 58 个字节,则跳到 5A。 从 5A 开始到 55 AA 之间为引导数据。 从 3 到 A 为厂家和格式化版本。 从 B 到 59 为 BPB 参数: B~C 为每扇区的字节数。 D 为每簇的扇区数。 E~F 为 DBR 所保留的扇区数。 10 为 FAT 表的个数。 15 为媒体描述符(F8 为硬盘)。 18 和 19 为每磁道扇区数。 20~23 为记录本分区的大小。 24~27 记录 FAT 表的大小(可确定根目录的位置)。 2C~2F 记录根目录的起始簇号。 30 为文件信息系统所在的扇区。 32 为 DBR 的备份的扇区号。

33~34 保留。 40 为 BIOS 下记录媒体方式(80 表示硬盘)。 42 为扩展引导标志(是固定值 28 或 29)。 52~56 为版本号。

Page 7: 数据恢复的基本知识 - 100xuexi.comfile.100xuexi.com/XXSub/MatUpPT/File/...数据恢复的基本知识 一、基本概念 1、 数据 这里我们所说的数据,只指计算机数据,后面不再专门指出。首先,“数据”是一个广

图 5(C 盘的 DBR,FAT 格式)

图 5 为用 WINHEX 打开整个硬盘后通过 MBR 经过扇区计算后得到的 C 盘 DBR 地址。

Page 8: 数据恢复的基本知识 - 100xuexi.comfile.100xuexi.com/XXSub/MatUpPT/File/...数据恢复的基本知识 一、基本概念 1、 数据 这里我们所说的数据,只指计算机数据,后面不再专门指出。首先,“数据”是一个广

图 6(C 盘的 DBR,FAT 格式)

图 6 为用 WINHEX 直接打开 C 盘后显示的 DBR,两个图是一样。

七、FAT 文件系统 1、格式化

1)低级格式化 ① 测试硬盘介质; ② 为硬盘划分磁道; ③ 为硬盘的每个磁道按指定的交叉因子间隔安排扇区; ④ 将扇区 ID 放置到每个磁道上,完成对扇区的设置; ⑤ 对磁盘表面进行测试,对已损坏的磁道和扇区做“坏”标记; ⑥ 给硬盘中的每个扇区写入某一 ASCII 码字符。

Page 9: 数据恢复的基本知识 - 100xuexi.comfile.100xuexi.com/XXSub/MatUpPT/File/...数据恢复的基本知识 一、基本概念 1、 数据 这里我们所说的数据,只指计算机数据,后面不再专门指出。首先,“数据”是一个广

2)高级格式化 ①从各个逻辑盘指定的柱面开始,对扇区进行逻辑编号(分区内的编号)。 ②在基本分区上建立 DOS 引导记录(DBR),若命令中带有参数“/S”则装入 DOS

的三个系统文件。 ③在各个逻辑盘建立文件分配表(FAT)。 ④建立根目录对应的文件目录表(FDT)及数据区。

对于 FAT16 和 FAT32 文件系统(NTFS 采用不同的文件管理技术,另做介绍),硬盘上的数

据按照其不同的特点和作用大致可分为 5 部分:MBR 区、DBR 区、FAT 区、DIR 区和 DATA区。其中,MBR 由分区软件创建,而 DBR 区、FAT 区、DIR 区和 DATA 区由高级格式化程

序创建。文件系统写入数据时只是改写相应的 FAT 区、DIR 区和 DATA 区。 2、 FAT32 文件系统 1)FAT32 文件系统将逻辑盘的空间划分为三个部分,依次是引导区(BOOT 区)、文件分配

表区(FAT 区)和数据区(DATA 区)。引导区和文件分配表区又合称为系统区。 2)引导区从第一扇区开始,使用三个扇区(实际只使用了第一个扇区,但第二和第三个扇

区也写入了“55 AA”标志),保存有该逻辑盘每扇区字节数,每簇对应扇区数等重要参数和引

导记录。之后还留有若干个保留扇区,两者共占用 32 个扇区。而 FATl6 文件系统的引导区

一般只占用一个扇区,没有保留扇区。 3)文件分配表区保存有两个相同的文件分配表,因为文件所占用的存储空间(簇链)及空

闲空间的管理都通过 FAT 来实现,FAT 是如此的重要,所以系统保存两个以便第一个损坏

时,还有第二个备用。文件系统对数据区的存储空间是按簇进行划分和管理的,簇是空间分

配和回收的基本单位,即一个文件总是占用若干个整数簇,文件所使用的最后一簇剩余的空

间不再使用。 4)FAT32 系统一簇对应 8 个逻辑相邻的扇区,理论上,这种用法所能管理的逻辑盘容量上

限为 16TB(16 384GB),容量大于 16TB 时,可以用一簇对应 16 个扇区,依此类推。 但是,对于容量小于 512MB 的盘,采用 FAT32 虽然一簇为 8 个扇区,比使用 FATl6 一

簇 16 个扇区,簇有所减小,但 FAT32 的 FAT 表较大,占用空间较多,总数据区被减少,两

者相抵,实际并不能增加有效存储空间,所以微软建议对小于 512MB 的逻辑盘不宜使用

FAT32。 5)根目录区(ROOT 区)不再是固定区域、固定大小,可看做是数据区的一部分。因为根

目录已改为根目录文件,采用与子目录文件相同的管理方式,一般情况下从第二簇开始使用,

大小视需要增加,因此根目录下的文件数目不再受最多 512 个的限制。FATl6 文件系统的根

目录区(ROOT 区)是固定区域、固定大小,占用 FAT 区之后紧接着的 32 个扇区,最多保

存 512 个目录项,是系统区的一部分。 6)目录区中的文件目录项变化较多。一个目录项仍占用 32 字节,可以是文件目录项、子目

录项、卷标项(仅根目录有)、已删除目录项、长文件名目录项等。目录项中原来在 DOS下保留未用的 10 个字节都有了新的定义,全部 32 个字节的定义如下。 第 0~7 字节,文件名。 第 8~10 字节,文件扩展名。 第 11 字节,文件属性,按二进制位定义,最高两位保留未用,0 至 5 位分别是只读位、

隐藏位、系统位、卷标位、子目录位、归档位,当只读位、隐藏位、系统位、卷标位全为 1,其他位全为 0,即 11 字节为“0FH”时表示该项为长文件名记录项。 第 12~13 字节,仅长文件名目录项有效,用来存储其对应的短文件名目录项的文件名

字节校验和。 第 13~15 字节,24 位二进制文件建立时间,其中高 5 位为小时,次 6 位为分钟,再次

Page 10: 数据恢复的基本知识 - 100xuexi.comfile.100xuexi.com/XXSub/MatUpPT/File/...数据恢复的基本知识 一、基本概念 1、 数据 这里我们所说的数据,只指计算机数据,后面不再专门指出。首先,“数据”是一个广

5 位的倍数为秒,最后 8 位为单位精确到 10 毫秒的创建秒数。 第 16~17 字节,16 位二进制文件建立日期,其中高 7 位为相对于 1980 年的年份值,

次 4 位为月份,后 5 位为月内日期。 第 18~19 字节,16 位二进制文件最新访问日期,定义同 16~17 字节。 第 20~21 字节,起始簇号的高 16 位。 第 22~23 字节,16 位二进制文件最新修改时间,其中高 5 位为小时,次 6 位为分钟,

后 5 位的倍数为秒数。 第 24~25 字节,16 位二进制文件最新修改日期,定义同 16~17 字节。 第 26~27 字节,起始簇号的低 16 位。 第 28~31 字节,32 位文件字节长度。 其中 12~19 字节为以后陆续定义。所有字节的意义如下:

图 7 下面图 8 是文件目录项的起始扇区,也是 DATA 区的起始位置,它的寻找方式是:先通过

MBR 中的分区表项中的第 9~12 字节的值确定 DBR 的位置(本案例值为 00 00 00 3F,换算

成十进制为 63)。然后跳到第 63 扇区找到 DBR,先看第 10 个字节的值(本案例值为 02,说明有两个 FAT 表),再看第 E~F 字节的值(其值为 DBR 的保留扇区数,此案例值为 00 26,换算成十进制为 38),再看第 24~27 字节的值(其值为记录 FAT 表的大小,此案例值为 00 00 27 0D,换算成十进制为 9997)。这样,DATA 区的起始位置是:MBR 的保留扇区数+DBR

Page 11: 数据恢复的基本知识 - 100xuexi.comfile.100xuexi.com/XXSub/MatUpPT/File/...数据恢复的基本知识 一、基本概念 1、 数据 这里我们所说的数据,只指计算机数据,后面不再专门指出。首先,“数据”是一个广

的保留扇区数+FAT 表的大小×2=63+38+9997×2=20095,因此,DATA 区的起始位置是第

20095 扇区。

图 8(FDT)

下面图 9 是 FAT 表的起始位置:

Page 12: 数据恢复的基本知识 - 100xuexi.comfile.100xuexi.com/XXSub/MatUpPT/File/...数据恢复的基本知识 一、基本概念 1、 数据 这里我们所说的数据,只指计算机数据,后面不再专门指出。首先,“数据”是一个广

图 9(FAT)

下面图 10 是 FAT 表中每个簇号可取的表项值及其含义:

图 10 下面图 11 展示了各个区域的逻辑关系:

Page 13: 数据恢复的基本知识 - 100xuexi.comfile.100xuexi.com/XXSub/MatUpPT/File/...数据恢复的基本知识 一、基本概念 1、 数据 这里我们所说的数据,只指计算机数据,后面不再专门指出。首先,“数据”是一个广

图 11

八、NTFS 文件系统 NTFS 是在 1993 年随着 Windows NT 的第一个版本推出而面世的,是一个性能优良的

文件系统。NTFS 基于可恢复文件结构而设计,它可使用户数据文件不会有丢失或毁坏的危

险,适用于一些要求安全性高、而且在磁盘上存储远远大于 FAT 文件系统所能处理的巨型

文件等场合。与 FAT 相同,NTFS 也使用“簇”作为最小的分配单位。簇的大小,也称为簇

因子,由 NTFS 格式化程序确定。NTFS 支持的簇大小为 512,1024,2048 和 4096 个字节。

NTFS 只与簇有关,与物理扇区的大小无关。

1、 NTFS 中的 DBR 第 B~C 字节:每扇区字节数。 第 D 字节:每簇占几个扇区。 第 24~27 字节:固定值 80 00 80 00。 第 28~2F 字节:分区大小。 第 30~37 字节:$MFT 文件起始簇号。 第 38~3F 字节:镜像$MFT 文件起始簇号。

说明:DBR 的备份不再这个分区内,格式化时留一个扇区备份。

Page 14: 数据恢复的基本知识 - 100xuexi.comfile.100xuexi.com/XXSub/MatUpPT/File/...数据恢复的基本知识 一、基本概念 1、 数据 这里我们所说的数据,只指计算机数据,后面不再专门指出。首先,“数据”是一个广

图 12(D 盘的 DBR,NTFS 格式)

2、$MFT 文件

在 NTFS 中,磁盘上的任何事物都为文件。在文件中存储一切使得文件系统很容易定位

和维护数据。文件通过主文件表(MFT)来确定其在磁盘上的存储位置。主文件表是一个

与文件相对应的数据库,有一系列文件记录组成——卷中每一个文件都有一个文件记录(对

于大型文件还有可能多个记录与之相对应)。主文件表自身也有它自己的文件记录。MFT 中

的文件记录大小一般是固定的,是 1KB。文件记录在 MFT 文件记录数组中物理上是连续的,

且从 0 开始编号。MFT 仅供系统本身组织、架构文件系统使用,这在 NTFS 中成为元数据

(Matadata,使存储在卷上支持文件系统格式管理的数据。它不能被应用程序访问,只能为

系统提供服务)。其中最基本的前 16 个记录是操作系统使用的非常重要的元数据文件。这些

元数据文件的名字都以“$”开始,所以是隐藏文件。

Page 15: 数据恢复的基本知识 - 100xuexi.comfile.100xuexi.com/XXSub/MatUpPT/File/...数据恢复的基本知识 一、基本概念 1、 数据 这里我们所说的数据,只指计算机数据,后面不再专门指出。首先,“数据”是一个广

序 号 元 文 件 功 能

0 $MFT 主文件表本身

1 $MFTMIRR 主文件表的部分镜像

2 $LOGFILE 日志文件

3 $VOLUME 卷文件

4 $ATTRDEF 属性定义列表

5 $ROOT 根目录

6 $BITMAP 位图文件

7 $BOOT 引导文件

8 $BADCLUS 坏簇文件

9 $SECURE 安全文件

10 $UPCASE 大写文件

11 $EXTEND METADATA DIRECTORY 扩展元数据目录

12 $EXTEND\$REPARSE 重解析点文件

13 $EXTEND\$USNJRNL 变更日志文件

14 $EXTEND\$QUOTA 配额管理文件

15 $EXTEND\$OBJID 对象 ID 文件

16~23 保留

23+ 用户文件和目录

我们先把图 12 中第 30~37 字节的值(00 00 00 00 00 0C 00 00)换算成十进制的值为

786432,因为是簇号所以要乘以 8,786432×8=6291456,跳到 6291456 扇区,这是$MFT文件的起始扇区。

Page 16: 数据恢复的基本知识 - 100xuexi.comfile.100xuexi.com/XXSub/MatUpPT/File/...数据恢复的基本知识 一、基本概念 1、 数据 这里我们所说的数据,只指计算机数据,后面不再专门指出。首先,“数据”是一个广

图 13(MFT)

Page 17: 数据恢复的基本知识 - 100xuexi.comfile.100xuexi.com/XXSub/MatUpPT/File/...数据恢复的基本知识 一、基本概念 1、 数据 这里我们所说的数据,只指计算机数据,后面不再专门指出。首先,“数据”是一个广

图 14(MFT 续)

1) 头四个字节 46 49 4C 45(固定)为一个文件记录的起始标志。一个文件记录管理一个文

件,占用 1k 空间(2 个扇区)。 2) 第 14~15 个字节记录第 1 个属性起始的偏移(位置),属性前面为文件记录头。 3) 在一个属性内部

第 1~4 个字节:属性的 ID,如果 ID=10 为标准信息属性

=30 为文件名属性 =80 为数据属性 =B0 为位图属性

4)数据属性 第 17~24 个字节:起始 VCN(虚拟簇号)。 第 33~34 个字节:RUN list 起始位置。(DATA RUN:连续簇)

Page 18: 数据恢复的基本知识 - 100xuexi.comfile.100xuexi.com/XXSub/MatUpPT/File/...数据恢复的基本知识 一、基本概念 1、 数据 这里我们所说的数据,只指计算机数据,后面不再专门指出。首先,“数据”是一个广

第 41~48 个字节:文件属性体的分配大小。 第 49~56 个字节:文件属性体的实际大小(字节数)。 第 57~64 个字节:文件属性体的初始大小。 对 RUN List 的说明: ①在 RUN List 的起始位置,第 1 个字节高位和地位相加,如第 1 个字节为 11 则后面连

续 2 位为 1 个 RUN。 第 2 个字节为文件所占连续簇的个数。 第 3 个字节为文件的起始簇号。 ② 如第 1 个字节为 31 则后面连续 4 位为 1 个 RUN。 第 2 个字节为文件所占连续簇的个数。 第 3~5 个字节为文件的起始簇号。 ③ 再往后如果是 00,则证明此文件为 1 个 RUN,不是 00 接下来为第 2 个 RUN …

附录:NTFS 常用属性表

文件记录可能的属性

类型 操作系统 名称

0X10 标准信息

0X20 属性列表

0X30 文件名

0X40 NT 卷版本

0X40 2K 对象 ID

0X50 安全描述符

0X60 卷名

0X70 卷信息

0X80 数据

0X90 索引根

0XA0 索引分配

0XB0 位图

0XC0 NT 符号连接

0XC0 2K 重解析点

0XD0 扩展信息

0XE0 扩展

0XF0 NT 特权设置

0X100 2K 日志流

Page 19: 数据恢复的基本知识 - 100xuexi.comfile.100xuexi.com/XXSub/MatUpPT/File/...数据恢复的基本知识 一、基本概念 1、 数据 这里我们所说的数据,只指计算机数据,后面不再专门指出。首先,“数据”是一个广

MFT 文件记录头部结构布局

偏移 长度 描述

0X0 4 固定值,一定是“FILE”

0X4 2 更新序列号的偏移

0X6 2 更新序列号与更新数组以字为单位大小(S)

0X8 8 日志文件序列号(每次记录被修改,都将导致该序列号加 1)

0X10 2 序列号(用于记录本文件记录被重复使用的次数,每次文件删除时加 1,

跳过 0值,如果为 0,则保持为 0)

0X12 2 硬连接数,只出现在基本文件记录中,目录所含项数要使用到它

0X14 2 第一个属性流的偏移地址

0X16 2 标志字节,1表示记录使用中,2表示该记录为目录

0X18 4 文件记录实际大小(填充到 8字节,即以 8 字节为边界)

0X1C 4 文件记录分配大小(填充到 8字节,即以 8 字节为边界)

0X20 8 所对应的基本文件记录的文件参考号(扩展文件记录中使用,基本文件

记录中为 0,在基本文件记录的属性列表 0X20 属性存储中扩展文件记

录的相关信息)

0X28 2 下一个自由 ID 号,当增加新的属性时,将该值分配给新属性,然后该

值增加,如果 MFT 记录重新使用,则将它置 0,第一个实例总是 0

0X2A 2 边界,WINDOWS XP 中使用,也就是本记录使用的两个扇区的最后两个

字节的值

0X2C 4 WINDOWS XP 中使用,本 MFT 记录号

2 更新序列号

2S-2 更新序列数组

标准属性的属性头结构

偏移 大小 值 描述 0X00 4 0X10 属性类型(10,标准属性) 0X04 4 0X60 总长度(包括头部本身) 0X08 1 0X00 非常驻标志(1 表示非常驻) 0X09 1 0X00 属性名的名称长度 0X0A 2 0X18 属性名的名称偏移 0X0C 2 0X00 标志(似乎已经不再使用,统一放在文件属性中)

0X0E 2 属性 ID(此处的属性 ID 不是指与 0X10 同级别的属

性,应该是指下一级属性,如多数据流,每个数据

流属性都有一个属性 ID,但都是数据流属性 0X80) 0X10 4 L 属性体长度(L) 0X14 2 0X18 属性内容起始偏移 0X16 1 索引标志 0X17 1 0X00 填充 0X18 L 从此处开始,共 L字节为属性

Page 20: 数据恢复的基本知识 - 100xuexi.comfile.100xuexi.com/XXSub/MatUpPT/File/...数据恢复的基本知识 一、基本概念 1、 数据 这里我们所说的数据,只指计算机数据,后面不再专门指出。首先,“数据”是一个广

标准属性的属性体结构

偏移 大小 操作系统 描述 ~ ~ 标准属性头(已经分析过)

0X00 8 C TIME – 文件创建时间 0X08 8 A TIME – 文件修改时间 0X10 8 M TIME – MFT 变化时间 0X18 8 R TIME – 文件访问时间 0X20 4 文件属性(按照 DOS 术语来称呼,都是文件属性) 0X24 4 文件所允许的最大版本号(0表示未使用) 0X28 4 文件的版本号(最大版本号为 0,则也为 0) 0X2C 4 类 ID(一个双向的类索引)

0X30 4 2K 所有者 ID(表示文件的所有者,是文件配额$QUOTA 中$O 和$Q 索

引的关键字,为 0表示未使用磁盘配额)

0X34 4 2K 安全 ID 是文件$SECURE 中$SII 索引和$SDS 数据流的关键字,注

意不要与安全标识相混淆

0X38 8 2K 本文件所占用的字节数,它是文件所有流占用的总字节数,为 0

表示未使用磁盘配额

0X40 8 2K 更新系列号(USN),是到文件$USNJRNL 的一个直接的索引,为

0表示 USN 日志未使用

文件名属性的属性头结构

偏移 大小 值 描述 0X00 4 0X30 属性类型(30,文件名属性) 0X04 4 0X68 总长度(包括头部本身) 0X08 1 0X00 非常驻标志 0X09 1 0X00 属性名的名称长度 0X0A 2 0X18 属性名的名称偏移

0X0C 2 0X00 标志(0X0001 表示压缩,0X4000 表示加密,0X8000

表示稀疏文件,常驻属性不会被压缩) 0X0E 2 0X03 属性 ID(同标准属性的属性头) 0X10 4 0X4A 属性长度(L) 0X14 2 0X18 属性内容起始偏移 0X16 1 0X01 索引标志 0X17 1 0X00 填充 0X18 L 从此处开始,共 L字节为属性

Page 21: 数据恢复的基本知识 - 100xuexi.comfile.100xuexi.com/XXSub/MatUpPT/File/...数据恢复的基本知识 一、基本概念 1、 数据 这里我们所说的数据,只指计算机数据,后面不再专门指出。首先,“数据”是一个广

文件名属性体结构布局

偏移 大小 值 ~ ~ 标准的属性头结构(见前表)

0X00 8 父目录的文件参考号(即父目录的基本文件记录号,分为两个

部分,前 6 个字节 48 位为父目录的文件记录号,此处为 0X05,

即根目录,所以$MFT 的父目录为根目录,后 2 个字节为序列号) 0X08 8 文件创建时间

0X10 8 文件修改时间

0X18 8 最后的一次 MFT 更新时间

0X20 8 最后一次的访问时间

0X28 8 文件分配大小 0X30 8 文件实际大小 0X38 4 标志,如目录、压缩、隐藏等 0X3C 4 用于 EAS 和重解析点

0X40 1 以字符计的文件名长度,每字符占用字节数由下一字节命名空

间确定,一个字节长度,所以文件名最大 255 字节长。 0X41 1 文件名命名空间 0X42 2L 以 UNICODE 方式表示的文件名

数据流属性的属性头结构

偏移 大小 值 意义 0X00 4 0X80 属性类型(0X80,数据流属性) 0X04 4 0X48 属性长度(包括本头部的总大小) 0X08 1 0X01 非常驻标志,此处就表示数据流非常驻 0X09 1 0X00 名称长度,$ATTRDEF 中定义,所以名称长度为 0 0X0A 2 0X00 名称偏移 0X0C 2 标志,如 0X0001压缩,0X4000加密,0X8000稀疏文件标志 0X0E 2 属性 ID(每个属性都有一个惟一的标识) 0X10 8 起始 VCN,此处为 0 0X18 8 结束 VCN,此处为 0X1FF1 0X20 2 0X40 数据运行的偏移 0X22 2 单位压缩尺寸(一般为 2倍簇大小,0表示未压缩) 0X24 4 0X00 填充 0X28 8 为属性值分配大小(按分配的簇的字节数计算) 0X30 8 属性值实际大小 0X38 8 属性流初始大小 0X40 ... 数据运行

Page 22: 数据恢复的基本知识 - 100xuexi.comfile.100xuexi.com/XXSub/MatUpPT/File/...数据恢复的基本知识 一、基本概念 1、 数据 这里我们所说的数据,只指计算机数据,后面不再专门指出。首先,“数据”是一个广