深究NTFS文件系统

NTFS文件系统比FAT32复杂多了,小明我上课听得一头雾水。
接下来来详细介绍NTFS文件系统
NTFS文件系统原名为New Tecnology File System(这个称呼有点直接(・∀・)),是现在绝大多数电脑磁盘分区使用的文件系统
其具有以下特点:
安全性较高,NTFS文件系统有日志容错功能,所以安全性比FAT文件系统高。
–NTFS文件系统可以给文件设置访问权限
–文件压缩和文件加密EFS加密右键高级设置)
磁盘配额
–NTFS文件系统支持大分区(在MBR磁盘最大支持2T ,在GPT磁盘支持的分区更大)
–NTFS文件系统支持大文件大于4G
–NTFS下可创建超过2TB的磁盘(注:硬盘可创建超过其本身大小的虚拟磁盘,但是需要选择动态扩展而不是固定大小。其文件类型是vhdx。)

接下来演示以下NTFS文件的压缩功能(文件系统本身支持的,不借助压缩软件)
右键属性,点击常规中的高级,勾上压缩内容以便节省磁盘空间

点击确定即可

可以发现文件占用空间变小了,且其属性图标发生了变化,多了两个小箭头
文件图标均发生变化,NTFS压缩是透明的,即外部程序可以直接访问压缩后的文件,而其他压缩软件,是不透明的,外部程序无法直接访问,需要解压后才可以访问,但是NTFS压缩相对来说比压缩软件压缩得比较

NTFS的结构类型

结构类型有两种

NTFS结构类型1
NTFS结构类型2

可以注意到分区末尾均有备份DBR

NTFS的DBR扇区

查找NTFS DBR快速方法:十六进制查找EB5290

NTFS的DBR扇区

DBR的数据结构

介绍一下一些特殊概念:
1)15是代表介质描述符F8代表硬盘介质
2)1C-1F代表隐含扇区数,是针对于主分区而言的隐含扇区,隐含扇区是NTFS分区前的物理扇区数,如果NTFS分区是在磁盘内,则和该扇区在磁盘位置数值一样,如NTFS分区是在扩展分区内,则是表示在该分区内相对偏移扇区。
3)28-2F文件系统扇区总数,其是8个字节,要用数据解析器的64bit位查看,其与NTFS实际扇区数可能有出入(NTFS的一种特点),但是硬盘的DPT(分区表项)写的分区总扇区数与其相同
4)30-37表示MFT起始簇号,MFT是NTFS的第0个元文件,38-3F表示MFTMirr的起始簇号,它是NFTS的第1个元文件,是MFT的镜像,紧跟在MFT后面,40是MFT项的大小,即其所占用的空间,一般是2个扇区(计算方法,选中40(数值为0xF6)查看数据解释器8 bit(±)为-10,利用公式个扇区)
5)44表示每个索引块大小簇数****(待补充)

NTFS文件系统有16个元文件

这些元文件名都是以$开头的


值得注意的是,元文件文件名和序号是严格对应,在NTFS分区内按序号排列。
我们可以通过DBR扇区的$MFT起始簇号或者直接点击$MFT跳转到MFT元文件

可以看到$MFT字样,向下多次滑可以依次看到
$MFTMir、$LogFile、$Volume(当我们卷标显示时,要用unicode编码(点击Winhex查看字符集选择unicode可以看到“新加卷”字样,因为NTFS是用Unicode编码,FAT32是用ASCII编码)、$AttrDef等,但是$Root是不可见的

首先介绍MFT表

MFT表特点

• 以明文“FILE”开头
• 每个MFT项都占用1024字节,即两个扇区
• NTFS文件系统中的所有文件,都有一个MFT项记录相应的数据
• 每个MFT项占用的两个扇区,最后两个字节是一个修正值,这个修正值和MFT项中的更新序列号相同,如果系统发现不同,就会认为这个MFT项错误,会把开头标志明文“FILE”改成“BAAD”

可以发现它是有颜色区分的!不同颜色块代表不同的属性

NTFS主文件分配表(MFT头)

 MFT头的数据结构

1)这边重点提一下04-05 06-07更新序列号的偏移和个数,一般来说,04-05是30 00(其实是0x0030),则由偏移找到MFT头的30位置,看到04 00,这个就是更新序列号,06-07是指更新序列号的个数,一个MFT表一般有3个更新序列号,分别位于30、第一个扇区末尾,第二个扇区末尾,如下图
如果系统发现这几个更新序列号不同,就会认为这个MFT项错误,会把开头标志明文“FILE”改成“BAAD”
2)14-15代表第一个属性的偏移地址,图上写的是0x0038,转向38块,可以发现这是10属性的开头。
3)16-17代表着文件或目录的状态00:文件被删除,01:文件正常,02:目录被删除,03:目录正常
4)18-1B1C-1F分别代表MFT项的逻辑长度(有效长度 )物理长度(占用长度),单位是字节,可以看到图中物理长度是0x00 00 04 00字节=1024字节=2个扇区。
5)2C-2F代表MFT项的索引号****(待补充)

