问题标签 [ntfs-mft]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
64-bit - MFT 记录中的最大数据运行字节数是多少?
随着文件中片段数量的增加,您可以看到 MFT 记录中使用的字节数增加。正如预期的那样,它以 8 的增量增长,直到填满 1024 字节基本记录的每个最后一个字节,然后才拆分为第二条记录。乍一看,您可能期望答案是“1024 - headerlength”。
但是,随着第二条记录的增长,它不会使用该记录的每个字节。相反,它在 1016 处达到最高值,当它拆分为第三条记录时,留下 8 个字节的记录未使用(见下文)。如果我继续拆分运行,第三条记录也会拆分,再次拆分为 1016 而不是 1024。
NTFS 通常在处理 MFT 记录方面非常高效,这使得这种行为非常可疑。它闻起来像个虫子,尽管我想可能有一些模糊的原因是必要的。
但后来我开始尝试 4k MFT 记录 ( format /L
)。并且基本记录和扩展记录总是使用完整的 4096 字节。
所以现在它看起来真的像一个错误。虽然我不确定这个错误是否是 1k 记录在 1016 处达到顶峰,或者 4k 记录没有在 4088 处达到顶峰。要么有充分的理由保留这些最终字节,要么没有,对吧?
除了浪费宝贵的资源之外,它还使计算 MFT 记录上的“可用”空间变得非常复杂。公式真的是“假设记录将增长到 MFT 记录大小,除非它是扩展记录,然后减去 8,除非它是 4k 记录,然后不做减法?” 或者这种行为是否意味着这里还有其他一些标准?有诀窍吗?
FWIW,这是拆分前的 1016 字节记录(如在磁盘编辑器中所见)。您可以看到属性标记的结尾 (FFFFFFFF 82794711),后跟 8 个空字节。尾随的 02 00 是 MFT 记录使用的 Updatebytes。下一次拆分后,这条记录的大小减少了一半。
winapi - NTFS 定位并从 RAW 读取 $MFT
我目前正在尝试从原始数据中以编程方式解析硬盘驱动器的 MFT,以便枚举具有特定扩展名的所有文件(在很短的时间内)。
我正在按照该教程来指导自己:A Programmers View of Raw Filesystem Data Extraction。
我已经\\.\PhysicalDrive0
使用成功打开CreateFileA
,并且确实找到了我找到BPB
.
我的问题是我无法正确定位MFT
.
如上所示(我的 Windows 分区第一个扇区的原始数据),MFT 的逻辑簇数等于0x56a6
.
然后我计算了每个簇的扇区数,即0x20 (0x20 * 512 = 0x4000 bytes)
.
所以从逻辑上讲,MFT 的偏移量0x4000 * 0x56a6
等于0x15a98000
。
当我寻找该偏移量并检索前 512 个字节时,我看不到应该开始的预期数据FILE
(我只看到一些随机字节)。
我也尝试不是从分区的第一个扇区而是从硬盘驱动器的一个扇区中寻找,它也不起作用(我想这是正常的)。
我想我错过了什么,但我不知道是什么。
我希望我已经足够清楚了,如果您需要更多详细信息和信息,我会提供给他们。
谢谢。
ntfs-mft - MFT枯木;和可移动媒体上的 MFT
我是 NTFS 中 MFT 主题的新手。我已经阅读了许多有关它的文件,但到目前为止,我还没有找到关于立即想到的一些问题的明确陈述。
如果您有 Windows 桌面并从 NTFS 格式的可移动介质(例如,USB 记忆棒或可移动 HD)读取文件,那么我假设时间线信息(访问日期等)被写入可移动介质上的 MFT . 因此,如果 USB 或 HD 被移除,时间线就会消失。主机操作系统(Windows 桌面)是否单独保留有关打开哪些文件以及在哪个可移动卷上的任何信息?
有关 MFT 的文章说,最初,删除文件时不会删除 MFT 记录。因此,MFT 不断增长。有人提到,随着磁盘填满,某些已删除文件的记录最终会被覆盖:但我找不到有关所使用算法的详细信息。与此同时,这意味着 MFT 大小没有上限,并且它可能会使资源稀少的系统崩溃。这听起来相当极端。那么,有什么方法可以修剪死木(例如,可以永久删除不需要的条目的实用程序)?我读到操作系统不允许在活动系统上更改 MFT 大小,但也许一个实用程序可以在完整系统加载之前运行,就像 CHKDSK 那样(我认为)?
是否可以设置 MFT 大小的硬上限(没有完全填充 HD)?
c++ - 为什么未删除的文件指向无效的 NTFS MFT 记录?
我最近一直在弄乱 NTFS,以便执行快速搜索(通过解析 MFT),它应该显示具有特定扩展名的文件(即使它们被删除)并找到它们的路径。我遇到的第一个奇怪的事情是,在我见过的所有情况下(3)驱动器 C 包含很多无效的 MFT 记录(超过 3/4)。他们中的大多数(如果不是全部)未能通过签名验证。
我通常会认为这些记录没有被使用,但还有另一个问题让我认为出了点问题:当找到所有具有所需扩展名的文件记录时,一些记录指向父 MFT 记录,由于同样的原因。但是这些文件被标记为“正在使用”,我在资源管理器中看到它们。另外,另一个奇怪的事情是它们所在的目录是有效的,因为在相同的目录/子目录中存在指向有效目录的文件(例如,我在桌面上有文件 log.txt,它指向一个无效的文件记录。还有一个文件夹数据(也在桌面上),其中包含一个文件 info.txt 和“数据”指向一个有效的文件记录)。
签名验证(简化):
获取父母的LCN:
由于这种签名不匹配,是否有可能丢失(在搜索方面)文件(我认为是的,但我想确定)?为什么有些文件记录指向无效的父母,而另一些指向有效的父母(他们应该有相同的父母)?
windows - Windows 10 的 MFT 中如何处理 DOS 文件名?
文件名存储在文件记录的 $30 属性中的 MFT 中。在 Windows 10 之前,文件记录通常有两个 $30 属性,第一个用于 8.3 文件名,如果文件名的长度超过 8 个字符,第二个用于长文件名。(如果存在硬链接,则可能有更多 30 美元的属性)。
这在 Windows 10 中发生了变化。8.3 和长文件名都存储在一个 30 美元的属性中(除非在注册表中关闭了 8.3 文件名的创建)。
这给我留下了两个问题:
- 如何从 $30 属性中提取 8.3 文件名?
- 显然,Windows 10 的现有版本仍然具有两个 30 美元的属性。在什么时候发生了变化?
ntfs - 使用 DataRun NTFS 定位原始数据的问题
我有一个包含多个测试文件的 NTFS 文件的图像。当我到达 Windows Bin 时,我遇到数据运行:1 个集群 => 4096 / 0x1000 字节
22 BD 00 42 01 21 56 67 FF 11 03 97 11 13 D7 00。
通常这意味着我有 4 次运行:
22 BD 00 42 01 => 0xBD 簇 @ 0x142 簇偏移
21 56 67 FF => 0x56 簇 @ 0xFF67 簇偏移
11 03 97 => 0x3 簇 @ 0x97 簇偏移
11 13 D7 => 0x13 簇 @ 0xD7 簇偏移
问题是,没有足够的簇来达到 0xFF67,你会越界。
在 0x97 偏移处的 3 个集群中找到的原始数据也不匹配文件中的任何数据。
任何人都知道问题可能是什么?
这里是整个条目的代码,它从偏移量 0x14400 开始
windows - NTFS Extended Attributes,
I have been struggling to understand how exactly NTFS Extended file Attributes works. I'm studying the Data Loss Prevention(DLP) products (like Symantec, McAfee, Forcepoint DLP products). and in the DLP products, there has a mechanism that the DLP can insert a Classification ID into the file to classify the file so that even the file is sent out to another PC, the DLP still can track the file if the target PC installs DLP software as well. I want to know-how is the Classification ID embedded into the file, googled this a lot but still unsure of this.
Thanks in advance.
asp.net-web-api - HTTP 错误 500.0 - 在 ASP.net Web API 文件夹中获取图像时出现内部服务器错误
我正在尝试从我的 ASP.net Web API 项目中的图像文件夹中浏览图像,如下所示:- http://localhost:56951/Images/221020065254AM_13906734_658826644282707_5299628712403615086_n.jpg在此处输入图像描述。我从 DB 获得了图像名称和扩展名,我使用这个 URL 调用图像,我之前已经调用了很多次,但不幸的是,此时我收到了 HTTP 错误 500.0 - 内部服务器错误
filesystems - 这个未知的 NTFS 字段是什么?
NTFS 的 Microsoft 文档描述了属性的结构。它显示如下:
非常驻属性的最后一个成员 ,TotalAllocated
似乎不存在。3rd 方文档没有提到它,实际的 NTFS 文件系统不包含这样的成员(ValidDataLength 紧随其后的是数据运行,如MappingPairsOffset
.
从文档本身来看,它应该记录集群的总数(而不是字节总数)。
总分配
为文件分配的总数(分配的簇的总和)。
有人认识这个吗?
rust - 如何从 Rust 访问 $MFT?
在 Rust 中$MFT
使用诸如https://docs.rs/mft/0.5.3/mft/index.html之类的库来传递 a 似乎很简单。但是,尝试在当前实时系统上访问它似乎更棘手。
如何使用mft
crate 解析当前驱动器的 NTFS $MFT?