您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第5章 NTFS文件系统数据恢复
5.1.1NTFS文件系统特点NTFS支持更大的分区NTFS是一个可恢复的文件系统NTFS支持对分区、文件夹和文件的压缩NTFS能够更加有效地管理磁盘空间可以为共享资源、文件夹以及文件设置访问许可权限NTFS文件系统下可以进行磁盘配额管理NTFS一改前边FAT文件系统的管理规则,将整个磁盘分区上每件事物都看作一个文件,而文件的相关事物又视为一个属性(比如数据属性)。统一按文件方式对磁盘上的一切事务进行管理,使得文件系统数据定位和维护变得很容易。甚至是原FAT系统是承担启动功能的DBR,都成为了Boot文件的一个部分。这些文件在磁盘中的位置相对比较灵活,在对文件进行读写的过程中,当发现磁盘某个扇区有缺陷时,能及时更改存放位置,而不像FAT文件系统那样等磁盘出现坏道以后,文件数据已经丢失。这对文件的安全性有很大的提高。需要说明的是:①图5-1中的结构只是NTFS文件系统的示意图,并不完全成比例。②元文件在图中只体现了一部分,没有画完整,并且除了$BOOT文件之外,其它元文件的位置不是固定的,包括$MFT文件也可以在$MFTMirr文件之后。③在NTFS文件系统所在分区的最后一个扇区是DBR的备份,但该扇区并不属于NTFS文件系统。字节偏移(字节)长度常用值意义FAT参数含义0x0030xEB5290JMP指令0x034NTFS文件系统ID0x0B20x0002每扇区字节数0x0D10x08每簇扇区数0x0E20x0000保留扇区第一个FAT开始之前的保留扇区数(ReservedSector)0x1030x000000总为010:FAT数(NumberofFAT)11-12:根目录项数(RootEntries)0x1320x0000NTFS未使用,为0小扇区数(SmallSector)0x1510xF8介质描述0x1620x0000总为0每FAT扇区数(SectorsPerFAT)0x1820x00每磁道扇区数0x20xFF00磁头数0x40x000000隐含扇区分区的引导扇区之前的扇区数0x2040x00000000NTFS未使用,为0总扇区数(LargeSector)0x2440x80008000物理驱动器号(PhysicalDriveNumber)物理驱动器号(PhysicalDriveNumber)/FAT扇区数表5-1NTFS卷的BPB参数含义在NTFS文件系统的元文件中,主文件表($MFT)是一个非常重要的元文件,它由文件记录构成,每个文件记录占用2个扇区。NTFS分区中的每个文件都有一个文件记录,包括元文件本身,主文件表中前16个文件记录是元文件的记录。NTFS文件系统通过$MFT来确定文件在磁盘上的位置并且记录文件的所有属性,系统访问任何文件都必须先访问$MFT。可以认为,MFT承担了FAT文件文件系统中,进行数据组织管理的FAT、FDT所具有的职能,且不仅于此。由于$MFT文件非常重要,为了确保文件系统结构的可靠性,系统为它准备了一个镜像文件($MftMirr),也就是$MFT中的第2个记录。不过这并不是$MFT的完整镜像,而是一个小部分镜像,一般只镜像$MFT中的前四个文件记录。MFT以文件记录来实现对文件的管理,每个文件记录的大小固定为1KB,也就是占用两个扇区,而不管簇的大小是多少。文件记录在MFT中物理上是连续的,从0开始依次按顺序编号。文件记录由两部分构成:一部分是文件记录头,另一部分是属性列表,其结构见表5-2。图5-3是我们通过另一个很有效的工具DiskExplorerforNTFS所看到的某NTFS卷中$MFT文件记录的构成:文件记录头记录文件的一些最基本的信息,其长度和具体偏移位置的数据含义是不变的。其数据结构如如表5-3所示。图5-4是通过WINHEX的NTFS文件记录模板看到的某NTFS卷上的$MFT这个文件的文件头所表示的相关信息。通过14-15这两个字节的大小(0x38),我们知道,该NTFS卷是WindowsXP下产生的,作为MFT中的第一个文件记录项,2C-2F处所记录的文件记录号为0。通过文件记录项的总体结构,我们知道每个文件都有多个不同的文件属性构成。NTFS文件系统中,所有与文件相关的数据均被认为是属性,包括文件的内容。文件记录是一个与文件相对应的文件属性数据库,它记录了文件数据的所有属性。每个文件记录中都有多个属性,它们相对独立,有各自的类型和名称。从一个属性的偏移00H~03H的4个字节,为该属性的类型标志,不同的属性其结构和含义各不相同。WindowsNT+文件系统中,所有文件记录的属性均使用在元数据文件$AttrDef(文件属性列表)中所预定义的文件属性,具体属性类型及其含义见表5-4。在上表所罗列的各种属性中,由于它们所承担的功能不同,里边的内容不同,故内部结构也是不同的的。但每个文件属性都的一个共性:那就是都由一个“属性头”和相应的“属性值”构成。(1)常驻属性与非常驻属性(2)属性头每一个属性都有一个属性头,其包含了一些该属性的重要信息,如属性类型、属性大小、名字及是否为常驻属性等。一个属性根据其是否常驻和是否有属性名,可以排列组合成四种不同的情况,分别为常驻没有属性名、常驻有属性名、非常驻没有属性名、非常驻有属性名,下面分别介绍它们的属性头结构。(3)属性值属性头之后就是属性值,不同文件属性的属性值内容有不同的格式和大小,下面仅对与数据恢复相关的标准信息、文件名属性、数据属性进行介绍。①标准信息属性标准信息属性($Standard_Information)的类型值为0x10,总是常驻。它所说明的是一个文件或者目录的基本元数据、如时间,所有权、安全信息等内容,所有文件都会存在一个标准属性,其各字节的含义见表5-9。②文件名属性文件名属性($File_Name)的类型值为0x30,总是常驻。任何文件和目录在它的MFT项中,都至少有一个文件名属性。该属性用于存储文件名,也包括了文件大小和时间信息。它所提供的另一个重要信息是,父目录索引中的文件名属性参考号,便于文件在MFT中存储路径的准确定位。文件名属性各字节的含义见表5-10。③常驻数据属性数据属性($Data)的类型值为0x80。每个文件都有数据属性,这个属性容纳的是文件的内容。数据属性的大小没有限制,可以为0字节。每个文件都有一个没有文件名的数据属性。对于一些小的文件,如果文件内容能在MFT中存放,那这一属性会成为常驻属性。常驻80H属性的结构见表5-11。④非常驻数据属性非常驻的数据属性,其MFT项中的属性内容是一个簇流的列表,由簇流列表说明它真正的数据属性内容存储的位置。簇流列表由一个或多个簇流项组成。最后一个簇流项结束处的下一个字节被设置为0x00,表示已没有簇流项。第一个簇流项描述第一个簇流的位置偏移时是相对于文件系统的起始处而言,自第一个簇流项之后的所有后续簇流项所描述的后续簇流位置信息,均是相对于前一个簇流的起始位置而言的。5.5.1文件删除前的底层分析现在以NTFS分区中的两个文件“huayi.jp”和“sjhf.txt”为例,讲解文件的各部分结构,文件如图5-11所示。Huayi.jpg是一个图片文件,打开该文件其画面如图5-12所示。该文件在NTFS文件系统中由文件记录进行管理,文件记录占用2个扇区,其文件记录的第一个扇区的内容如图5-13所示。从80H属性可以看出,偏移08H的值为“01”说明该属性是非常驻属性,偏移30H~37H的值为“2D9F000000000000”说明文件大小为9F2DH(十进制值为40749)字节;偏移40H~47H的值为“3150C3ED02000100”说明该文件的RunList中只有一个数据流,所以文件是连续存储的,数据的开始簇号为02ED50H(十进制值为191939),用WinHex跳转到191939号簇,其内容如图5-16所示。从191939号簇所在扇区开始,往后连续的40749字节(“huayi.jpg”文件的大小),就是这个文件的所有数据。现在再以NTFS分区中的另一文件“sjhf.txt”为例,讲解文件的各部分结构。这是一个文本文件,打开后内容如图5-17所示。文件的数据是由80H属性管理的,文件“sjhf.txt”的80H属性如图5-19所示。从80H属性中可以看出文件“sjhf.txt”的属性体是常驻的,属性体开始于该属性的18H偏移处,属性体的大小为0120H(十进制值为288)字节,“FFFFFFFF”为文件记录的结束标志,在此也是80H属性的结束标志。因为80H属性为数据属性,所以其属性体就是这个文件的数据。注意:文件“sjhf.txt”的数据直接放在80H属性体中,而文件“huayi.jpg”的数据则放在一个RunList数据流当中。为了了解文件删除后恢复的方法,先从文件系统级别了解一下文件删除时在NTFS文件系统中发生的变化。首先讲文件“huayi.jpg”彻底删除,删除后其文件记录如图5-21所示。从图5-21中可以看出文件“huayi.jpg”的文件记录的状态字节已经由0100(文件在使用中)变为0000(文件被删除),而30H属性中的文件名、80H属性中的文件大小、RunList等重要信息没有任何变化。根据RunList中的信息,跳转到文件“huayi.jpg”的开始位置191939号簇,其内容如图5-22所示。从图5-22中可以看出,“huayi.jpg”文件的数据区的内容没有任何变化。下面我们再来看看文件“sjhf.txt”的删除过程。首先将文件“huayi.jpg”彻底删除。删除后其文件记录如图5-23和图5-24所示。从图5-23和图5-24中可以看出文件“sjhf.txt”的文件记录的状态字节已经由0100(文件在使用中)变为0000(文件被删除),而30H属性中的文件名、80H属性中的属性头、属性体等重要信息没有任何变化。首先,新建一个文本文档,内容为huayi.jpg,然后将该文件另存为Unicode编码类型的文件,文件名任意。具体如图5-25所示。用Winhex打开“新建文本文档.txt”,得到待恢复文件名的十六进制。如图5-26所示。注意:偏移00H~01H这两个字节(值为FFFE)不是文件名的十六进制数据而是固定的标识信息,具体的文件名十六进制为:680075006100790069002E006A0070006700。然后,在WinHex中从分区开始位置往后搜索十六进制“680075006100790069002E006A0070006700”,直至找到待恢复文件的文件记录。识别搜索结果是否是待恢复文件的文件记录主要根据文件记录的标识“46494C45”和文件记录的30H属性,也就是待恢复的文件的文件名文件,具体如图5-27和图5-28所示。最后,根据文件记录的80H属性定位文件数据区,如图5-28所示,文件“huayi.jpg”的起始簇号为191939,文件大小为40749个字节。将文件数据区的内容全部选中,并另存为一个新的文件,如图5-29所示。将该文件的数据区中这些十六进制值保存到D盘根目录下,并命名为“123.jpg”。保存后在D盘根目录下可以看到“123.jpg”文件,如图5-30所示。很明显,这个文件的画面就是被删除的“huayi.jpg”文件。以上的过程就是80H属性为非常驻的文件被删除后的恢复过程。80H属性为常驻的文件(例如“sjhf.txt”文件)删除后的恢复更为简单,我们只需要在第二步找到文件的文件记录,然后把80H属性的属性体选中复制到一个新的文件即可。5.6.1格式化的底层分析格式化就是给分区创建一个文件系统。首先看一个有数据的NTFS分区,然后将其格式化,并分析格式化后原来数据的改变。图5-32是一个NTFS分区“I”中的数据,分区内有一个文件夹“123”和一个文件“数据恢复透明解析.pdf”。文件夹“123”下有三个jpg文件,如图5-33所示。
本文标题:第5章 NTFS文件系统数据恢复
链接地址:https://www.777doc.com/doc-3972442 .html