winhex怎么跳转簇号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了winhex怎么跳转簇号相关的知识,希望对你有一定的参考价值。

参考技术A 1、MFT:磁盘上的所有数据都是以文件的形式存储,其中包括元文件。 每个文件都有一个或多个文件记录,每个文件记录占用两个扇区 $MFT元文件就是专门记录每个文件的文件记录。 其中第五个目录是根目录的文件记录。 第一个目录是MFT本身的文件记录。

2、簇号: NTFS文件系统使用逻辑簇号(LCN)和虚拟簇号(VCN)对分区进行管理。 逻辑簇号:既对分区内的第一个簇到最后一个簇进行编号,NTFS使用逻辑簇号对簇进行定位。 虚拟簇号:既将文件所占用的簇从开头到尾进行编号的,虚拟簇号不要求在物理上是连续的。

3、索引项:每个文件在目录中有其索引项。结构如图:其中文件的MFT索引号(3个字节)是我们需要的,是虚拟索引号,是相对的。

4、属性

文件记录由两部分构成,一部分是文件记录头,另一部分是属性列表

10H类型属性它包含文件的一些基本信息

20H类型属性既属性列表,当一个文件需要好几个文件记录时,才会用到20H属性。

30H类型属,该属性用于存储文件名 ,它总是常驻属性。

80H属性 80H属性是文件数据属性,该属性容纳着文件的内容

5、runlist(在80或者A0属性里面可以找到):

当属性不能存放完数据,系统就会在NTFS数据区域开辟一个空间存放,这个区域是以簇为单位的。

Run List就是记录这个数据区域的起始簇号和大小

举个栗子 31 0C 2C 22 45 其中3表示有3个字节表示这个数据流的开始簇号即 2C 22 45 1表示有1个字节描述这个数据流的大小即0C

当有多个Run List 的时候,都需要计算,并且相加,得到多个数据流。

二、具体实现(为了计算方便(懒),举例本机E盘上的一个140M左右的文件)

(1)选取的是文件12345aa.pdf,大小约140M:

(2)首先借助winhex工具打开可以直接得到其簇号,并且知道它直接位于E盘根目录之下(作为我们定位的验证
(3)大概的流程:

(MFT的结构一般第五个目录就是根目录,并且其一个目录一般都是2个扇区即一个字节,MFT逻辑簇号不是连续的,根目录也是,需要runlist来计算出,它到底有几个数据流,数据流的起始位置和大小分别是多少!)

算出MFT中第五个目录即根目录的扇区位置,转到该扇区得到根目录的runlist
计算出根目录所在的扇区,打开根目录,即可以找到我们的文件pdf
根据它在根目录中的数据找到它在MTF中的索引号,得到MTF中的记录
在MTF中找到它真正的数据流,即可以看到真正的文件内容。(因为大于100M,肯定是非常驻)
(4)用winhex打开我们的磁盘E盘(每个偏移的具体含义参见更加详细的博客)

分析boot文件可以在0DH中得到一个簇有8个扇区的大小。

030-037H是MFT的开始簇号0x00 00 00 00 00 0C 00 00

040-043H是每个MFT记录的大小为0x00 00 00 F6个簇

1C-1FH是隐藏扇区(MBR到DBR) 0x 00 00 10 00簇
(5)计算MFT本身的数据流情况

跳转到MFT的第一个扇区即6291456扇区,在80h属性处得到rundate
33 80 D1 00 00 00 0C 起始簇号786432 大小为53632簇 包括214528个目录项

33 0B C8 00 F5 7E 6F 起始簇号786432+(6F 7E F5)即7306997=8093429 大小为51211簇 包括204844个目录项

33 35 92 00 15 62 38 起始簇号 8093429+(38 62 15)即3695125=11788554 大小为 37429簇 包括149716个目录项

(一个簇8个扇区,2个扇区一个目录项,即一个簇4个目录项)
(6)可以计算得到MFT第五个记录(根目录)所在扇区为6291456+1*5*2=6291466 跳到这个扇区 找到其中的索引属性A0x,得到两个run data 41 05 62 C1 81 01 和 41 01

计算的第一个起始簇号为25280866,第二个起始簇号为1
(7)转到扇区25280866*8扇区得到根目录的扇区:利用winhex验证正确
(8)在根目录下找到我们的文件12345aa.pdf 如下(查找文件名)
(9计算出文件的MFT索引号为085EC4,为548548项。
(10)下面有两种方式找到MFT中的目录项:

(1)使用虚拟簇号,打开MFT,计算偏移为217B1000,跳转得到12345aa.pdf的目录

(2)使用逻辑簇号,根据上面分析的,可知MFT分为了3块,

因为548548>214528+204844 个目录项 ,所以我们的文件在第三块MFT表中

其簇号=(548548-214528-204844)/4+11788554(第三块MFT起始簇号)=11820848号

跳转到其簇号得到文件的目录项
(11)读其80H属性得到其run date为43 20 87 00 3C 7A C0 00 数据流起始位置为12614204簇,与我们直接用工具在右侧看到的簇号相同,转到该簇得到文件内容

(12)定位成功,有子文件夹的参考上门步骤重复计算到最后一个子文件夹就可以。

winhex处理磁盘格式化

突然发现WinHex还可以对磁盘格式化,这次网络课让我对这款软件刮目相看。

如何利用winhex处理磁盘来格式化


1、用winhex来回复分区中的数据。打开winhex,然后点击“打开磁盘”,挑选“物理磁盘”中的毛病盘。翻开以后咱们 就可以可能到分区中的信息了。

2、点击右上方的黑色小箭头呈现下拉菜单,可以看到有毛病的 分区和其他正常分区显现是不一样的。毛病分区显现“分区X XXGB ?/"为何会呈现“?”呢 ,就是因为该分区引发动扇区犯错导致winhex无法正常辨认。

3、每个分区都有自个的备份发动扇区,所以咱们就用备份来康复。将右侧滚动条拉到最下边,跳到该分区的最终一个扇区,咱们看到满是00,这是每个分区都有的保存扇区。

4、ntfs发动扇区最显着的标志即是“EB 52”,经过搜索来找到它,点击搜索图标,输入下面的值

5、找到了备份发动扇区,把鼠标指针移到“EB 52"前面点右键选“选块开端”,在移到该扇区右下脚 “55 AA”后边右键挑选“选块完毕”看到该扇区被悉数选定,再右键“修改”-----“仿制选块”中的“规范”

6、再次点击右边黑色箭头挑选“发动扇区”,将鼠标移到该扇区最左上方点右键挑选“剪贴板数据”---“写入”,这时winhex提示“此操作会损坏该磁盘类容”点击持续。



以上是关于winhex怎么跳转簇号的主要内容,如果未能解决你的问题,请参考以下文章

分析NTFS文件系统得到特定文件的内容

硬盘分区错误怎么解决

文件粉碎原理

测试无监督 KMeans

关于列表理解的多个条件语句

集群标签比较 - 标签匹配