Winhex手工定位NTFS文件系统下的文件<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

相信很多朋友在认真看完数据恢复书籍中,关于NTFS文件系统中讲述的一系列属性以后,或多或少还是有些范迷糊。确实,NTFS文件系统结构比较复杂,且书中也没有讲到如何利用这些属性来定位文件,这对于初学者来说,无疑是一个缺憾.为弥补这一缺憾,我根据我个人对NTFS文件系统的理解,制作了本分析过程。申明,这只是本人的理解,难免会有错误的地方。仅供大家参考。
现在我就以我电脑里的一个叫“MFT结构分析”的图片文件,其存储路径为E:\教程\数据恢复。
接下来我们一层一层的去定位文件.以对所学的属性做一个融会贯通.或许有的朋友会说:在实际操作中,可以通过在MFT中搜索文件名的方式来做出定位,这样也是可以的。我制作本分析过程的初衷也就是给初学者对NTFS的理解提供一个思路。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />    学过FAT文件系统的,一定知道如何定位分区以及DBR,那好,我们就直接从DBR开始
从DBR中得出,每簇扇区数为08H,($MFT一下简称MFT).MFT的起始簇为:00000C00H,转换为十六进制分别为8扇区和786432簇。现在跳转到786432簇,如下图:
我们可以看到,这是MFT的第一个记录,记录的是它自己。,接下来我们跳转到MFT的关于根目录的记录,也就是第5号记录。根目录一般存储的文件以及文件夹比较多。所以,它是非常驻的,关于这些文件夹的信息记录在了其它的位置。而记录在什么位置是由索引分配属性来记录的,也就是A0属性,接下来着重看一下A0属性,如图:
上图红色的标注的位置是运行(Data run)31H表示用三个字节描述的是索引的位置的起始LCN(3E9002H),一个字节描述的是长度(02H)。下一个运行的位置描述的是00H表示到此结束,只有一个运行。(提示:如果下一个运行由内容,那么它描述的LCN加上前一个运行描述的LCN才是其真正的LCN,如果由三个运行,用第三个运行的LCN加上前两个的LCN就是第三个运行的真正的LCN,以此类推!)
我们将其转换为10进制数值得到这样一个信息,索引项的起始位置为167998簇,乘以每簇扇区数8,等于1343984扇区,长度为2个簇,跳转到1343984扇区,如图:
这个位置是根目录的索引项,可以看到里面索引的文件名为元数据。“教程”这个文件夹也存放在根目录里面,我们搜索该文件名,以找到相对应的索引项,由于NTFS里面文件名是用Unincode字符来表示的,所以该文件名转换为16进制数值为59650B7A8765H,我们在根目录索引项里搜索此文件名:
在1343994扇区找到了“教程”的索引项,(1343994-1343984=10,每簇扇区数为8,说明次索引项存放在第二簇里面)从上图可以看出,其文件记录存放在第6B3500H号扇区,转换为十六进制为13675号记录,一个MFT占用2个扇区,其文件记录的开始为,从MFT第一号记录向下数27350个扇区,就其文件记录存放的位置,计算方式为:6291456 +(13675*2)=6318806,跳转到6318806扇区,如图:
图中描述的本MFT号正是我们要找的,看下面的运行31011BEB01H,转换为16进制数值为:125723,再乘以每簇扇区数8等于1005784扇区,现在跳转到1005784扇区搜索“数据恢复”这个文件夹的十六进制数值70656E6362600D59H,结果没找到,难道是此文件夹没有记录?不可能。猜想,会不会是被驻留了。存放在MFT里面,跳回6318806扇区,搜索70656E6362600D59 ,在该MFT的第二个扇区里面找到了该文件夹的记录。
跳转到文件的“数据恢复”文件MFT记录号:23A100000000H,十进制为41251号,乘以2加上6291456,等于6373958。如图:
对NTFS多少有点了解的人都会发现,这并不是MFT。为什么?看一下我的MFT的分布情况,如图:
我的MFT是分三大块来存放的,(我自己的命名)接下来计算一下:
第一块:MFT从786432簇开始,到796687结束用了10255个簇=82040扇区,每2个扇区为一个完整的MFT。
第二块:MFT从397607开始到结束397686,用了79个簇632
第三块:……
第一块MFT只用了10255个簇来记录,(我用簇为来但来计算)而我们要找的文件“数据恢复”存放在41251号,(41251*2/8= 10312.75簇)已经超出了第一块的记录范围,超出75.75个簇,经计算,在第二块里面才是存放的“数据恢复”的MFT。第二块的开始位置为397607簇,加上75簇,等于397664簇,由于硬盘是从0开始记录数据的,所以,这个地方应该还要减去1。跳转到397663簇的四分之三(0.75)位置,也就是第6个扇区
根据运行,得知其起始LCN为A08AH(35488*8=283904),占用一个簇。跳转到283904扇区:搜索文件名“MFT”结构分析4D0046005400D37E7E00H
 