MFT属性

每个MFT的属性都可以分成两部分:属性头属性体
MFT属性的分类
 •常驻属性:直接在MFT项中记录属性体,例如10 30
  •优点:直接在MFT项中记录属体,访问速度
  •缺点:只能记录少量的数据
 •非常驻属性:在MFT之外的区域记录属性体,例如80
  •优点:用簇流记录文件存储的数据区域,可以记录很的数据
  •缺点:访问速度较

属性类型

一个属性分为属性头属性体用同一种颜色的浅深区分

常驻属性的数据结构

常驻属性的属性头

常驻属性的属性头


其中注意以下几点:
1)00-03是指属性类型
2)04-07是指整个属性的总字节数
3)08代表属性类型0常驻 or 1非常驻
4)10-13代表属性体的字节数(与实际颜色块字节数可能不同,因为颜色块是8字节为一块划分的)
5)14-15代表属性体偏移的字节数,是相对于属性头开头位置的偏移量,亦即代表属性头的字节数

MFT中10属性体

10属性
10属性体

MFT中30属性体

MFT中30属性,最小为\x68(104)字节,最大为\x268(616)字节,可容纳255Unicode字符的文件名

30属性
30属性体

其中
38-3B:类型依照加法原则
40:文件名的长度为一个字节,因此文件名最大长度为FFh=255字节
41:文件命名类型 有 00 01 02 03

非常驻属性的数据结构


其中28-2F属性体占用总空字节数),亦即数据总大小

80属性

80属性是存储文件数据内容
80属性有两种类型,一种是常驻80属性,一种是非常驻80属性
常驻属性头比较小,体比较大;
非常驻属性头比较大,体比较小

这在winhex很容易辨认
当文件大小不超过1024字节(一个扇区)是在一个簇里存,此时80属性为常驻属性;
当文件大于1024字节会变成簇流(非常驻)存储方式。
常驻80属性的属性体就是数据内容,可用winhex直接复制到新文件显示。
非常驻的属性体是簇流存储地址

LCN(logical cluster number):整个文件卷的相对位置,单位(簇)。
VCN(virtual cluster number):文件内部的相对位置,单位(簇)。

每个运行列表中第一个字节的低4位表示运行簇大小(filesize)的len,高4位表示起始簇(start)的len。如果一个运行列表后面的第一个字节是00,说明运行列表结束,后面的数值暂时不用管;如果不是00,则是下一个运行列表开始。

①常驻
image

②非常驻-->一个运行列表
非常驻-->一个运行列表

0x00~0x3F 是属性头;运行列表在橘黄色框中,0x40开始,可以得到运行列表 33 40 BC 00 00 00 0C。
分析如下:
首先0x33,低4位是3,表示紧随其后的3Byte 0xBC40作为运行簇大小(簇个数),即文件所占总大小;高4位是3,表示簇大小之后的3个Byte 0x0C0000 是起始簇,即文件起始,这里是说的是LCN。
划重点!!!
通过该处簇总个数与28-2F的属性体占用总空间大小,可推算出一个簇的大小
公式为
NTFS中一个簇包含的扇区=
(数据总大小(字节)/512)/簇总个数

③非常驻-->多个运行列表
非常驻-->多个运行列表

分析如下:
第一个运行列表,首先是0x31,低4位是1,表示紧接着的1Byte(03)是运行簇大小;高4位是3,表示紧接着3Byte(65 9A 00)是起始簇,这里说的是LCN;
第二个运行列表,首先是0x11,低4位是1,表示紧接着的1Byte(01)是运行簇大小;高4位是1,表示紧接着3Byte(13)是起始簇,这里说的是VCN。
注意,只有第一个运行列表的起始簇说的是LCN,从第二个运行列表开始每个运行列表的起始簇都说的是VCN。想要得到LCN需要按下面的公式计算:
第n个运行列表的LCN = 第一个运行列表的起始簇(LCN) + 第二个运行列表的起始簇(VCN) +...+第n个运行列表的起始簇(VCN)

部分图片源自https://www.jianshu.com/p/8471b7f4152a,侵删

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容

  • 一、Ntfs文件系统在磁盘上的分布 一个ntfs文件系统由引导扇区、MFT(包含MFT元数据)和数据区组成。NTF...
    嘿_lele阅读 14,118评论 0 6
  • NTFS设计目标和特性 1. NTFS设计目标 NTFS设计目标就包含作为一个企业级文件系统所需要的各种特性: 1...
    江南野栀子阅读 1,644评论 0 0
  • NTFS文件系统分区引导信息 任何磁盘系统的挂载都要先读取分区最开始的那些信息,磁盘内容本质上就是比特序列,肯定要...
    阿棍儿_Leon阅读 786评论 0 50
  • 1、文件和文件系统 文件管理:把所管理的程序和数据组织成一系列的文件,并能进行合理的存储、使用等操作。 1 )基本...
    盆栽木只阅读 1,309评论 0 0
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,365评论 0 5