NATS - 结构及文件查找提取 - 方法1
<!-- [toc] -->
第一步
打开数据解释器
开始分析 NTF第一个扇区 就是他的DBR扇区
DBR扇区分析 0号扇区
- DBR分区标识
EB 52 90
- 标识往后八个字节 是系统标识
0B 0C
表示一个扇区的字节大小 512字节0D
一个字节 是簇大小 每簇要占 8 个扇区
1C 1F
四个字节 表示整个磁盘隐藏扇区数 2048
28 2F
64位 表示NTF整个分区大小 有多少扇区 分区大小 134,211,583- 这个值不包括DBR的备份扇区(如果需要包括 将值加一即可)
- 数据解释器需要勾选显示64Bit的字节
30 37
八个字节 表示MFT的起始簇号 786,432- 如果需要跳转簇,需将簇号
*8
跳转扇区大小即可 786432*8=6291456
在6291456号扇区
- 如果需要跳转簇,需将簇号
38 3F
八个字节 表示MFTMIRO(MFT备份)的起始簇号- 相对DBR跳16个扇区即可
MFT主文件记录表分析
跳转
- 十进制
- 从DBR当前位置
- 跳转6291456个扇区大小
- MFT区标识 FILE
46 49 4C 45
- 三部分:文件记录头、 属性、 结束标志
FF FF FF FF
每个文件 都有文件记录项,文件记录项占用2个扇区
- 如果未占满 0填充 占满
- 2个扇区如果不够扩展新的记录项
2C 2F
文件记录头序号- 0 - 15个记录项 是系统占用的属性原文件
文件记录头
- 起始标志
46 49 4C 45
16 17
代表文件状态 正在使用、删除····- 一共4种状态
- 00 文件被删除
- 01 文件正在使用
- 02 文件夹被删除
- 03 文件夹正在使用
14 15
表示文件记录头占用大小38 00
即为3行多八个字节
2C 2F
四个字节表示文件记录项的序号30 31
更新序列号 校验 应与记录项最后两个字节一致
- 起始标志
属性头
属性体的开头就是属性体的属性名
10H
属性:标准信息30H
属性:文件名80H
属性:数据90H
属性:索引根A0H
属性:索引分配
属性项的大小
- 偏移: 从属性头向后偏移4个字节
60H
代表6行 、16 * 6
行 个字节
常驻、非常驻性质
- 偏移: 从属性头向后偏移8个字节
- 常驻属性:
00H
- 非常驻属性:
01H
- 区别:常驻属性就是文件内容是比较小的,能在两个扇区1KB中存储掉,就是常驻属性,非常驻属性,就是文件内容过大,1KB扇区记录不了,需要通过簇流 文件流来索引。
属性体大小:常驻
- 偏移:从属性头向后偏移16字节 、 一行
48H
代表4行多8个字节 、16 * 8 + 8
个字节
属性头大小:常驻
- 偏移:从属性体大小向后偏移4字节
18H
代表1行多8个字节 、16 * 1 + 8
个字节
非常驻属性
- 属性头、 大小偏移和常驻属性找法一致
簇流开始位置
- 偏移:从属性头向后偏移2行 28个字节
40H
表示,从属性头向后4行之后 是数据流的信息
- 簇流数据:
31 40 00 00 0C 00 00 00
簇流第一个字节:压缩字节
31H
地位1 高位3- 1表示压缩字节后面的一个字节
40H
簇流大小 占64个簇 - 3表示跟在簇流大小后面的3个字节 表示簇流的起始簇号786,432号簇 = MFT起始簇号
簇流可能出现多个簇流数据!
- 如:
31 01 FF FF 0B 31 01 26 00 F4
31H
代表簇流的大小和位置,往后还有一个31H
代表另一个簇流的大小位置第二个簇的起始簇流
-786,394
- 负数是一个相对的概念
- 相对于第一个簇的起始簇流位置(相对位置)
- 将一簇流起始 减去 二簇流起始位置得到的37(绝对位置)即为2号簇的簇流起始位置
- 需要将一号簇和二号簇的数据拼接起来
- 注意:3个字节 需要打开数据解释器的24Bit显示
- 如:
查找提取文件
- 直接搜索检索文件名
查找文本
- 搜索框填写需要搜索的文件名加后缀
- 匹配大小写无所谓
- 下面的选择框需要改成“Unicode”
- 等待搜索结果
- 找到扇区开头为
46 49 4C 45
开头的,即为正确的文件项
- 文件名在
30H
属性中 内容在
80H
属性中- 常驻:
- 如果80属性是常驻属性,那么数据区的大小就是常驻属性向后偏移1个字节是属性头的大小 剩下的内容 即为数据的行数 完整内容,框选右键至新文件即可。
- 非常驻:
- 找到属性的datas run区域,开始分析:
- 第一个字节
21H
- 1表示压缩字节后面的一个字节
01H
簇流大小 占1个簇 2表示簇流大小后面2字节为簇流的起始簇号
6393 * 8 = 51144扇区
- 从DBR跳转扇区 到文件数据区
提取文件时,应该提取文件的实际大小
- 实际大小:
- 在数据流信息的前面8个字节