其文件MFT号为26A1H(41254号记录),根据前面的MFT记录块的计算,在“数据恢复”MFT记录向下数三个记录,就是“MFT结构分析”这个文件的MFT记录了。跳转到该位置
其运行为3281000F8F00H,起始LCN为0F8F00(36623*8=292984扇区),长度为8100H(129*8=1032扇区),那么结束位置为292984+1032=294016扇区
跳转到文件的开始292984
跳转到294016,选取上一个扇区的结尾
编辑-复制-植入新文件-保存文件名为“MFT结构分析.jpg”。双击,能够正常打开。
说明定位是正确的,而且也没有计算错误。
大家可以看到NTFS要比FAT复杂的多,但是只要是对文件系统的结构充分了解,然后再通过逆向分析,发现也不是很难。NTFS文件系统是学系RAID的基础,要想学习RAID的朋友,一定得充分熟悉NTFS的结构。文中有明白的地方请加QQ群11391767讨论。如有错误的地方,也欢迎各位网友加我的QQ共同讨论86081166。

转载于:https://blog.51cto.com/wuxiaoming0222/225750

用Winhex手工定位NTFS文件系统下的文件相关推荐

  1. 如何编码实现NTFS格式下删除文件的恢复(结束)

    写完"如何编码实现NTFS格式下删除文件的恢复"和"如何编码实现NTFS格式下删除文件的恢复(续一)"后,好多朋友询问下文,但是最近忙着写别的东西,实在是没工夫 ...

  2. 访问ntfs文件系统获取目标文件簇流

    NTFS文件系统总体布局 MBR(Master Boot Record,主引导记录)又叫主引导扇区,是计算机开机后访问硬盘时必须要读取的首个扇区,它在硬盘上的三维地址为0柱面,0磁头,1扇区(整个硬盘 ...

  3. 如何编码实现NTFS格式下删除文件的恢复

    主要内容 一.NTFS系统结构原理 二.编码实现NTFS磁盘删除文件扫描 三.编码实现NTFS磁盘删除文件恢复 (编码实现的磁盘文件恢复小工具下载地址) 工具截图 第一部分 NTFS系统结构原理 NT ...

  4. 【服务器数据恢复】OneFS文件系统下误删除文件的数据恢复案例

    EMC Isilon存储结构: Isilon群集存储系统使用的是分布式文件系统OneFS.Isilon群集存储系统的每个节点均为单一OneFS文件系统,Isilon在进行横向扩展时不会影响数据的正常使 ...

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

    找某一个文件的内容(如要读取文件D:\dir\dir2\text.txt,具体步骤如下: (1)读取分区表/分区链表信息,找到磁盘F的起始扇区. (2)读取D盘的第一个扇区(分区的BOOTSETOR) ...

  6. 如何编码实现NTFS格式下删除文件的恢复(续一)

    上节地址:http://blog.csdn.net/A00553344/archive/2009/12/18/5031993.aspx 7.    主文件列表(MFT)记录详解 了解了NTFS的基本结 ...

  7. 数据恢复笔记——NTFS文件系统

    Winhex数据恢复(NTFS文件系统) DBR的数据结构 NTFS文件系统的元文件 主文件表MFT MFT属性类型 10h属性体数据结构 30h属性体的数据结构 60h属性体的数据结构 70h属性体 ...

  8. 数据恢复基础和进阶教程(四)---NTFS文件系统的特点及几种常用的数据恢复方法

    数据恢复基础和进阶教程(四)-NTFS文件系统的特点及几种常用的数据恢复方法 *在每逢年底必加班的大环境下,这两天单位比较忙,就连中午和晚上基本都不能按时休息,所以没及时更新最新的课程,抱歉.今天工作 ...

  9. 浅析NTFS 文件系统数据流安全问题

    从一个古老的漏洞谈起 人们应该还记得1998年中期发现的IIS低版本那臭名昭著的$DATA漏洞,若你对www.hackart.org站点的sheepxxy.asp文件的源代码感兴趣 只需要在浏览器中输 ...

最新文章

  1. php redis删除所有key,redis中批量删除key的方法
  2. 13. jquery ajax json 学习
  3. linux shell 统计行数的8种方法
  4. 【翻译】QEMU内部机制:顶层概览
  5. [蓝桥杯]算法提高 道路和航路(spfa+deque+快读优化)
  6. 技术分享|单元测试推广与实战-在全新的DDD架构上进行单元测试
  7. Black and white
  8. 程序员如何技术划水,手把手教你写Android项目文档,绝对干货
  9. Android实现高仿QQ附近的人搜索展示
  10. java url 短链接_推荐几个官方腾讯短链接url接口(含PHP演示代码)
  11. 正在中止线程 iis_Zephyr线程生命周期及状态
  12. thinkphp 视图(一)
  13. python调用hive与java调用区别_python和hive结合使用
  14. node mysql 查询_Node.js使用mysql进行查询详解
  15. 清除zend studio10.5中的内置浏览器中的历史记录
  16. 从其它系统登录到SharePoint 2010系统的单点登录
  17. 浅谈央行数字货币 DCEP
  18. 安装imageAI:
  19. 如何将dwg转换为kml
  20. rf 433/868MHZ sub-1g 无线通信知识系列(5):SX1208数据传输时间 FSK 波特率等相关计算

热门文章

  1. 欧莱雅收购AI公司ModiFace,想让自拍照“一键上妆”
  2. 英伟达赚钱能力创历史新高,老黄:GPU供不应求我也很急
  3. Pony.ai签约落户广州南沙,计划年底前推出无人车队
  4. JAVA程序设计:线程的概念
  5. 详解:知乎如何使用机器学习,未来还有哪些想象空间
  6. 三周第三次课(12月27日)
  7. Android反编译方法
  8. 少撸两局教你搭个博客玩
  9. [unity3d]自定义鼠标指针
  10. C#文件和目录的操作