天易loveWord文档下载推荐.docx

上传人:b****6 文档编号:15912738 上传时间:2022-11-17 格式:DOCX 页数:12 大小:845.99KB
下载 相关 举报
天易loveWord文档下载推荐.docx_第1页
第1页 / 共12页
天易loveWord文档下载推荐.docx_第2页
第2页 / 共12页
天易loveWord文档下载推荐.docx_第3页
第3页 / 共12页
天易loveWord文档下载推荐.docx_第4页
第4页 / 共12页
天易loveWord文档下载推荐.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

天易loveWord文档下载推荐.docx

《天易loveWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《天易loveWord文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。

天易loveWord文档下载推荐.docx

以往仅仅通过在$MFT内部搜索指定文件的文件记录,而后分析其中的$DATA属性的办法,这种方法涉及到的NTFS知识点还不是很多。

首先在WinHex中打开文件所在的逻辑磁盘,如图所示。

图x-x 

选择磁盘分区

打开后找出以下几处数据,如图所示。

分区开始处的数据

$200*$08=$1000=4096字节/簇(10进制)

$000C0000=786432簇

这样$MFT的位置就确定了。

转到$MFT

根目录的文件记录

我们知道根目录是第5#记录,且每个文件记录占用2个扇区,所以根目录位于:

786432*8+5*2=6291466扇区

图中的字节03表示根目录的命名符合Win32&

DOS规则,仅一个unicode字符,用实心圆点表示。

由于笔者D盘的文件及目录较多,因此存在A0属性,这个索引分配属性可以帮助我们找到所需的文件记录,看一下这个A0属性,如图:

根目录的$A0属性

 

红色圈内的就是根目录的$A0属性,长$80字节,$01表示非常驻属性,$4是(Datarun)的属性内偏移。

内部圈中就是重要的Datarun数据。

1#$0088B903=8960259簇

$A7F65B因为它的最高二进制位为1,代表一个负数,即-($1000000-$A7F65B)=-5769637(10进制)

所以2#8960259-5769637=3190622簇

同理$FD22也代表一个负数,即-($10000-$FD22)=-734(10进制)

所以3#3190622-734=3189888簇

依次类推,所有簇分布如下:

1#8960259簇

2#3190622簇

3#3189888簇

4#3822487簇

5#10704273-10704274(2簇)

6#10693948簇

7#10683941簇

8#13267096簇

9#15336964簇

10#13125728簇

在这些簇中存放着根目录下的文件、目录的相关索引,现在要做的就是到这些簇中找“手工恢复实例”这个目录的索引项,纯体力活。

“手工恢复实例”对应的Unicode编码为:

4B62E55D62600D599E5B8B4F

这里就省去查找过程,我们直接跳转到3#3189888簇。

如图所示。

“手工恢复实例”目录的索引项

图中的字节05表示父目录的文件记录位置为5#;

字节$5C表示自身的文件记录号;

圈中的字节00000010($10000000)表示该索引为目录索引。

我们知道根目录是第5#记录,显然我们已经找到了“手工恢复实例”这个文件夹的目录索引项,而且它的文件记录号是5C#。

所以它位于:

786432*8+92*2=6291640扇区,跳转过去确实是“手工恢复实例”这个文件夹的文件记录,文件记录模板如图所示。

该目录只有$INDEX_ROOT($90)属性,没有$INDEX_ALLOCATION($A0)属性,显然是个小文件夹,事实也确实如此。

$INDEX_ROOT($90)属性总是常驻属性,它作为一棵B+tree的根节点。

该根节点中可能存放多个索引项,数目依文件记录剩余空间大小而定;

这些索引项可以提高NTFS系统访问文件、文件夹的效率,减少磁头读写硬盘的次数,加快定位文件记录的速度。

简单提一下,通常我们会发现$INDEX_ROOT($90)属性这个B+tree的根节点中并没有索引项,难道真就没有索引项了吗?

其实不然,由于文件记录的空间有限,当B+tree的根节点无法容纳所有的索引项时,NTFS系统会把它们放到B+tree的子节点中去,仅在根节点中留下这个特殊子节点的信息,方便查询。

在这个特殊的子节点中,存放着特殊的索引项;

这些索引项都是B+tree在节点分裂过程中产生的,它们携带着特殊的信息,把它们集中在一块,方便NTFS系统的查询和定位操作。

以下示意图会帮助你加深理解。

B+tree在NTFS中的运用

$INDEX_ALLOCATION($A0)属性即索引分配缓冲区属性,存放着B+tree所有子节点的信息,它总是非常驻属性。

“手工恢复实例”的文件记录模板

“手工恢复实例”的$90属性

USA数组

由于$90属性正好包含扇区尾部的USN,所以我们要到USA数组中把原来的数据找回来。

文件记录头部的30字节指示了USA数组在文件记录内部的偏移,而紧跟的03字节表示USA数组的大小(以word大小为单位),这里是3表示USA数组有3个WORD。

除去第一个USN(1100)和尾部结束标志(0000),实际的有效数据只有一个word(3456)。

我们把word(3456)替换掉$90属性中的USN(1100),得到一串Unicode编码:

“4696B65B34562E00720061007200”,这正是字符串“陆家嘴.rar”对应的16进制Unicode编码“4696B65B34562E00720061007200”。

圈中的字节B37A0200($27AB3)为“陆家嘴.rar”文件的实际大小162483字节;

字节20表示这是一个文件索引项;

字节5c是父目录的文件记录号;

第一处划线的00是常驻属性标志;

我们需要的是字节63(16进制),它就是“陆家嘴.rar”这个压缩文件的文件记录号。

“陆家嘴.rar”的文件记录模板

它位于:

786432*8+99*2=6291654扇区,跳转过去取得文件记录模板如图所示。

“陆家嘴.rar”的文件记录模板

提取出datarun字节:

“3101F0013041278C809700”计算如下:

1#$3001F0=3146224簇

因为$0097808C最高二进制位为0,代表一个正数,即9928844(10进制)

所以2#3146224+9928844=13075068簇

综上:

1#3146224簇

2#13075068-13075106(39簇)

刚才得到文件的实际大小为:

162483字节,除去1#占用4096,那么2#占用了158387字节。

可以算出2#碎片第39簇占用的有效字节数:

158387-38*4096=2739字节。

现在就可以直接提取这两部分的数据,再组合成一个文件即可。

具体操作可以这样:

先新建一个大小为162483字节的空白文件;

新建一个空白文件

接着跳转到1#3146224簇,复制出该簇数据共4096字节写入空白文件;

写入空白文件

选择剪贴板格式

继续复制2#13075068-13075106(39簇)处的数据,注意最后一簇仅有2739字节的有效数据,复制出来后,追加到刚才写入数据的后面;

最后保存为“data.rar”,并放置到到其他分区,这样可以确保不覆盖掉当前卷中的其他有用数据。

提取出的压缩文件数据完好,包含图片可以正常显示。

提取出的rar文件

图片正常显示

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1