NTFS文件系统解析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2
4 4 8 8 8 1 3 1 3 8 4 426 2
每柱面磁头数(不检查此项)
隐含扇区数(不检查此项) 总是80008000(不检查此项) 文件系统扇区总和 MFT起始簇号 MFT备份的起始簇号 每MFT项大小 未使用 每个索引的簇数 未使用 序列号 校验和 引导代码 签名55AA标记
• 以上引导扇区最为关键的字节数是0B-0C( 每扇区字节数) 0B-0C(每扇区字节数) 0D(每簇扇区数)28-2F(文件系统扇区总 和) 30-37(MFT起始簇号)38-3F(MFT备 份的起始簇号) 40(每MFT项大小)44( 每个索引的簇数),但数据发生不可预料 的损坏时,可以根据以上信息重建分区表 ,定位数据区,恢复MFT,重建DBR,这些 关键字节码的用处不言而喻。
• 0xB0 位图属性($BITMAP)用于描述索引 或$MFT的分配情况。对于索引,它用1bit描 述索引的一个VCN,对于$MFT,用1bit描述 一个MFT项的分配情况。 • 0xC0 重解析点属性 • 0x100 安全属性
NTFS文件存储的定位
• 1、在G盘根目录创建文件
2、打开G盘
非 常 驻 数 据 属 性
• 一个簇流项合一分为以下三部分: • 1、第一个字节为第一部分,分为高4bit和低4bit, 其中低4bit说明第二个部分的字节数。高4bit说明 第三部分的字节数 • 2、第二部分从第二个字节开始,长度为第一部分 的低4bit描述的字节数,用以说明簇流的长度,即 该簇流包含的簇数。 • 3、第三部分跟着第二部分,长度为第一部分高 4bit描述的字节数,用以说明簇流起始簇号。
查看其DBR表
将文件名另存为16进制格式 在winhex中打开
找到G盘的MFT
查找“测试文件”对应的16进制字串
解析这一部分的结构可知:
• 1、该文件占用了6个簇 • 2、该文件起始位置 • LCN为0x 62 4F=25167(?扇区)
定位并复制文件数据
• 请思考,为什么两次操作后文件的实际大 小不一致?
• 大文件或大目录的所有属性,就不可能都常驻在 MFT中。如果一个属性(如文件数据属性)太大 而不能存放在只有1KB的MFT文件记录中,那么 NTFS将从MFT之外分配区域。这些区域通常称为 一个运行(run)或一个盘区(extent),它们可 用来存储属性值,如文件数据。如果以后属性值 又增加,那么NTFS将会再分配一个运行,以便用 来存储额外的数据。值存储在运行中而不是在 MFT文件记录中的属性称为非常驻属性 (nonresident attribute)。NTFS决定了一个属性 是常驻还是非常驻的;而属性值的位置对访问它 的进程而言是透明的。
NTFS文件系统解析
• 1、基本概念 • 元文件:NTFS包括几个系统文件,从NTFS卷来看, 它们都是隐藏的。文件系统用系统文件来存放元 数据并实现文件系统。系统文件是用Format程序 放在卷上的。 • MFT • 属性:NTFS中所有与数据相关信息都称之为“属 性”,甚至文件内容也被称为“数据属性”。 • NTFS与其他文件系统最大不同在于,大多数文件 系统是对文件内容进行读写,而NTFS则是对包含 文件内容的属性进行读写
• NTFS中对文件或文件的某一部分进行位置描述时 用两种地址:LCN(逻辑簇号)和VCN(虚拟簇 号)。通过VCN到LCN的映射来描述非常驻属性流。 • LCN是文件系统的逻辑簇号,VCN则是一个文件内 容的内部编号。因此,属性流中VCN的0~4号簇对 应于LCN的30~34号簇,VCN的5,6号簇对应于LCN 的66,67号簇,VCN的7~10号簇对应于LCN的39~42 号簇。 • 因此LCN与VCN的对应关系及簇流列表中真正的记 录如图:
• • • • • • • •
• • • • • • • • •
$MFT 主文件表(在DBR里30~37表示。数值不是扇区号,而是簇号。在看簇大小 0D 偏移,就是说:簇号X8=扇区数) $MFTMirr MFT的镜像 $LOGFILE 日志文件,这个是删不掉的。(元文件不能被删除,因为系统下不可访问) $volume 见文件,记录号,创建时间 $attrdef 属性定义列表 $bitmap 位图文件 $root 根目录文件 $badclus 坏簇的列表,在格式化的时候,NTFS发现坏的簇会做标记。防止系统访问他, 或者读取它。 $boot 引导文件 $quota 磁盘配额信息 $secure 安全文件 $upcase 大小写字母的转换 $extend metadata directry 扩展元文件目录 $ extend\$reparse 解析文件 $ extend\$usnjrnl 加密日志文件 $ extend\$quota 配额管理文件 $ extend\$objid 对象ID文件

$MFT 主文件表(在DBR里30~37表示。数值不是扇区号,而是簇号。在看簇大小 0D 偏移,就是说:簇号X8=扇区数)

