【问题标题】:Structure of $FILE_NAME attribute in NTFS file systemNTFS 文件系统中 $FILE_NAME 属性的结构
【发布时间】:2016-07-21 13:46:06
【问题描述】:

我正在阅读有关 NTFS 属性类型的信息,它涉及到 $FILE_NAME 属性结构。这里是:

Offset Size Description
~      ~    Standard Attribute Header
0x00   8    File reference to the parent directory.
0x08   8    C Time - File Creation
0x10   8    A Time - File Altered
0x18   8    M Time - MFT Changed
0x20   8    R Time - File Read
0x28   8    Allocated size of the file
0x30   8    Real size of the file
0x38   4    Flags, e.g. Directory, compressed, hidden
0x3c   4    Used by EAs and Reparse
0x40   1    Filename length in characters (L)
0x41   1    Filename namespace
0x42   2L   File name in Unicode (not null terminated)

什么是偏移 0x41 处的“文件名命名空间”?我认为我对命名空间有所了解。它如何存储在仅 1 个字节中?任何人都可以为我清除这个吗?谢谢。

【问题讨论】:

    标签: windows ntfs


    【解决方案1】:

    它描述了文件名的“特征”,即长度、允许的字符等。它本身不是“字符串”(如 C++/C#/等命名空间)。

    我找到了一份文件here,坦率地说我不知道​​它的有效性。

    但无论如何,它是这样描述命名空间的(这很明显,参见第 13.2 章。):

    0:POSIX

    这是最大的命名空间。它区分大小写并且 允许除 NULL (0) 和正斜杠之外的所有 Unicode 字符 '/'。最大名称长度为 255 个字符。注:有一些 字符,例如冒号 ':',在 NTFS 中有效,但 Windows 会 不允许你使用。

    1:Win32

    Win32 是 POSIX 的子集 命名空间并且不区分大小写。它使用所有的 Unicode 字符, 除了:'"' '*' '/' ':' '' '?' '\' '|' N.B. 名称不能以 点 '.' 或空格 ''。

    2: 操作系统

    DOS 是 Win32 命名空间的子集, 只允许 8 位大写字符,大于空格 '',并且 排除:'"' '*' '+' ',' '/' ':' ';' '' '?' '\'. N.B. 名称 必须匹配以下模式:1 到 8 个字符,然后是 '.',然后是 1 到 3 个字符。

    3:Win32&DOS

    这个命名空间意味着 Win32 和 DOS 文件名相同,因此保存在 这个单一的文件名记录。

    所以该字段可以是一个字节,因为它只包含一个数字,标识正在使用的各个命名空间。

    【讨论】:

    • 非常感谢先生!
    • «坦率地说,我不知道它的有效性» 它确实有效。 NTFS 文档由ntfs-3g Linux 驱动程序的作者编写,在Forensic File System Analysis by Brian Carrier 中也被广泛引用。
    • 不客气。 :) 此外,我的标题错了!其实就是文件系统取证分析
    猜你喜欢
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多