数据恢复笔记——NTFS文件系统
Winhex数据恢复(NTFS文件系统)
DBR的数据结构
偏移 | 描述 |
---|---|
00-02 | 跳转指令 |
0D-0D | 每簇扇区数 |
28-2F | 文件系统扇区总数 |
30-37 | (MFT)主文件表起使簇号 |
跳转指令对应数据可以找到NTFS的DBR。
NTFS文件系统的元文件
在格式化为NTFS文件后,系统对分区写入的文件就是元文件。
其中根据起使簇号,先跳转到MFT。其中2C-2F位置为对应序号,文件名也可以看出来。用鼠标向下滚过一个扇区可以看到2C-2F位置对应序号1的$MFTMirr文件名。
主文件表MFT
- 以明文“FILE”开头。实验中对应46 49 4C 45。
- 每个MFT项都占用1024个字节,即两个扇区。
- 每个MFT项占用的两个扇区,最后两个字节为一个修正值,这个修正值和MFT项中的更新序列号相同。如果系统发现不同,就会认为此MFT项错误,会把开头明文改为“BAAD”。
MFT属性类型
属性类型值(16进制) | 描述 |
---|---|
10 | 标准信息 |
20 | 属性列表 |
30 | 文件名属性 |
40 | 对象ID |
50 | 安全描述符 |
60 | 卷名 |
70 | 卷信息 |
80 | 文件数据内容 |
90 | 索引根属性 |
A0 | 索引分配树节点 |
B0 | $MFT文件和索引的位图 |
10h属性体数据结构
30h属性体的数据结构
其中在实验中winhex显示的38-3B
为“06 00 00 00”.可以分为:2和4,表明文件为隐藏的系统文件。
60h属性体的数据结构
60属性是卷名属性,用以记录卷名。在属性体中记录的为Unicode代码。
70h属性体的数据结构
70属性是卷信息属性,用以描述卷的版本、状态等信息。
80h属性体的数据结构
- 80属性是数据属性
- 常驻80h属性的属性体是数据内容
- 非常驻80h属性的属性体是簇流运行。
MFT属性中的属性头数据结构
其中MFT属性可以分为两类:常驻属性和非常驻属性。
常驻属性:直接在MFT项中记录属性体。(只能记录少量的数据)
非常驻属性:在MFT之外的地方记录属性体。
常驻属性的数据结构(从属性开始的地方偏移,而不是从头):
偏移字节(16进制) | 描述 |
---|---|
00-03 | 属性类型 |
08-08 | 0:常驻属性。1:非常驻属性 |
10-13 | 属性体字节数。(实验中为“4A 00 00 00”,表示属性体4行在多出半行到A这个位置) |
14-15 | 属性体偏移的字节数 |
非常驻属性的数据结构(从属性开始的地方偏移,而不是从头):
偏移字节(16进制) | 描述 |
---|---|
00-03 | 属性类型 |
08-08 | 0:常驻属性。1:非常驻属性 |
10-17 | 属性体的起始虚拟簇号 |
18-1F | 属性体的结束虚拟簇号 |
20-21 | 簇流运行的偏移地址 |
28-2F | 属性体占用总空间 |
30-37 | 属性体实际占用字节数 |
38-3F | 属性体的初始大小 |
40- | 簇流的记录信息 |
MFT的簇流运行数据结构
32 => 0011 0010
- 第一个数值的低4位为“2”:对应后面两个数值
- 第一个数值的高4位为“3”:簇流大小后面的3个数值
- 前两个数值“C0 02”:簇流的大小
- 后面三个数值“00 00 0C”:簇流起使簇
手工提取文件数据
- 先在DBR,根据“30-37”对应(MFT)主文件表起使簇号,点击跳转到MFT。(或点击$MFT文件)
- 打开LoveString软件,将文件名输入进去。复制Unicode编码方式的编码。
- 点击“查找十六进制数值”,将刚刚的代码复制进去,下面的勾都不勾。点击查找。
- 会在“30”属性中查找到对应的文件名。
- 在“80”属性中查找属性体部分,按照上面簇流运行的数据结构,查找“簇流大小”、“簇流起使簇”
- 转跳到“簇流起使簇”,右键“选块起使位置”。再跳转到“簇流起使簇”+“簇流大小”位置,右键“选块尾部”。
- 选中之后右键,“编辑”→“复制选块”→“至新文件”。重命名为文件正确格式。
手工提取片段文件数据
如果后面是00,那么那么这个簇流运行结束,否则还有簇流运行。
下个簇流的起始簇号是相对于这个簇流的起始簇号。
- 按照上面一般文件提取顺序,将第一部分文件提取出来,命名为“1”
- 看到后面不为
00
重复以上操作,将第二部分文件提取出来,命名为“2”。7.(注意:第二个起始簇号并不是上面的标号,第二个簇号是相对于第一个簇号来说,第二个簇号=第一个簇号+标号) - 提取出两个选块后,“工具”→“文件工具”→“文件合并”。
- 先保存一个后缀名和原文件相同的文件,然后按照顺序进行附加。双击即可。
常驻80h属性
直接创建文件的时候文件内容少点就行,属性体中可以放的下就行。
选中其属性体,右键→“编辑”→“复制选块”→“至新文件”,即可复制文件。
B0属性体的数据结构
B0属性为位图属性,描述索引或MFT的分配情况。
比如:$MFT文件的MFT项中位图存储位置
“31 01 FF FF 03”其中
03 FF FF:为“262143”。代表此簇流起始于262143簇
01:代表大小一个簇。