问题标签 [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 投票
2 回答
4239 浏览

python - 试图从 Python 3 获取 MFT 表

我尝试从 python 的本地磁盘读取 MFT 表。当然,如果我写这样的东西:

我会得到

[ Errno 13] 权限被拒绝:'C:\$MFT'

我尝试使用 pyMFTGrabber,但它不起作用;我有很多“socket.errors”。

使用 Python 读取此文件的最佳和最简单的方法是什么?
也许是一些 WinAPI 或其他什么?阅读后我想用它来分析它"analyzeMFT"

0 投票
0 回答
117 浏览

windows - NTFS DataRun 可能出错

我正在编写一个代码来解析 NTFS 的 MFT。我正在尝试分析非住宅 $INDEX_ALLOCATION 属性的数据运行:

11 01 2C 11 02 FE 11 00 9F 0B 21 01 DB 00 21 01 D9 00 21 01 E0 00 21 01 F6 00 21 01 10 01 00 F1

重组后,我在 Data Run No 3 中看到问题: DataRun 1: 11 01 2C DataRun 2: 11 02 FE DataRun 3: 11 00 9F <- “00” 是什么意思?

我尝试使用 Active Disk Editor 3 对其进行分析,该软件将其分解为: DataRun 3: 11 00 9F 0B 在我看来 DataRun 3 ("11") 的标头意味着 1 个长度和 1 个偏移量,因此标头后应该有 2 个字节,但是有3个字节。

任何想法?

0 投票
1 回答
301 浏览

c++ - 我无法阅读 mft 并将 VB.net 转换为 C

我尝试将 VB.NET 源代码转换为 C。其目的是显示我的硬盘是否为 NTFS。

据说读取MFT可以比较第三个字节,如果是78十进制(N)和84(T)等等……返回0表示“真”,但我做不到;我的代码不起作用。

我该如何解决?

VB.net:

C:

编辑

我更改了代码但没有

我尝试使用像MSDN 示例一样的“\.\C:” ,但没有:(

并且错误从“if(buff[3] == 'N')”开始,我不知道 ReadFile 是失败还是“if”?

Mid 用于驱动器.. "C:\" 或 "C:" 如 "\.\C:" 或 "\.\C:\"

0 投票
3 回答
15207 浏览

c# - 我们如何通过 C# 访问 MFT

我需要在我的 .net 应用程序中使用 C# 访问 Windows MFT(主文件表)。
我对此进行了谷歌搜索,但找不到任何好的结果。我一直在搜索过去 2 天的信息,但找不到任何相关信息。

我不是在寻找确切的代码来做同样的事情,我只是在寻找一些可以让我开始的信息。

我唯一能弄清楚的是我必须使用 P/Invoke。
我想知道我将用来访问 MFT 的功能。
如果您能够提供一些代码示例,那就太好了。

0 投票
1 回答
133 浏览

directory - NTFS 中的目录组织

编写解析器文件系统NTFS。我需要始终如一地读取目录并显示有关所选目录内容的信息,这仅需要读取包含有关文件和子目录的信息的 MFT 记录。问:如何组织?MFT 记录中是否有指向其他 MFT 记录文件和子目录的链接列表?

0 投票
1 回答
595 浏览

c++ - MFT 的大小与 MFT 的解析

我在一个项目中工作,我必须从驱动器中枚举文件名。我尝试了两种方法

  1. MFT解析和
  2. FindFirstFile 的多线程。我比较了两种实现的执行时间,它显示 MFT 大小越小,执行速度越快,如果 MFT 大小超过 GB,则执行时间越长。

我的观察是:

  • 卷 C:MFT 大小:1.85 GB exe 时间:65 秒核心线程数:9 秒
  • 卷 D:MFT 大小:38 MB exe 时间:0.593 秒核心线程数量:1 秒
  • 卷 C:MFT 大小:1.02 GB exe 时间:11 秒核心线程数:3 秒
  • 卷 D:MFT 大小:89.75 MB exe 时间:1 秒核心线程数量:2 秒

Ps 从两台单独的机器上进行的测量。

有了这些观察,我有点困惑 MFT 的解析是否取决于它的大小?为什么线程不能为更小尺寸的 MFT 提供更好的解决方案?

0 投票
1 回答
219 浏览

c# - 读取 NTFS 卷根失败,除非缓冲区大小是 512 的倍数

我正在使用 MFT,首先使用 P/Invoke 调用读取我的 C: 驱动器的根目录。使用下面的代码,如果缓冲区大小是 512 的倍数,我会得到预期的结果,否则读取会失败并显示 ERROR_INVALID_PARAMETER。这与集群大小有关吗?这似乎不太可能,因为我的集群大小为 4k 字节。显然我可以只使用 512 的倍数,但在我看来这可能不是可移植的,当然我想了解为什么会这样。

0 投票
1 回答
572 浏览

c++ - 检索 $BITMAP 集群/块号。来自 MFT

有谁知道如何获得集群/块号。在 C/C++ 中来自 MFT 的 $BITMAP 文件?我知道 MFT 中 $BITMAP 文件的文件记录数是 6,但我怎么知道它的扇区或块/簇号?其实我想读取 $Bitmap 文件。

注意:我不想使用 Windows API。

等待正面回应。提前致谢。

0 投票
1 回答
49 浏览

c++ - Speedy splitting. Or how to make filesystem to recognize array of bytes as a file?

I want to split a big file into smaller ones without copying part of file, and without using filestream or functions which use it (if it is possible).
Imagine, we have big file which is consisted of 3 files:

In my opinion we can do this with these steps:

  1. Use SetEndOfFile function to truncate the bytes of the last file ([File3bytes] in our example)

  2. Somehow force our file system to recognize those truncated bytes ([File3bytes]) as a real file (maybe by adding some info to MFT table, or doing something with NTFS if it is possible, or using some function or method which can do all mentioned for us).

Any suggestions?

0 投票
1 回答
249 浏览

c# - c# Directory.GetFiles() - NTFS 上的多个文件

像这样使用 System.IO.Directory.GetFiles()

我找到以下两个文件:

  • C:\Windows\System32\mycompanyname.scr
  • C:\Windows\SysWOW64\mycompanyname.scr

Windows 资源管理器看不到 C:\Windows\System32 中的那个,命令行目录也看不到。此外,我自己搜索 MFT 的代码显示 MFT 中只有一个 mycompanyname.scr 实例,其父目录记录号指向 C:\Windows\SysWOW64,因此我认为硬链接不会混淆问题。我还检查了这两个目录都不是连接点。

有人可以解释这是为什么吗?