c++ - NTFS:多个 $DATA 属性,同名

标签 c++ windows ntfs

我知道NTFS支持ADS,意思是多个数据流,而每个都有不同的名称。但是,我目前正在尝试解析我的卷,并且特定的 MFT 记录拥有 3 个未命名、唯一(大小和数据运行不同)数据流。 该文件填充了 256mb 的“~”(单个字符),所有数据流都在相关的 MFT 记录中找到,这些记录是从属性列表属性中收集的。在正常的“流程”中,我会解析所需流的数据运行,并从所需的偏移量中读取所需的长度。我应该如何处理这种情况? (==读取文件内容)

最佳答案

每个备用数据流 (ADS) 都应该有一个唯一的名称。没错,您有多个类型为 $DATA 的属性,但它们应该具有不同的名称。例如。如果某些文件 multiple.txt 具有名称为 overhere 的 ADS,它应该具有以下 $DATA 属性。样本来自 here :

Type: $DATA (128-1)   Name: $Data      Resident   size: 15
Type: $DATA (128-5)   Name: overhere   Resident   size: 26

128-1的全名是multiple.txt,128-5的全名是multiple.txt:overhere

其他未命名的属性通常是:

Type: $STANDARD_INFORMATION (16-0)   Name: N/A   Resident   size: 72
Type: $FILE_NAME (48-2)              Name: N/A   Resident   size: 90
Type: $OBJECT_ID (64-3)              Name: N/A   Resident   size: 16

试试 istat MFT 记录的 Sleuthkit 实用程序:

istat -f ntfs <SourceName> <ID>

随着other tools from collection您将能够复制这些数据流的内容。

它是开源的,所以你可以查看 NTFS 的详细信息实现并研究如何从 $DATA 中检索数据。

关于c++ - NTFS:多个 $DATA 属性,同名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40628374/

相关文章:

仅用于第一个实例的 C++ 构造函数?

windows - 文件系统上的 Mercurial Remote 而不是 http 服务器

c++ - FindFirstFile 在根路径上失败

c++ - IF 语句有奇怪的行为

c++ - 打开文件时,C 还是 C++?

python - 为什么 Python 启动器在解释器中运行时无法导入脚本(使用 shebang)?

c++ - 在 Visual Studio 2013 上的 C++ 中使用 pthread

c++ - 我可以从 NTFS 分区在 Ubuntu 中运行 C++ 项目吗?

c++ - 使用相对路径读取文本文件

windows - 如何强行释放被其他应用程序占用或挂起的COM端口