问题标签 [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.

0 投票
5 回答
20820 浏览

windows - 主文件表清理实用程序?

谁能推荐一个MFT清理工具?我想在我的 MFT 中将曾经存在但已被删除的文件的条目恢复为“原始”状态,并将条目归零。

0 投票
2 回答
2809 浏览

indexing - NTFS 驱动器上的索引是如何发生的

计算机如何在 MFT 表中检索文件或目录的特定条目?我阅读了许多描述 NTFS 和 MFT 结构的文档,但我不明白我在 E:\documents\test.txt 中有一个文件,我如何识别它在 MFT 索引中的条目。是顺序的吗?

0 投票
4 回答
12387 浏览

windows - MFT 文件的位置?

我有一个分区,格式化为 NTFS。我研究过格式化为 NTFS 的设备有一个 MFT(主文件表),其中包含有关设备内容的大量信息。

MFT 真的是文件吗?
它位于哪里?
如何查看?

我实际上想查看 $BITMAP 以了解分区中所有文件和目录的位置。

更新:似乎我只能使用 HexEditor 查看 MFT 文件。虽然仍在寻找更多选择...

0 投票
1 回答
3180 浏览

windows - 在 NTFS 卷上快速查找一组文件名,最好是通过其 MFT

我正在编写一个工具,用于查找 iTunes 库中丢失的文件,适用于 Mac 和 Windows。在 Mac 上,我可以使用奇妙的“目录搜索”功能通过命名快速找到文件。

但是,在 Windows 上,似乎没有用于按文件名搜索的 OS API(或者有吗?)。

经过一番谷歌搜索,我了解到有一些工具(如TFindEverything)可以直接读取 NTFS 目录并扫描它以按名称查找文件。

我也想这样做,但不必从头开始(虽然我过去写过不少磁盘工具,但我从来没有精力深入研究 NTFS)。

我想知道周围是否有现成的库,可能是.dll,这会给我这个搜索功能:传入文件名,取回它的路径。

或者,Windows 索引服务呢?至少当我在最近安装的 XP Home 系统上尝试此操作时,开始菜单下的搜索操作实际上会扫描所有目录,这表明它没有完整的数据库。由于我根本不是 Windows 用户,我想知道为什么这不起作用。

最后,我需要的完整解决方案是:我有一个要查找的文件名列表,并且我需要搜索整个磁盘(或使用数据库)的代码,以便一次获得所有结果。例如,搜索不应该对我正在查找的每个文件开始新的全面扫描。这就是为什么我认为 MFT 方式是最佳的,因为它可以快速迭代所有名称,并将每个名称与我的列表进行比较。

0 投票
2 回答
5053 浏览

windows - 转储 $mft 文件的内容

对于我正在做的一些商业项目,我需要能够读取存储在 $mft 文件中的实际数据。

我找到了一个可以提供帮助的gpl 库,但是由于它的 gpl 我无法将它集成到我的代码中。

有人可以指点我一个我可以使用的项目/或指点我相关的 Windows API(不需要 1000 行代码来实现的东西)

顺便说一句,为什么 Windows 不允许我直接读取 mft 文件?(通过创建文件和读取方法,如果我想毁掉我的驱动器,那是我的事,不是女士的)。

谢谢。

0 投票
1 回答
216 浏览

file - NTFS 流结构

我在这里阅读 NTFS 结构,我想为自己回答的主要问题是碎片流中的块是如何串在一起的。

该页面解释说,在主文件表中,文件具有有关其流的信息,但是没有关于存在哪些信息以及流如何知道哪些块属于它们的精确解释。

我的问题:

NTFS 究竟如何将块字符串与碎片流相关联?它是带有指向下一个块的指针的块头吗?流块关联表?我没想到的更聪明的东西?

0 投票
4 回答
2262 浏览

windows - 如何使用 Java 或 C++ 获取文件 MFT 条目/inode

我用 Java 编写了一个重复查找器,但我需要包含对它的硬链接支持。不幸的是,似乎没有办法在 Java 中挖掘出文件的 MFT 条目。

虽然 BasicFileAttributeView 类中有一个名为 fileKey() 的方法,但它在 NTFS 文件系统上不起作用(我还没有在 ext 上测试过)。

我还找到了方法isSameFile()(在 java.nio.file.Path 中)。有谁知道这种方法是如何工作的?它似乎在做正确的事情,但它返回一个布尔值,所以对我来说毫无价值(我希望将结果放入映射并按其 MFT 条目对它们进行分组)。

我总是可以比较每个文件的创建时间、修改时间等,但这只是放弃。

有什么方法可以完成我在 C++ 或 Java 中尝试做的事情吗?我更关心让它在 NTFS 上工作而不是 ext。

0 投票
2 回答
5856 浏览

ntfs - 如何转储 NTFS $Bitmap 文件

对于一个项目,我想获取 NTFS 分区上所有可用/已使用集群的列表。为此,我必须转储 $Bitmap 文件并解析其内容。

网络上的 API 和示例很少,但它们似乎不起作用。是否有一种简单的方法/代码示例可以将 $Bitmap 文件复制到某处。

使用 FSCTL_GET_VOLUME_BITMAP 是唯一的方法吗?理想情况下,我想用 C# 来做。

0 投票
2 回答
536 浏览

ntfs - 如何保护扇区不被写入 NTFS

我正在尝试在 ntfs 分区上实现反取证工具。我需要保留 1GB(在精确的物理位置)的空间不被文件系统写入。我的想法:

  • 尝试在特定位置创建一个 1gb 文件(如何?),以便将其视为已使用
  • 尝试手动编辑 MFT 并插入一个虚假条目以将该区域标记为已使用(如何?)

关于如何实现这两个想法或其他的任何建议?

0 投票
3 回答
2868 浏览

file - 短文件可以比长文件使用更多的 MFT 记录吗?

众所周知,在 NTFS 中,我们将元数据存储在称为 MFT 记录的结构中(其中包含一些运行)。

这本书问下一个问题

短文件比长文件使用更多的 MFT 记录吗?

我认为答案是否定的——因为如果我们有一个文件,其元数据的大小超过一个 MFT 的大小,那么我们必须使用运行。还有其他建议吗?