NTFS文件系统结构分析
全面了解NTFS文件系统结构
![全面了解NTFS文件系统结构](https://img.taocdn.com/s3/m/1dd1c136ddccda38366baf4c.png)
解读NTFSNTFS是一个比FAT复杂的多的文件系统,我们一起努力来把它完整的解读出来NTFS的引导扇区也是完成引导和定义分区参数,和FAT分区不同,FAT分区的B OOT记录正常,就显示分区没有错误,即使文件不正确,而NTFS分区的BOOT不是分区的充分条件,它要求必须MFT中的系统记录如$MFT等正常该分区才能正常访问。
其BPB参数如下表所示。
字节偏移长度常用值意义0x0B 字 0x0002 每扇区字节数0x0D 字节 0x08 每簇扇区数0x0E 字 0x0000 保留扇区0x10 3字节 0x000000 总为00x13 字 0x0000 NTFS未使用,为00x15 字节 0xF8 介质描述0x16 字 0x0000 总为00x18 字 0x3F00 每磁盘扇区数0x1A 字 0xFF00 磁头数0x1C 双字 0x3F000000 隐含扇区0x20 双字 0x00000000 NTFS未使用,为00x28 8字节 0x4AF57F0000000000 扇区总数0x30 8字节 0x0 $MFT的逻辑簇号0x38 8字节 0x54FF0000 $MFTMirr的逻辑簇号0x40 双字 0xF6000000 每MFT记录簇数0x44 双字 0x01000000 每索引簇数0x48 8字节 0x14A51B74C91B741C 卷标0x50 双字 0x00000000 检验和MFT中的文件记录大小一般是固定的,不管簇的大小是多少,均为1KB。
文件记录在MFT文件记录数组中物理上是连续的,且从0开始编号,所以,NTFS是预定义文件系统。
MFT仅供系统本身组织、架构文件系统使用,这在NTFS中称为元数据(metadata,是存储在卷上支持文件系统格式管理的数据。
它不能被应用程序访问,只能为系统提供服务)。
其中最基本的前16个记录是操作系统使用的非常重要的元数据文件。
这些元数据文件的名字都以“$”开始,所以是隐藏文件,在Windows 2000/XP中不能使用dir命令(甚至加上/ah参数)像普通文件一样列出。
ntfs 原理
![ntfs 原理](https://img.taocdn.com/s3/m/e3dc8b765627a5e9856a561252d380eb6294238b.png)
ntfs 原理NTFS(New Technology File System)是Windows操作系统中使用的一种文件系统。
它的设计目标是提供更高的性能、可靠性和安全性,以适应大型存储设备和复杂的操作环境。
NTFS的核心原理包括以下几个方面:1. 文件存储结构:NTFS使用了一种称为“Master File Table (MFT)”的数据结构来存储文件和文件夹的元数据信息。
每个文件和文件夹在MFT中都有一个相应的记录,包括文件名、大小、创建时间、修改时间等属性。
2. 文件分配:NTFS将存储介质(如硬盘)划分为簇(Cluster),每个簇的大小可根据用户需要进行设置。
文件在磁盘上的存储是以簇为单位进行分配的,相邻簇被组织在一起形成连续的簇链表。
这样可以提高读写的效率,并减少文件的碎片化。
3. 文件安全:NTFS引入了权限控制机制,可以对文件和文件夹进行细粒度的访问控制。
每个文件和文件夹都有一个安全描述符,包含了访问控制列表(ACL)和访问策略等信息,可以设置哪些用户或组对文件有何种操作权限。
4. 容错和恢复:NTFS具备容错和恢复机制,可以在磁盘发生故障或断电等异常情况下,通过文件系统的日志文件和元数据的冗余性来保证数据的完整性。
当系统重新启动时,NTFS可以通过检查日志文件进行自我修复,确保文件系统可用性。
5. 数据压缩和加密:NTFS支持对文件和文件夹进行数据压缩和加密。
压缩可以节省存储空间,而加密可以保护敏感数据不被非法访问。
综上所述,NTFS通过MFT存储文件的元数据信息,使用簇进行分配和存储文件数据,实现了权限控制、容错和恢复机制,同时支持数据压缩和加密。
这些原理使NTFS成为一种可靠、高效并且安全的文件系统。
NTFS文件解析系统的简单分析
![NTFS文件解析系统的简单分析](https://img.taocdn.com/s3/m/2ba34edd5022aaea998f0f11.png)
NTFS文件解析系统的简单分析正如我们所知道的,目前主流anti-rootkit检测隐藏文件主要有两种方法,一种是文件系统层的检测(像IceSword自己构造irp包发到文件系统驱动),另一种就是磁盘级别的低级检测,直接对磁盘的数据进行分析,比如SnipeSword、filereg和unhooker.最近对第二种方法的一部分(及NTFS文件系统的解析)做了一些学习,于是就写点学习的东西与大家分享,其中有很多错误和不足希望大牛们指出。
(1)准备工作――获取分区的一些基本参数我们可以用CreateFile打开某个盘,读取偏移为0的扇区的数据。
具体的数据结构为:typedef struct tag_NTFSBPB{BYTE bJmp[3];//跳转指令BYTE bNTFlags[4]; // 文件系统NTFS的为"NTFS"BYTE bReserve1[4]; //一般为四个空格WORD wBytePerSector;//每扇区字节数BYTE bSectorPerCluster//;每簇扇区数WORD wReserveSectors;//保留扇区数BYTE bFatNum; // 总是0WORD wRootDirNum; //总是0WORD wSectorOfParti; //总是0BYTE bMedium;//WORD wSectorPerFat; //总是0WORD wSectorPerTrack;//WORD wHeadNum;//DWORD dwHideSector;//DWORD dwSectoOfParti; //总是0BYTE bDeviceFlag;//BYTE bReserve2;//WORD wReserve3;//ULONGLONG ullSectorsOfParti; //扇区总数ULONGLONG ullMFTAddr;//$MFT的起始逻辑簇号ULONGLONG ullMFTMirrAddr;// $MFT的起始逻辑簇号BYTE bClusterPerFile;//BYTE bReserve4[3];//DWORD dwClusterPerINDX;//BYTE bSerialID[8];//} NTFSBPB, *LPNTFSBPB;其中最重要的应该就是通过ullMFTAddr获得$MFT的起始逻辑簇号进而找到根图(1)目录的位置在进行分析。
数据恢复技术分析NTFS分区结构
![数据恢复技术分析NTFS分区结构](https://img.taocdn.com/s3/m/818aa22d5a8102d277a22f0f.png)
二、主控文件表与元文件
在NTFS分区中,最重要的就是主控文件表(MFT), 它记载了所有文件的属性信息,甚至包括数据, 有点类似于FAT分区的文件目录表。 为了防止遭到破坏,NTFS分区将MFT的位置移到了 分区的中间,并在引导扇区中给出了它的簇号。 我们在恢复数据的时候,就是依靠MFT来完成的。
分析NTFS分区结构
M6-1 本单元主要内容
一
NTFS分区结构
二 主控文件表与重难点
重点
NTFS分区概述 NTFS引导扇区分析 恢复NTFS引导扇区的方法 NTFS元文件介绍
难点
NTFS引导扇区BPB参数 NTFS元文件的概念和作用
LCN
101
102
106
107
108
221
一、NTFS分区结构
NTFS分区不再设管理控制区域,分区的0扇区便是 0簇,全部空间都是数据区域。分区中承担管理控 制信息的数据块被组织成文件,灵活地存放在任 意一个位置。只有BOOT区域比较特殊,由于0扇区 仍是引导扇区,因此BOOT区域始终位于分区前端。
在NTFS分区中,引入了卷概念。卷可以看成是分 区的升级版,是为了解决某些分区限制而提出的 概念,卷的操作和使用和分区是一样的。 卷分为简单卷和动态卷两种,简单卷就是一个普 通分区,而动态卷则可以实现一些高级功能,比 如可以将多个分区或者磁盘组织成一个卷,能够 动态增长容量等,使其可以支持服务器存储所需 的海量存储空间。
11
12~15 16~23 24~?
$ExtMD
$Extended\
扩展元数据目录(Extended metadata directory)
NTFS文件系统结构分析
![NTFS文件系统结构分析](https://img.taocdn.com/s3/m/9cb1920190c69ec3d5bb7515.png)
NTFS文件系统结构分析在NTFS文件系统中,文件存取是按簇进行分配,一个簇必需是物理扇区的整数倍,而且总是2的整数次方。
NTFS文件系统并不去关心什么是扇区,也不会去关心扇区到底有多大(如是不是512字节),而簇大小在使用格式化程序时则会由格式化程序根据卷大小自动的进行分配。
文件通过主文件表(MFT)来确定其在磁盘上的存储位置。
主文件表是一个对应的数据库,由一系列的文件记录组成--卷中每一个文件都有一个文件记录(对于大型文件还可能有多个记录与之相对应)。
主文件表本身也有它自己的文件记录。
NTFS卷上的每个文件都有一个64位(bit)称为文件引用号(File Reference Number,也称文件索引号)的唯一标识。
文件引用号由两部分组成:一是文件号,二是文件顺序号。
文件号为48位,对应于该文件在MFT中的位置。
文件顺序号随着每次文件记录的重用而增加,这是为NTFS进行内部一致性检查而设计的。
NTFS使用逻辑簇号(Logical Cluster Number,LCN)和虚拟簇号(Virtual Cluster Number,VCN)来进行簇的定位。
LCN是对整个卷中所有的簇从头到尾所进行的简单编号。
卷因子乘以LCN,NTFS就能够得到卷上的物理字节偏移量,从而得到物理磁盘地址。
VCN则是对属于特定文件的簇从头到尾进行编号,以便于引用文件中的数据。
VCN可以映射成LCN,而不必要求在物理上连续。
NTFS的目录只是一个简单的文件名和文件引用号的索引,如果目录的属性列表小于一个记录的长度,那么该目录的所有信息都存储在主文件表的记录中,对于大于记录的目录则使用B+树进行管理。
主文件表中的基本文件记录中有一个指针指向一个存储非常驻索引缓冲--包括该目录下所有下一级子目录和文件的外部簇,而B+树结构便于大型目录中文件和子目录的快速查找。
在NTFS中,所有存储在卷上的数据都包含在文件中,包括用来定位和获取文件的数据结构,引导程序和记录这个卷的记录(NTFS元数据)的位图,这体现了NTFS的原则:磁盘上的任何事物都为文件。
NTFS文件系统实例分析
![NTFS文件系统实例分析](https://img.taocdn.com/s3/m/f071034d3c1ec5da50e27093.png)
NTFS文件系统实例分析一、基本情况NTFS文件系通过主文件$MFT管理文件,每个文件都有很多属性,磁盘上每建立1个文件,在$MFT中记录文件的属性,文件记录大小都是1KB,小文件(小于1KB)的全部属性都存放在$MFT中,大文件(1K以上)在它的MFT基本文件记录中,其80数据属性有数据运行(dataRuns或一个盘区(extent),)指针(包含数据所在的起始簇号和簇的大小),也称为流描述,当流描述的第一个字节为0里就表示该流已经结束。
NTFS使用逻辑簇号(LCN,Logical Cluster Number)和虚拟簇号(VCN,Virtual Cluster Number)来对簇进行定位。
LCN是对整个卷中的所有的簇从头到尾进行简单编号,VCN是对特定文件的簇从头到尾进行编号,以便引用文件中的数据。
文件MFT记录的结束标志为ff ff ff ff。
二、举例建立一个小文本文件dd.txt和一个大文件large.txt。
1、文件属性修改打开主文件$MFT,按Unicode编码,向下查找文本,搜索文件名dd.txt,读出文件dd.txt记录,查看0x10属性,在偏移0x38处就是该文件属性,长度为4字节。
改变此字节就可改变文件是的只读、隐藏、系统等属性。
2、小文件(小于1KB,文件所有属性在MFT中的一条记录中容纳)打开主文件$MFT,按Unicode编码,向下查找文本,搜索文件名dd.txt,读出文件dd.txt的记录,查看0x80属性,在偏移0x18处就是该文件的内容,在此可直接修改文件内容。
2、大文件(大于1KB)打开主文件$MFT,按Unicode编码,向下查找文本,搜索文件名large.txt,读出文件large.txt的记录,查看0x80属性,在偏移0x10、0x18处分别用8个字节记录文件起始VCN和结束VCN,此例分别是00 00 00 00 00 00 00 00,01 00 00 00 00 00 00 00,说明文件只有0簇和1簇共2簇;在偏移0x20处的2个字节是该文件数据运行的偏移,此处的值为0x40,所以查看偏移0x40处就是文件的第1个运行的描述,该运行分为:子运行1:31 02 C6 3A 0C其中“31”中的“1”表示“31”后面第1个字节的数表示子运行的大小,即该子运行的大小为02簇。
解析ntfs底层结构
![解析ntfs底层结构](https://img.taocdn.com/s3/m/d0122f84dd88d0d232d46a0c.png)
解析ntfs底层结构Ntfs是我们经常用的文件系统,不仅在Windows分区中起到了很大的作用。
还在我们经常使用的U盘上也平凡出现,那么我们了解经常使用的ntfs吗?小编就来带大家解析ntfs底层结构。
一、NTFS系统结构NTFS是Windows NT引入的新型文件系统,如果您是一位熟悉FAT磁盘格式的专业人士,可能会觉得NTFS文件系统的思想蹩脚而晦涩,如果您对FAT格式一无所知,那么恭喜您,您会更快的了解这种更有效率的磁盘格式。
NTFS的结构复杂,内容繁多,小编仅对NTFS卷上的底层结构做分析,并提供卷上数据删除的特征状态供大家参考。
现在,我们首先来建立了解NTFS需要的基本数据结构概念。
图一:ntfs1、NTFS的基本数据结构NTFS的数据大体上可分为4个部分(1) Partition boot sector(引导扇区,又称BPB),此部分为所有磁盘格式都共有,占用一个扇区,但是具体的内容当然各不相同(见表3)。
(2) Master File Table(主文件列表,MFT),它是对卷上所有文件的记录,每一个文件对应一个记录项,理论上占用该卷12%的空间。
(3) System files(系统文件),NTFS系统一共有16个系统文件,和8个保留文件。
(4) File area(数据区),留给用户的空间。
Ntfs说起来很复杂,用起来很简单。
我们常常会与其相遇,但都视而不见,以至于mac系统都对它视若无睹。
这是ntfs的悲伤,也是mac的绝情。
mac系统对ntfs格式的磁盘只可以读不可以写入,所以小伙伴们要是心疼ntfs,一直用自己强大的功能默默付出,去无人问津。
就在自己的mac电脑上下载软件ntfs for mac。
帮助ntfs走进mac的心里。
NTFS文件系统结构总览数据恢复迷
![NTFS文件系统结构总览数据恢复迷](https://img.taocdn.com/s3/m/908cdc739a6648d7c1c708a1284ac850ad020422.png)
NTFS文件系统结构总览数据恢复迷当用户将硬盘的一个分区格式化为NTFS分区时,就建立了一个NTFS文件系统结构。
NTFS文件系统与FAT文件系统一样,也是用簇为基本单位对磁盘空间和文件存储进行管理的。
一个文件总是占有若干个簇,即使在最后一个簇没有完全放满的情况下,也是占用了整个簇的空间,这也是造成磁盘空间浪费的主要原因。
文件系统通过簇来管理磁盘,并不需要知道磁盘扇区的大小,这样就使NTFS保持了与磁盘扇区大小的独立性,从而使不同大小的磁盘选择合适的簇。
NTFS分区也被称为NTFS卷,卷上簇的大小,又称为卷因子,其大小是用户在创建NTFS卷时确定的。
和FAT文件系统一样,卷因子的大小和文件系统的性能有着非常直接的关系。
当一个簇占用的空间太小时,会出现太多的磁盘碎片,这样在空间和文件访问时间上会造成浪费;而相反的当一个簇占用的空间太大时,直接造成了磁盘空间的浪费。
因此,最大限度地优化系统对文件的访问速度和最大限度地减少磁盘空间的浪费是确定簇的大小的主要因素。
簇的大小一定是扇区大小的整数倍,通常是2n(n为整数)。
表4-28是NTFS文件系统中不同卷大小和簇的一般关系。
当然这并不是完全一定的,只是系统格式化磁盘时的默认情况,这个默认的簇的值一般被认为是最能优化系统的值。
表4-28 NTFS卷大小和簇大小关系表卷大小(MB)每簇的扇区默认的簇大小≤512 1 512个字节513~1024 2 1024个字节(1KB)1025~2048 4 2048个字节(2KB)≥20498 4KB当一个分区由FAT卷转变成为一个NTFS卷时,卷因子的大小总是占用一个扇区。
NTFS文件系统使用了逻辑簇号(Logical Cluster Number,LCN)和虚拟簇号(Virtual Cluster Number,VCN)对卷进行管理。
其中LCN是对卷的第一个簇到最后一个簇进行编号,只要知道LCN号和簇的大小以及NTFS卷在物理磁盘中的起始扇区(绝对扇区)就可以对簇进行定位,而这些信息在NTFS卷的引导扇区中可以找到(BPB参数),在系统底层也是用这种方法对文件的簇进行定位的。
NTFS文件系统实例分析
![NTFS文件系统实例分析](https://img.taocdn.com/s3/m/f071034d3c1ec5da50e27093.png)
NTFS文件系统实例分析一、基本情况NTFS文件系通过主文件$MFT管理文件,每个文件都有很多属性,磁盘上每建立1个文件,在$MFT中记录文件的属性,文件记录大小都是1KB,小文件(小于1KB)的全部属性都存放在$MFT中,大文件(1K以上)在它的MFT基本文件记录中,其80数据属性有数据运行(dataRuns或一个盘区(extent),)指针(包含数据所在的起始簇号和簇的大小),也称为流描述,当流描述的第一个字节为0里就表示该流已经结束。
NTFS使用逻辑簇号(LCN,Logical Cluster Number)和虚拟簇号(VCN,Virtual Cluster Number)来对簇进行定位。
LCN是对整个卷中的所有的簇从头到尾进行简单编号,VCN是对特定文件的簇从头到尾进行编号,以便引用文件中的数据。
文件MFT记录的结束标志为ff ff ff ff。
二、举例建立一个小文本文件dd.txt和一个大文件large.txt。
1、文件属性修改打开主文件$MFT,按Unicode编码,向下查找文本,搜索文件名dd.txt,读出文件dd.txt记录,查看0x10属性,在偏移0x38处就是该文件属性,长度为4字节。
改变此字节就可改变文件是的只读、隐藏、系统等属性。
2、小文件(小于1KB,文件所有属性在MFT中的一条记录中容纳)打开主文件$MFT,按Unicode编码,向下查找文本,搜索文件名dd.txt,读出文件dd.txt的记录,查看0x80属性,在偏移0x18处就是该文件的内容,在此可直接修改文件内容。
2、大文件(大于1KB)打开主文件$MFT,按Unicode编码,向下查找文本,搜索文件名large.txt,读出文件large.txt的记录,查看0x80属性,在偏移0x10、0x18处分别用8个字节记录文件起始VCN和结束VCN,此例分别是00 00 00 00 00 00 00 00,01 00 00 00 00 00 00 00,说明文件只有0簇和1簇共2簇;在偏移0x20处的2个字节是该文件数据运行的偏移,此处的值为0x40,所以查看偏移0x40处就是文件的第1个运行的描述,该运行分为:子运行1:31 02 C6 3A 0C其中“31”中的“1”表示“31”后面第1个字节的数表示子运行的大小,即该子运行的大小为02簇。
详解NTFS文件系统
![详解NTFS文件系统](https://img.taocdn.com/s3/m/5728cc3b3069a45177232f60ddccda38376be1d9.png)
详解NTFS⽂件系统⼀、分析NTFS⽂件系统的结构当⽤户将硬盘的⼀个分区格式化为NTFS分区时,就建⽴了⼀个NTFS⽂件系统。
NTFS⽂件系统同FAT32⽂件系统⼀样,也是⽤“簇”为存储单位,⼀个⽂件总是占⽤⼀个或多个簇。
NTFS⽂件系统使⽤逻辑簇号(LCN)和虚拟簇号(VCN)对分区进⾏管理。
逻辑簇号:既对分区内的第⼀个簇到最后⼀个簇进⾏编号,NTFS使⽤逻辑簇号对簇进⾏定位。
虚拟簇号:既将⽂件所占⽤的簇从开头到尾进⾏编号的,虚拟簇号不要求在物理上是连续的。
NTFS⽂件系统⼀共由16个“元⽂件”构成,它们是在分区格式化时写⼊到硬盘的隐藏⽂件(以”$”开头),也是NTFS⽂件系统的系统信息。
NTFS的16个元⽂件介绍:⾸先找到该分区的起始扇区,具体可以参考这篇⽂章。
⼆、分析$Boot⽂件$Boot元⽂件由分区的第⼀个扇区(既DBR)和后⾯的15个扇区(既NTLDR区域)组成,其中DBR由“跳转指令”、“OEM代号”、“BPB”、“引导程序”和“结束标志”组成,这⾥和FAT32⽂件系统的DBR⼀样。
下图是⼀个NTFS⽂件系统完整的DBR。
下⾯我们分析⼀下DBR中的各参数EB 58 90:(跳转指令)本⾝占2字节它将程序执⾏流程跳转到引导程序处。
“EB 58 90″清楚地指明了OS引导代码的偏移位置。
jump 52H加上跳转指令所需的位移量,即开始于0×55。
4E 54 46 53 20 20 20 20:(OEM代号)这部分占8字节,其内容由创建该⽂件系统的OEM⼚商具体安排。
为“NTFS”。
BPB:NTFS⽂件系统的BPB从DBR的第12个字节开始,占⽤73字节,记录了有关该⽂件系统的重要信息,下表中的内容包含了“跳转指令”、“OEM代号”以及“BPB”的参数。
对照上⾯的BPB分析如下:02 00:每个扇区512个字节08:每个簇8个扇区00 00:保留扇区为000 00 00:为000:不使⽤F8:为硬盘00 00:为000 3F:每磁道63个扇区00 FF:每柱⾯255个磁头00 00 00 3F:隐藏扇区数(MBR到DBR)00 00 00 00:不使⽤80 00 80 00:不使⽤00 00 00 00 0C 80 33 FF:扇区总数20972851100 00 00 00 00 00 00 03:$MFT的开始簇号00 00 00 00 00 85 57 80:$MFTmirr的开始簇号00 00 00 F6:每个MFT记录的簇数00 00 00 01:每索引的簇数B8 11 2A 0C B8 11 2A 0C:分区的逻辑序列号引导程序:DBR的引导程序占⽤426字节,其负责完成将系统⽂件NTLDR装⼊,对于没有安装系统的分区是⽆效的。
《NTFS文件系统》课件
![《NTFS文件系统》课件](https://img.taocdn.com/s3/m/fe8dc1bf900ef12d2af90242a8956bec0975a500.png)
NTFS文件系统的发展趋势
1
容量扩展
随着数据量的增加,NTFS文件系统将继续支持更大的分区和更大的文件。
2
性能提升
NTFS文件系统将继续改进读写性能和响应能力,以满足不断增长的计算需求。
3
安全加强
NTFS文件系统将引入更多的安全特性,以提供更好的数据和系统保护。
NTFS文件系统可以在不同版本的Window作。
NTFS文件系统的应用领域
服务器存储
个人电脑
NTFS文件系统广泛应用于服务器 领域,提供高性能和数据安全性。
NTFS文件系统是Windows个人电 脑的默认文件系统,适合处理各 种文件和数据。
外部存储设备
1 安全性高
NTFS文件系统支持访问控制列表(ACL),可以对文件和文件夹进行细粒度的权限控制。
2 稳定性强
NTFS文件系统具有自动修复和错误检测的能力,可以保证文件系统的稳定性,并防止数 据丢失。
3 支持大文件和大分区
NTFS文件系统支持非常大的文件和分区大小,可以满足现代计算机系统对大容量存储的 需求。
性能优异
NTFS文件系统具有较高的读写速度和响应能力, 适合处理大型文件和高并发访问。
灵活性强
NTFS文件系统支持管道、链接和挂载等高级特 性,可以满足不同的应用场景需求。
数据完整性
NTFS文件系统通过使用日志和校验机制来保证 数据的完整性,对系统崩溃和断电等异常情况具 有较好的容错能力。
兼容性广泛
NTFS文件系统的结构
主引导记录(MBR)
MBR是NTFS文件系统的引导扇 区,包含启动计算机所需的信 息。
数据备份与恢复 课件 第20、21讲 NTFS分区结构分析、 分析主控文件表结构
![数据备份与恢复 课件 第20、21讲 NTFS分区结构分析、 分析主控文件表结构](https://img.taocdn.com/s3/m/b72a3d4d9a6648d7c1c708a1284ac850ac020472.png)
三、主控文件表与元文件
• 在NTFS中承担管理控制信息的数据称为元数据,用 于记载文件属性信息、簇分配信息、以及加密、配 额、日志等。这些元数据分别被组织成文件,称为 元文件。
• 前面所提到的BOOT区域和MFT区域,也分别被组织 为两个重要的元文件:$Boot和$MFT。
• NTFS中有16个元文件,每个元文件都以美元符号起 头,以标示其特殊身份。这些元文件记录了分区底 层的结构信息,因此非常特殊而重要,被系统保护 起来,用户和应用程序不能访问它们。
项目四:文件系统数据恢复
任务3 NTFS文件系统结构 子任务4.3.1 NTFS分区结构分析
教学内容
目录 CONTENT
01 课前学情 02 探究NTFS文件系统结构 03 工单-NTFS文件系统结构分析 04 总结与拓展
教学目标
素质目标
1.通过子目录特殊目录项的原理主控文件表的部分备份(通常为前4项) 日志文件,实现了NTFS的可恢复性和安全性 卷文件,标识卷名,是否格式化,是否需要修复等信息 属性定义列表文件 根目录,存放目录和文件的索引,表示文件的逻辑层次关系 位图元文件,记录了卷中簇的分配情况 引导元文件,恒为0簇起始 坏簇列表元文件 安全元文件,存储访问控制表(在NTFS4及以前为磁盘配额信息) 大小写字符转换表元文件 扩展元数据目录(Extended metadata directory) 扩展元数据,分别为重解析点、加密日志、配额管理、对象ID 为以后扩展而保留 用户文件和目录的记录编号
6组优秀
课堂活动:
1. NTFS分区结构
2. NTFS文件系统中两个重要的元文件是? 3.元文件:在NTFS分区中,将所有分区管理控制信息都以文件形式组织管理。以下元文件编 号?
NTFS文件系统解析
![NTFS文件系统解析](https://img.taocdn.com/s3/m/5c83c014fe00bed5b9f3f90f76c66137ee064f37.png)
NTFS⽂件系统解析1. windows 下磁盘⽂件读写下⾯是读取D:\磁盘上的第0扇区 512 BytesCreateFile()打开磁盘,获取⽂件句柄;SetFilePointer()设置读写的位置;ReadFile()读取磁盘扇区数据。
HANDLE hFile;char drive[] = "\\\\.\\D:"; //------- \\.\D: -----//------- 创建⽂件句柄 ------hFile = CreateFile(drive, // 还可以为硬盘"\\\\.\\physicalDrive0"绝对读写, 或类似"D:\\abc\\fileName.txt"⽂件形式, GENERIC_READ, // 打开⽅式 FILE_SHARE_WRITE|FILE_SHARE_READ, // 前者表⽰之后打开该⽂件的程序 only write, 后者为only read NULL, // 安全属性 LPSECURITY_ATTRIBUTES OPEN_EXISTING, // how to Create 0, NULL); //if(hFile == INVALID_HANDLE_VALUE) return;// 中间两个参数分别是偏移字节数的低32Bit数值,和⾼32Bit的地址, ⾼32Bit不⽤则为零; 此处表⽰D:\从⾸扇区起,偏移字节数为0SetFilePointer(hFile, 0, NULL, FILE_BEGIN);DWORD lenRead;ReadFile(hFile, buf, 512, &lenRead, NULL); // 在设定的位置起,读取512Byte到缓存buf; 这⾥读取的是分区引导扇区2. 获取磁盘所有驱动器DWORD allDrive = GetLogicalDrive().// 返回值共有 32 Bits,从低位到⾼位分别表⽰A,B,C,D,E,.....// ⽐如0x0000 007C, 即 01111100, 表⽰有C,D,E,F,G 共5个驱动器;3. NTFS ⽂件系统 ⼀个NTFS系统是由引导扇区,主⽂件表MFT,和数据区组成;另外MFT有⼀部分重要备份在数据区。
B NTFS 文件系统剖析 结构分析 Y
![B NTFS 文件系统剖析 结构分析 Y](https://img.taocdn.com/s3/m/fea0a501bed5b9f3f90f1cbe.png)
-5437-0引言Windows NT 最初支持3种不同的文件系统:FAT [1]、HPFS 和NTFS 。
NTFS 是NT 的内定文件系统,同时NT 支持FAT 和HPFS 以提供对其它操作系统的兼容(虽然NT4.0后不再支持HPFS )。
微软公司对NTFS 的设计目标是要克服另外二个NT 兼容文件系统的限制,同时还要能提供高性能,以满足企业级应用对操作系统的要求[2]。
本文对NTFS 与FAT 文件系统进行比较分析,详细剖析NTFS 磁盘数据结构的设计。
1NTFS 的特性Windows NT 和NTFS 是同时开始设计的。
在NTFS 文件系统的基本结构和各部分的功能确定后,微软公司决定使用NTFS 作为NT 的文件系统。
NTFS 作为一个全新的文件系统,它能克服PC 原有文件系统的限制同时又满足NT 企业用户的预期需要。
(1)NTFS 的明显特点是它能够很好的适应不断扩大的磁盘容量需求。
所有的文件系统都把磁盘分割为逻辑的分配单元,也就是簇。
FAT 文件系统使用16位的入口来引用簇,因此,FAT 最多能寻址216或65536个族。
簇的大小能依据磁盘的大小而改变,但是大的簇将形成磁盘碎片,或在簇内部形成较大的浪费。
一个250字节的文件仍然要分配一个簇的空间,如果簇为16K 字节,则15K 以上的空间都被浪费了。
由于只能寻址65536个簇,一个簇为1KB 的FAT 磁盘只能寻址65MB 空间。
要寻址4GB 或更大的磁盘则需要64KB 的簇,但它又将产生大量空间浪费。
NTFS 采用64位地址来引用簇。
因此,如果使用512字节的簇,NTFS 能寻址264*512字节的磁盘,在很长的时间内都能满足需要。
(2)NTFS 使用与NT 一样的安全模型,而FAT 和HPFS 的开发者则忽视了文件系统安全问题。
通过使用自由访问控制和系统特权访问控制,来控制能在一个文件上进行的操作。
同时,文件上的任何操作都将记录在日志中,日志文件则以NT 内部格式储存在NTFS 文件系统内。
WinHex之NTFS学习笔记
![WinHex之NTFS学习笔记](https://img.taocdn.com/s3/m/b0e7b9067cd184254b3535fc.png)
1、NTFS文件系统的引导扇区分析NTFS文件系统的引导扇区是$Boot的第一个扇区,它的结构与FAT文件系统的DBR类似,所以习惯上也称该扇区为DBR扇区,DBR 扇区在操作系统的引导过程起着非常重要的作用,如果这个扇区遭到破坏,系统将不能正常启动。
NTFS文件系统的DBR扇区与FAT文件系统的结构一样,也包括跳转指令、OEM代号、BPB参数、引导程序和结束标志。
(1)跳转指令跳转指令本身占用两个字节,它将程序执行流程跳转到引导程序处。
(2)OEM代号这部分占用8个字节,其内容由创建该文件系统的OEM厂商具体安排。
(3)BPB(BIOS Paramester Block,BIOS参数块)BPB是BIOS Paramester Block的缩写,其含义为BIOS参数块。
BPB 从DBR的第12(0BH)个字节开始,到偏移53H结束,占用73个字节,记录了有关该文件系统的重要信息,其中各个参数的含义如下表:NTFS文件系统BPB参数的定义下面对各个参数的含义进行分析:(1)0BH~0CH:每扇区字节数每扇区字节数记录每个逻辑扇区的大小,其常见值为512字节,但512并不是固定值,该值可以由程序定义,合法值包括512字节、1024字节、2048字节、4096字节。
(2)0DH~0DH:每簇扇区数每簇扇区数记录着文件系统的簇的大小,即由多少个扇区组成一个簇。
如果这个分区是在系统安装之前被格式化而来的,一般大于2GB 的分区每簇默认占用8个扇区,也就是每簇大小为4KB,这个字节的内容就为十六字节进制值“08H”。
如果这个分区是由一个FAT分区转换而来,则每个簇一般占用1个扇区的空间,也就是没簇大小为512字节,这个字节的内容就是“01H”。
在NTFS文件系统中所有的簇从0开始进行编号,每个簇都有一个自己的地址编号,并且从分区的第一个扇区就开始编簇。
(3)0EH~0FH:DBR保留扇区数NTFS文件系统中DBR没有保留扇区,该值常为“0000”。
NTFS文件系统根目录结构
![NTFS文件系统根目录结构](https://img.taocdn.com/s3/m/d7318a39376baf1ffc4fadfb.png)
root [ 140 + C8 ] A0 00 00 00 58 00 00 00 01 (第一 双字为索引分配属性 ,第二双字为下一属性入口相 对偏移 ,第 9 字节 01 为非常驻标志) ,
对非常驻属性 root [ 208 + 10 ] 00 00 00 00 00 00 00 00 为起始 VCN
2D0F18 = 5C8900 相对本硬盘的起始逻辑扇区号 = 88B8FDC +
2F79E8 + 2D0F18 = 8E818DC
3 根目录索引表
根目录索引表中存放根目录文件或子目录的 文件表索引指针 ,如前述从 0 开始编号 ,文件表的 第一记录编号为 0 (占 1KB ,余之类推) .
实例为 :
2 主文件表
主文件表是 NTFS 用来访问文件的主要结构 , 文件记录的长度一般是固定的 ,不管簇大小是多 少 ,均为 1KB. 文件记录在主文件表 MFT 的文件记 数组中从 0 开始编号 (序列号) ,最初的几个记录描 述主文件表 MFT 自身 ,仅供系统本身组织架构 ,文 件系统使用. 这些文件记录是非常重要的 ,又称元 数据文件 ,文件名以 $开始 ,所以是隐藏文件 ,后面 接着是文件或目录记录. 如果文件足够小 ,它将内 容直接写在 MFT 的文件记录中 ,否则文件列表项 保存指向实际数据的簇序列指针.
关键词 : NTFS ; 簇号 ;逻辑扇区号 ;根目录结构 中图分类号 : TP309. 2 文献标识码 : A
0 引言
FAT 文件系统根目录结构比 NTFS 文件系统根 目录结构要简单得多 ,没有 NTFS 文件系统的文件 的安全级和文件夹的安全级 、加密 、为多用户设置 的限制的磁盘配额等文件特性.
通俗介绍NTFS的文件存储结构
![通俗介绍NTFS的文件存储结构](https://img.taocdn.com/s3/m/3c7e34387375a417866f8f5b.png)
通俗介绍NTFS的文件存储结构当我们将分区格式化成NTFS并存储文件时,系统做了什么呢?1、格式化后,系统在第0扇区写下DBR(这个FAT32一样)2、系统将所有扇区划分为n个簇,并在某个簇处建立$mft(主控文件表),超过10G以上的分区,$mft的起始簇一般在786432簇,5G以下的分区$mft的起始簇一般在262144簇(有趣吧,786432/262144=3),这个$mft又被划分为n个小表项,每个表项占用1K的空间(即2个扇区),NTFS将存储在分区的每个文件(包括系统文件)分配一个登记表项。
3、分区格式化后,首先建立16个系统文件(有的少个别文件),并在$mft的前16个项进行登记。
如图:这16个文件通过操作系统是看不到的,要用工具软件如winhex才能看到,16个文件中除了$boot和$AttDef表项损坏外,其它表项的损坏都会导致不能进入分区,显示目录结构损坏。
对分区的格式化就是重写这16个表项。
3、当我们向分区中存储一个文件或文件夹时,会在$mft的第24个表项进行登记(16-23表项系统保留),主要在这表项的2个扇区中写下文件(文件夹)的MFT号、文件名、创建时间、修改时间、访问时间、大小等,如果文件的内容在这1024个字节存储不下的话,就会向分区申请一个可用的空簇存储,并在mft表项中写下链接的数据流地址。
对于文件夹来说,如果其子文件(夹)少的话,子文件(夹)的内容就会一同登记在父文件夹的MFT中;如果其子文件(夹)多,就会向分区申请一个可用的空簇,将子文件(夹)作为一个个索引项登记在其中,并在父文件夹的mft表项中写下索引项的链接地址。
4、学习NTFS时首先从掌握文件的10、30、80、90、A0、B0属性入手。
一般文件的MFT表项中都有10属性、文件名长时有2个30属性、当文件内容很小,MFT中能容纳下的时候,它的80属性为常驻属性,一并存储着文件的内容。
当文件内容过大时,内容就会存储到分区的某个空簇内,在80属性中写下那个簇的偏移地址,这个地址就是查找文件内容的途径。
NTFS文件系统结构
![NTFS文件系统结构](https://img.taocdn.com/s3/m/5f940a4e24c52cc58bd63186bceb19e8b9f6ec40.png)
NTFS文件系统结构前言:最近由于项目需要,研究了一下NTFS文件系统,NTFS文件系统是windows使用的文件系统,包括NT,2000,xp系列。
无奈万恶资本主义的windows将自家的东西全部藏在阴暗的角落,NTFS理所当然地也不开源,尽管没有源代码,还是有足够丰富的资料将NTFS文件系统曝光在自由的阳光下。
下面通过从NTFS文件系统的根源出发,展示如何通过一层层的解析,最终读取到其中的某个文件。
环境:LINUX Ubuntu16.04,待解析的文件系统:NTFS,追踪其中的文件:C:\WINDOWS\DtcInstall.log(随机找的,仅仅以此为例)说明:本人找了一块完整的NTFS文件系统镜像,它里面是一个完整的Windows XP系统,是从Windows XP虚拟机镜像切下来的(因为虚拟机镜像不止包括完整的文件系统,例如我的这块虚拟机镜像从第0x7E000字节以后才是完整的NTFS文件系统),这些都不重要,重要的是现在你只要有一块完整的NTFS文件系统,当然必须是Window XP系统的,因为我们还有追踪C:\WINDOWS\DtcInstall.log这个文件,所以其实在Windows XP中使用Disk Genius打开你C盘分区就是一块完整的NTFS文件系统,如果以16进制查看应该是这样的:NTFS文件系统的布局:BOOT存放一些文件系统基本信息,如一个扇区512bytes,一簇(cluster)有8个扇区,共4K,比较重要的一项是MFT的偏移簇号。
MFT是NTFS中最重要的部分,它是一个个以“FILE"开始的文件记录数据结构。
struct 文件记录{文件记录头;属性1;属性2;属性3;……}而属性包括属性头和属性体两部分,如下属性的数据结构。
struct 属性{属性头;属性体;}所以,下面的文件记录结构举例请参考文件记录结构、文件记录头结构、属性头结构、不同属性体结构来看!这个数据结构就是文件的全部信息,文件的各种属性都放在这个数据结构中,在NTFS中文件内容也属于文件的属性,所以在NTFS中文件的一切都是属性,比如在这个数据结构中有30H属性记录文件名,10H属性记录文件的一些元信息如创建、访问时间等,而80H属性则是文件的内容,因为一个文件记录数据结构仅仅4K,所以如果文件很大,80H属性存放的不再是文件内容,而是存放文件内容的簇索引号run list.对于run list 解析以后介绍,这里知道它是文件内容的簇偏移索引即可。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
NTFS元文件 元文件
• • • • • • $MFT :中的第一个记录是$MFT自身。 $MFTMirr: 主文件表的部分镜像 $LogFile (日志文件),该文件是NTFS为实现可恢复性和安全性而设计。在系统失败时 能恢复NTFS卷。 $Volume(卷文件),它包含卷名、NTFS的版本和一个表明该磁盘是否损坏的标志位。 (NTFS系统以此决定是否需要调用Chkdsk程序来进行修复) $AttrDef:(属性定义表),其中存放着卷所支持的所有文件属性,并指出他们是否可以 被索引和恢复等。 $Root(跟目录),其中保存着该卷跟目录下的所有文件和目录的索引。
NTFS的元文件 的元文件
• NTFS系统中,文件按照簇进行分配,簇大小在格式化的时候由格式化 程序根据卷的大小自动进行分配。 • 文件通过主文件表MFT来确定文件在磁盘上的存储位置。主文件表是一 个对应的数据库,由一系列文件记录组成,卷中每个文件都有一个文件 记录。第一个文件记录称为基本文件记录,其中存储有其他扩展文件记 录的一些信息。文件表本身也有它自己的文件记录。 • MTF中的文件记录大小一般固定为1KB,文件记录在MFT文件记录数组 中物理上是连续的,从0开始编号。
• 1.容错性:NTFS可以自动地修复磁盘错误而不会显示出错信 息. • 2.安全性:NTFS有许多安全性能方面的选项,可以阻止没有授 权的用户访问文件. • 3.EFS提供对存储在NTFS分区的文件进行加密的功能 • 4.用户可以选择压缩单个文件整个文件夹. • 5.磁盘配额:就是管理员可以对本域中的每个用户所能使用 的磁盘空间进行定额限制,即每个用户只能使用最大定额范 围内的磁盘空间.
属性头
• 每个属性又分为属性头和属性内容两部分,属性头给出了该 属性的结构信息。 • 有的属性内容存储在记录项中(如文件名),称为常驻属性。 有的属性内容很大,需要在MFT外另外开辟空间存储(如 文件数据),则称为非常驻属性。 • 有的属性在属性头之后列出了属性名,而有的则没有。
NTFS引导扇区恢复 引导扇区恢复
MFT的文件记录项 的文件记录项
• MFT区域中的每个记录项都分为记录头和属性列表两个部 分,记录头里包含了本记录项的总体情况和信息,属性列表 里列出了该文件的所有属性。 • 不同的文件可以有不同的属性,因此,属性列表的大小是可 变的,在所有属性的最后是结束标志FFFFFFFFH。 • 当某文件的属性表在一个基本记录项里放不下时,就会另外 在MFT中另外申请一个记录项来存储文件属性,称为扩展 记录项。
已删除文件的恢复
• 在恢复文件时,采取如下步骤:
– 通过目标文件的文件名(unicode编码)在MFT中搜索到该文件记录 项。 – 通过其父目录文件参考号判断是否选择正确。 – 通过其80H属性读取数据内容,写入到另一分区的新文件中。
• 由于NTFS采取的索引结构,因此只要该文件的MFT项未被 覆盖,就能够快速恢复。
NTFS文件系统 文件系统
• NTFS是新技术文件系 英文缩写. NTFS特点: 1.容错性 2.安全性 3.使用EFS(Encrypting Fils System)提高安全性 4.文件压缩(Compress) 5.磁盘配额(Disk Quotas)
文件属性
• 在一个NTFS卷中文件所有的信息,包括文件数据在内,都 被认为是文件的属性,而构成该属性的实际数据则被称为 “流”。 • 不同的文件拥有的属性不一样,有的属性也会在同一记录项 中多次出现,比如文件名属性。 • 每个属性的头4个字节表示属性类型,接下来的4个字节表 示本属性大小,根据这个信息,我们可以遍历文件的属性列 表。 • MFT中的各属性的大小均以8字节为边界。
文件索引表
• 每个文件都有一张索引表,记录 了VCN与LCN的对应关系。通过 索引表结构,可以定位文件的存 储位置。 • 采用索引表结构可以随机快速的 访问文件的各个部分。 VCN 0 1 2 … LCN 101 102 106 …
NTFS引导扇区 引导扇区
• 分区的首扇区是引导扇区,它和后面的15个扇区(NTLDR 区域)合起来构成BOOT区域,也就是BOOT元文件。 • NTFS分区的引导扇区同FAT分区的引导扇区在结构上非常 相似,同样包含BPB,DBR和结束标志三个部分,只是在 BPB参数上有部分不同,原FAT分区参数项为0。
NTFS元文件 元文件
• • • • • • • • • • $Bitmap:(位图文件),NTFS卷的簇使用情况都保存在这个位图文件中,其中每一位 代表卷中的一簇,标识该簇是空闲还是已分配。 $Boot(引导文件),它是一个重要的系统文件,存放着windowsNT/2000/XP/2003的引 导程序代码。 $BadClus(坏簇文件),它记录着该卷中所有损坏的簇号,防止系统对其进行分配使用 $Secure:(安全文件),它存储着整个卷的安全描述符数据库。 $UpCase:(大写文件) $Extend metadata directory:(扩展元文件目录) $Extend\$Reparse: (重解析点文件) $Extend\$UsnJrnl:(变更日志文件) $Extend\Quota:(配额管理文件) $Extend\$ObjId:(对象ID文件)
主控文件表MFT 主控文件表
• 在NTFS中,所有的数据都存储在文件中,包括管理和描述 分区结构信息的元数据,采用这种方式使得对所有的数据容 易定位和维护。 • 主控文件表(MFT)是NTFS卷结构的核心。每个文件在 MFT中都有一个文件记录项,该记录项描述了文件的所有 属性,包括文件名,存储位置、存取时间、文件属性等等。 • 每个文件至少有一个MFT项,如果某文件的属性很多则可 能有多个MFT项。
NTFS分区结构概览 分区结构概览
• NTFS卷中将所有信息都以文件形式组织管理,包括引导区 域和MFT等分区结构信息,其结构如下图所示,其中只有 BOOT区域是固定位置的。 NTFS分区结构示意图 分区结构示意图
MFT
BOOT区域
数据区
数据区
MFT前几个重要文件备份
LCN和VCN 和
• LCN(逻辑簇号)是NTFS整个卷中对簇的顺序编号,第0 簇对应着逻辑0扇区。 • VCN(虚拟簇号)是文件被分割为多个部分时的簇编号, 也是以0为起始。 • 因此,将LCN转换为扇区号的时候非常简单,直接将LCN× 每簇扇区数即可得到。
• NTFS的引导扇区如果遭到破坏,同样可以使用备份的引导 扇区记录来恢复,只是NTFS的备份引导扇区藏得比较隐秘。 • 格式化程序在创建一个NTFS卷时,会将该分区的引导扇区 备份到下一个物理相连的分区的前一个扇区,假如下一个分 区的情况为:
– 主分区:保存到下一分区起始前一个扇区。 – 逻辑分区:保存到下一分区的VMBR前一个扇区。 – 无:保存到此分区结束后的一个扇区。
NTFS删除文件的改变 删除文件的改变
• 在NTFS卷删除一个文件时,系统至少在三个关键地方做了 改变:
– 该文件MFT头偏移16H处字节,将最低位置0。 – 在其父目录的90H属性或A0H属性中将该索引项删除掉。 – 在$Bitmap位图元数据文件中把该文件所占用的簇对应位清零。
• 由于在NTFS中文件自身的信息同其目录位置信息是分开表 示的,因此只能通过在MFT中搜寻文件名的方式来定位待 恢复的文件。