文件系统之二——NTFS文件系统主要内容1.NTFS总体结构2.NTFS文件系统的特点3.主文件表4.NTFS元文件5.主文件表属性6.分配策略7.时间值的更新8.文件的建立和删除NTFS文件系统的特点为了将window2000/NT/XP系统和服务器默认文件系统,提高可靠性、高效性、安全性。微软公司推出了一种新型的文件系统-NTFS(newtechnologiesfilesystem)文件系统。NTFS的设计思路是基于系统的稳定性和安全性,并且提供对大容量存储设备的支持。有如下几项功能:1.它提供了容错结构日志,可以有效的保护系统的安全。2.NTFS支持对分区、文件夹、和文件的压缩。任何基于window操作系统的应用程序对NTFS分区上的压缩文件进行读写时不需要是些有第三方软件进行压缩与解压。3.NTFS分区上,可以为共享资源、文件夹和以及文件设置访问许可权限。包括两个方面:一是需要哪些组或用户对文件夹、文件及共享资源进行访问;二是获得访问许可的的组或用户可以尽享什么级别的访问。NTFS文件系统的特点4.win2000的NTFS文件系统下可以进行磁盘配额管理。磁盘配额管理就是管理员可以为用户所能使用的磁盘空间进行配额限制。设置配额后,可以对每个用户的磁盘的使用情况进行跟踪和控制。如果监控到超过配额报警阀值和配额限制的用户,从而采取相应的措施。5.NTFS是windows操作系统的标准文件系统。具有一定的平台可移植性。6.NTFS对大容量存储的支持相当好,可支持卷大小达到2TB7.NTFS和FAT文件系统一样,采用“簇”做为数据存取的最小单位。分析NTFS的结构一个NTFS文件系统大致可以分为引导区、MFT区、MFT备份区、数据区和DBR备份区五大部分。分布布局如下:数据区数据区数据区引导区(通常为16个扇区)MFT部分记录的备份DBR备份(1个扇区)注意:MFT区由一个连续的簇空间组成。其中12.5%/25%/37.5%/50%空间为特殊区域。这是为了防止$MFT产生过多的碎片,造成不必要的磁盘空间浪费。特殊区域MFT区基本概念1.MFTMFT,即主文件表(masterfiletable),是NTFS文件系统的核心。MFT由一个个MFT项组成,每个MFT项由1K字节的空间,分为MFT头和属性列表。头部用来描述自身MFT项的信息。属性列表用来存放各种属性。NTFS和FAT文件系统有很大的不同,他采用了不同的方式对文件系统的数据进行管理。甚至是文件系统本身的管理数据。在NTFS中引入了一些新的概念和结构。MFT头1个文件属性属性属性属性头属性体属性头属性体属性头属性体每个文件和目录都有一个MFT项(除引导扇区),访问其他其他任何文件或目录时,首先访问MFT,在MFT中找到文件的MFT项,根据MFT项中记录的信息找到文件内容并对其进行访问。NTFS元文件2.NTFS元文件被创建时,会同时建立一些重要的系统信息。这些信息全部都以文件形式存在,被称之为“元文件”。原文件的名字都以“$”开头,表示其为隐藏的系统文件,用户是不能直接访问的。NTFS元文件共有17个$MFT(主控文件,对每一个索引)$MFTMirr(MFT部分备份)$LOGFile(事务性日志)$Root(根目录)$Boot(引导文件)$Extend\$Quota(配额管理文件)3.属性在NTFS中,所有与数据相关的信息都叫“属性”,有文件名属性、日期与时间属性等,文件的内容我们称之为数据属性。在NTFS文件系统与fat文件系统最大的不同在于读写的对象不同。fat文件系统做读写操作时,它的对象是文件的内容,而NTFS文件系统则是对文件内容的属性进行直接读写。属性有很多种,如果按结构来分可分为属性头和属性体。按类型来分可分为:常驻属性和非常驻属性。常驻属性:有的属性内容很小,MFT项可以容纳它的全部内容,并且访问使用频率较高。(比如文件名,日期和时间等)非常驻属性:内容较大,无法存放在其MFT项的属性中。例如文件的数据属性。通常存储在MFT以外的簇空间中,并在MFT中的属性描述项中的簇地址。簇空间分配策略NTFS分配策略主要涉及到簇空间、MFT项和属性的分配。簇空间分配策略:对于不同的操作系统,不同的执行方式可能会采用不同的分配策略。在xp系统下,实验发现,使用了一种“最佳分配策略”。即在为数据分配空间的时候,遵循有效利用空间的原则。就是在写入数据时,在所有的闲置空间中选择一个最小空间,来整体装下该文件的所有数据。举例:例如某文件存储需要9簇的空间,现有B、D、F簇空间未被分配使用,最佳分配策略将为文件分配D簇空间给他存储。111100070号簇130号簇350号簇360号簇430号簇600号簇ABCDEFGMFT分配策略Windows在分配MFT项是,从24号簇开始以第一可用分配策略为用户数据分配MFT项.同时MFT表根据实际需要随时可增大。当一个MFT不再被使用时(如文件被删除),MFT项中的说明是否使用标识符,其他的一些数据都不会发生变动。因此我们根据时间和簇流列表信息可将数据进行恢复。属性分配策略1.在为MFT项内的属性分配存储空间是,Windows按属性类型对属性进行排列,一个属性结束后紧接着就是下一个属性。2.一个常驻属性因数据内容增大而成为非常驻属性,就要重新将其存储在MFT表之外的空间,但原来存储在MFT项中的内容在被覆盖之后仍然存在。时间值的更新直接新建一个文件时,文件属性中的所有时间都被设置为当前系统时间值。拷贝文件后,原文件的最后访问将会被更新。新文件的创建时间和访问时间将被更新。新文件的创建时间比修改时间要晚。在同一个卷中移动文件时,访问时间和MFT修改时间将会发生改变,在不同的卷中移动文件时,访问时间被更新,MFT修改时间不会改变。文件被删除后,MFT项的时间值不会更新。1.文件时间值的更新2.目录时间值的更新新建或删除目录时,目录内容发生改变,所以最后修改时间会被更新至当前系统时间。对目录进行拷贝时,四个时间值都会被更新。在卷内移动目录,只是将MFT的修改时间和最后访问时间进行更新。目录移动至不同卷时,它所有四个时间值都会被更新至移动时的时间值。文件或目录时间值:创建时间、最后修改时间、MFT修改时间、最后访问时间文件的建立在NTFS文件系统建立一个文件“\子目录1\a.txt”,假设目录“子目录1”已存在于根目录下。要建立的文件大小为7K个字节,每个簇大小为4k个字节。文件的建立步骤:步骤一:读取文件系统的引导扇区,获得簇大小、MFT其实位置以及每个MFT项的大小。步骤二:读取第一个MFT项,即$MFT文件的MFT项,由他的$DATA属性获取它的MFT位置。步骤三:为准备新建的文件建立MFT项。访问$MFT文件的的$Bitmap属性。找到一个为分配的项。第一个空闲的项为400号簇,把它分配给新文件。步骤四:初始化MFT项——跳转到400号MFT项的位置,将其内容清除掉,建立标准的信息属性和文件名属性,时间值设置为当前系统时间值。在MFT头中设置已使用标记。步骤五:寻找存放文件的簇空间,将文件内容写入簇空间内。利用$MFT文件中的$Bitmap属性寻找两个簇,使用“最佳分配策略”找到两个连续的空簇,将文件内容写入到簇中。将空簇地址号722和723更新至$DATA属性簇地址,最后修改时间值。步骤六:添加文件名项。访问MFT项的根目录时,定位“子目录1”.读取索引根属性和索引分配属性。步骤七:访问他的索引根属性,寻找722和723簇号,得到a.txt存储空间。“a.txt”名字写入MFT项头中,名字将四个时间值写入MFT项的属性中。文件的删除下面我们来看看“\子目录1\a.txt”,是怎么被删除的,a.txt文件大小为7K个字节。每个簇大小为4k个字节。文件删除步骤步骤一:读文件系统的引导扇区,获得文件大小,MFT的其实位置、每个MFT项大小等信息。步骤二:读取$MFT文件的第一项,通过它读取$DATA属性得到MFT位置。步骤三:通过索引根属性和索引分配属性获得“子目录1”,更新目录的最后访问时间步骤四:通索引根属性找文件名”a.txt”及对应的MFT项的簇号。步骤五:从索引中移除文件的项。更新目录的最后写入时间和最后访问时间。步骤六:访问MFT项的常驻属性和非常驻属性,从$Bitmap文件中的$DATA属性得到数据内容所在的簇号:722和723,将该簇空间用0来填充,取消对722和723的分配。步骤七:把a.txt原文件所占的空间从已使用的磁盘空间中减去。达到磁盘空间回收的目的。NTFS的DBR分析偏移长度含义Ox003JMP指令,跳到引导程序,随后一个空指令90(不属于BPB参数)Ox038字符串“NTFS”,文件系统Ox0B2每扇区字数Ox0D1每簇扇区数Ox0E2DBR保留扇区数Ox103常为0Ox132NTFS未使用,常为0Ox151介质描述符Ox162常为0偏移长度含义Ox182每个磁道扇区数Ox1A2磁头数Ox1C4隐含扇区数(根据分区实际情况而定)Ox204NTFS未使用,常为0Ox244NTFS未使用,常为80008000Ox288扇区总数(根据分区实际情况而定)Ox308$MFT起始逻辑簇号(根据分区实际情况而定)Ox388$MFTMirr的起始逻辑簇号Ox402每MFT记录簇数Ox442每索引簇数Ox488分区逻辑序号OxFFE2DBR扇区结束标志(55AA)NTFS的DBR分析MBR分区表分析偏移长度含义OxCE1激活标记位OxCF3分区开始的物理地址OxD21文件系统格式/类型OxD33分区结束的物理地址OxD64隐含扇区总数OxD94分区表总扇区数难点熟练使用winhex软件熟练掌握NTFSDBR各个坐标点的含义比较FAT32DBR各个坐标点与NTFSDBR各个坐标点的异同第十一讲——电子取证与常用软件案例讲解