跳转到上边的扇区数,就是文件记录。开头一定是File开头(46 49 4C 45) 这就是 $MFT的开始位置 。
• 30属性是6行半(就是文件名属性$MFT)因 为$MFT也是以文件形式存储的,那么$MFT 的第一个文件记录就是他的本身。实际上 $MFT是个数据库。
• 当一个属性为非常驻时,如大文件的数据,它的 头部包含了NTFS需要在磁盘上定位该属性值的有 关信息。下图显示了一个存储在两个运行中的非 常驻属性
• 非常驻属性被存储在簇流中。簇流是一组 连续的扇区。簇流用它的起始簇号和流长 度加以说明。如,一个属性分为3部分,第 一部分存储在簇号为30,31,32,33,34的簇中, 则该簇流起始簇号为30,流长度为5。第二 部分存储在66,67号中,则第二个簇流起始 于簇66,长度为2。第三部分存储在39~42 号簇中,则第三个簇流起始于39号簇,流 长度为4。如图:
属性头
• 属性头主要用于说明该属性的类型、大小 及名字,同时包含压缩、加密等标志。 • 常驻属性的属性头
非常驻属性头结构
• 常驻属性等很小的属性与其属性头一起存 放在MFT中,内容跟在属性头后面。 • 非常驻属性则另外存储在MFT以外的簇空间 中,并在MFT中的属性描述项中记录它的簇 地址。
• 可以看到,簇流起始位置为5610பைடு நூலகம்5(0x 08 8F 9F)号簇。簇流长度为12(0x0C)个簇
其他属性
• 0x60 卷名属性($VOLUME_NAME)用来记 录卷名。最长为127个unicode字符。 • 0x90 索引根属性($INDEX_ROOT)为实现 B+树设置的根节点。 • 0xA0 索引分配属性($INDEX_ALLOCATION) 用于存放索引项。索引分配属性总是非常 驻属性,由一个个的索引记录组成。索引 记录存储在MFT之外的簇空间中,每个索引 记录有固定的大小,并包含一个分类树中 的节点,大小通常为4096字节。
字节偏移(十六进制) 00-02 03-0A 0B-0C 0D 0E-0F 15 18-19
字节数 3 8 2 1 2 1 2
含义 跳转指令 OEM名(“明文NTFS”) 每扇区字节数 每簇扇区数 保留扇区数 介质描述符 每磁道扇区数(不检查此项)
1A-1B
1C-1F 24-27 28-2F 30-37 38-3F 40 41-43 44 45-47 48-4F 50-53 54-1FD 1FE-1FF
文件名属性
• 文件名属性($FILE_NAME)的类型值为 0x30。任何文件和目录在它的MFT项中至少 有一个文件名属性。该属性用于存储文件 名,还包含文件大小、时间等信息。
数据属性
• 即($DATA,0x80)。这个属性存放文件的内 容。
• 常驻数据属性,可以看到,常驻数据属性 的内容直接跟着属性头之后,一起存储在 MFT中。
• NTFS的DBR
NTFS的引导扇区也位于文件系统的0号扇 区,这是它与FAT文件系统在布局 上的唯一 相同之处。 数据结构如下图,当格式化一个NTFS卷时 ,格式化程序分配开始的16个扇区给引导 扇区和自举代码。

在NTFS卷上,BPB后面的数据字段构成扩 展BPB。启动过程中,这些字段中的数据可 以使NTLDR(NT loader程序)找到主文件表 (MFT)。在NTFS卷上,MFT不会放在特定的 预定义扇区上(和FAT16或FAT32不一样),因 此,如果MFT通常的位置有坏扇区,它可以 移动。但是,如果数据遭到破坏,MFT无法 定位,则Windows NT/2000就认为该卷未格 式化。
常 规 属 性 值 及 其 含 义
标准信息属性0x10
• 标准属性($STANDARD_INFOMATION)的类 型值为0x10,它总是常驻属性。它包含一 个文件或目录的基本元数据,如时间、所 有权和安全信息等。所有文件和目录必须 有这个属性。
标准属性实例
• 0x00~0x1F字节处32个字节分为4个8字节部 分,分别为文件的建立时间、最后修改时 间、MFT改变时间和最后访问时间。 • 0x20~0x23处4个字节为标志,这个文件的标 志为0x22,则为“存档、隐藏”
• 在这个MFT项中,0x00~0x37是MFT的头部。 后面为属性列表。共有4个属性,前三个是 常驻属性,最后一个为非常驻属性。深色 部分则是每个属性的属性头。
• 图中可看出,前三个属性(常驻)属性头 一样大小,最后一个要大一些。
• NTFS将文件作为属性/属性值的集合来处理, 这一点与其他文件系统不一样。文件数据就 是未命名属性的值,其他文件属性包括文件 名、文件拥有者、文件时间标记等。下图显 示了一个用于小文件的MFT记录
浏览文件
• 点击WINHEX浏览文件
• • •
$mft和$mftmirr在系统下是看不到的,只能在这里看到。 $mft本身是一个文件大小会有变化,这里有32K $mftmirr只有4K,占用8个扇区。
MFT属性
• 属性的结构: • 每个MFT项大小为1024字节,分为两部分, MFT头和属性列表。 • 属性有许多类型,每种属性都有自己的内 部结构:属性头和属性内容。由于属性有 常驻属性和非常驻属性之分,所以属性头 也有差别,但不管是常驻还是非常驻,它 们属性头的前16个字节是相同的结构。 (如下图)
• • • • • • • • •
向后边翻上两个扇区,就到了$MFTMirr MFT的镜像 $MFT我们在DBR里也能看到他在什么地方。30~37H的数值上体现) $MFTMirr我们在DBR里的38~3F 的数值上能体现出来。 镜像应该跟$MFT是一样的,但是他跟FAT32不一样,所以备份也不一定是完 全一样的。镜像只是前4个元文件的文件记录的备份。 1、 $MFT 2、 $MFTMirr 3、日志文件 4、卷标 四个元文件之后,就没有备份了。所以向下搜索是搜索不到的,只有4个
相关文档
最新文档