AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1792700
Accepted
user3629081
user3629081
Asked: 2023-06-30 22:16:53 +0800 CST2023-06-30 22:16:53 +0800 CST 2023-06-30 22:16:53 +0800 CST

如何解释 NTFS MFT 记录中的 Cluster Chain Run?

  • 772

主要出于学术原因,我一直在学习如何从 NTFS 卷的 MFT 记录的数据属性块解释集群链运行。

我观看了一个演示示例的视频。这是例子:

旗帜| 簇数 | 第一个集群
41 02 f8 38 c7 01
21 02 c5 07
31 04 83 43 01
21 08 c0 fc
31 10 44 0b 00
31 01 f7 ef f9
21 1f c6 e7
21 10 6b 28
31 01 00 52 e4

现在,视频显示了一些正在解释十六进制输出的磁盘编辑软件。这很有帮助,因为视频的作者完全跳过了至少 3 个基本概念:

  1. “第一簇”字段是累积的。如果您使用计算器,很容易弄清楚。
  2. “第一个簇”字段是一个有符号整数,以便它可以在磁盘上向后导航。这很难弄清楚,但我明白了。
  3. 第三个完全被忽略的概念是当“第一簇”字段的最低有效字节为零时。由于这些字段被解释为小端字节序,并且这是一个灵活长度字段(标志表示有多少字节),那么为什么会有前导零呢?

所以,这就是我的计算方法。

旗帜| 簇数 | 第一个集群
41 02 f8 38 c7 01
2 个集群,从集群 # 29,833,464 开始 另有
21 02 c5 07
2 个集群,从 29,833,464 开始,从 1,989 开始,即集群 # 29,835,453
31 04 83 43 01
又有 4 个集群,从 29,835,453 开始,从 82,819 开始,即集群 # 29,918,272 又有
21 08 c0 fc
8 个集群,从 832 开始,早于29,918,272,这是集群#29,917,440
31 10 44 0b 00
16更多集群从 29,917,440 开始,从 2,884 开始,即集群 # 29,920,324
这是我的数学与他们的数学不同的地方。他们说集群#29,840,452。我这里需要帮助。
31 01 f7 ef f9
21 1f c6 e7
21 10 6b 28
31 01 00 52 e4

当某一字段中有前导零时,数学如何进行?我还有一个单独的示例,其中前导零位于“簇计数”字段中,而不是“第一个簇”字段中;待遇有什么不同吗?”

filesystems
  • 1 1 个回答
  • 74 Views

1 个回答

  • Voted
  1. Best Answer
    Joep van Steen
    2023-07-01T04:22:15+08:002023-07-01T04:22:15+08:00

    31 10 44 0b 00,还有 16 个簇,从 29,917,440 开始,从 2,884 开始,即簇# 29,920,324 这是我的数学与他们的数学不同的地方。他们说集群#29,840,452。我需要帮助

    这不是你的数学错了,而是视频中演示的那个人错了,或者至少忽略了一个重要问题:

    他做了一点作弊,他只是从左侧列的解释值中读取值,就好像他正在即时转换他突出显示的值一样。

    但他方便的转换值考虑了他没有提到的更新序列数组。

    更新序列数组和修正值

    您遇到问题的运行不是 31 10 44 0b 00. 如果我们仔细观察视频中的字节序列,我们会看到运行的最后两个字节是 512 字节扇区中的最后两个字节:

    在此输入图像描述

    因此 0b 00 不是属于本次运行的两个字节,它是“修复”。要获取实际值,您需要从所谓的“更新序列数组”中读取它们,该数组的偏移量存储在 MFT 条目中的字节偏移量 4 处(通常为 0x30)。

    在偏移 0x30 处,您将看到字节 0b 00(修复值),接下来的两个字节将是 MFT 条目第一个扇区的最后两个字节的原始值,接下来的 2 个字节是下一个扇区的原始值。

    我将使用驱动器中的 MFT 条目进行说明:

    在此输入图像描述

    实际上31 10 44 0b 00,31 10 44 xx xx您可以将 xx 替换为更新序列数组中的字节,然后进行数学计算。

    修复值的目的是检测损坏。因此,一旦我们读取 MFT 条目,我们就会检查修复值并将其与每个扇区的最后 2 个字节进行比较,如果扇区没有损坏,它们应该匹配。然后,为了实际使用该条目,我们需要首先使用更新序列数组中的值来纠正修正值。

    由于这些字段被解释为小端字节序,并且这是一个灵活长度字段(标志表示有多少字节),那么为什么会有前导零呢?

    老实说,我还没有最模糊的想法。在我研究这个的时候,我这样做是为了编写一个NTFS文件恢复程序(另外,我最近重新发现了它的源代码并重新编译以查看是否仍然可以运行。它确实可以运行!)

    不管怎样,重点是,当我弄清楚数据运行时,我再也没有仔细查看过这些运行,因为我编写了代码来处理它们。

    但是,是的,你是对的。我再次转向我自己的硬盘并得到以下条目:

    在此输入图像描述

    所以我们得到:

    31 - 38 - 12 39 09 
    43 - 76 2B 01 - 42 77 BB 03 
    43 - A7 82 01 - 91 14 D6 00 <<
    33 - DC D1 01 - 5B 2B FE  
    33 - D9 E4 01 - A2 B3 FD 
    etc ..
    

    事实上,据我所知,<< 零没有任何区别。事实上,如果我们要求 DMDE 解释运行列表,它也会忽略零:

    在此输入图像描述

    参考:https://flatcap.github.io/linux-ntfs/ntfs/concepts/file_record.html

    • 2

相关问题

  • zip 文件中的文件名无效

  • 如何从 /sys 的后端查看日志

  • fuser 不显示打开文件的进程的 PID

  • 使用 Thunar 时无法跨文件系统边界丢弃文件

  • 是否可以在客户端中使用没有文件系统的 FTP?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Vickel Firefox 不再允许粘贴到 WhatsApp 网页中? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve