NTFS文件系统结构分析
全面了解NTFS文件系统结构

解读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 原理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文件解析系统的简单分析正如我们所知道的,目前主流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分区中,最重要的就是主控文件表(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文件系统结构分析在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文件系统实例分析一、基本情况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底层结构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文件系统结构总览数据恢复迷当用户将硬盘的一个分区格式化为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参数),在系统底层也是用这种方法对文件的簇进行定位的。
- 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中搜寻文件名的方式来定位待 恢复的文件。