NTFS 标准信息属性

NTFS标准信息属性的代号

NTFS标准信息属性的类型值为:0x10.

NTFS标准信息属性的常驻性

是常驻属性,每一个文件或者目录都必须存在。

NTFS标准信息属性的内容

  • 时间日期
  • 常规属性(只读,系统或存档;压缩,稀疏或加密等)
  • 文件或目录拥有者
  • 安全属性
  • 文件的变更情况(启用了变更日志的情况下)

时间日期

时间日期拥有四个时间日期,分别为

  • 创建时间:文件创建的时间
  • 修改时间:文件的$DATA属性或者$INDEX属性被最后修改的时间
  • MFT修改时间:文件的元数据最后修改时间
  • 访问时间:文件内容最后被访问的时间
    这四个时间的日期和时间戳使用64位整数值,是相对于1601年1月1日0时0分0秒,精度达到千万分之一秒的值,即100纳秒一个点滴。

    由于时间存在时区的问题,故文件时间记录的是格林威治时间,而在电脑系统中显示时会自动加上时区的被偿时间。

NTFS标准信息数据结构

字节偏移 字节数 含义
00~07 8 创建时间
08~0F 8 最后修改时间
10~17 8 MFT改变时间
18~1F 8 最后访问时间
20~23 4 文件标志
0x0001-只读
0x0002-隐藏
0x0004系统
0x0020-存档
0x0040-设备
0x0080-常规
0x0100-临时
0x0200-稀疏
0x0400-重解析点
0x0800-压缩
0x1000-脱机
0x2000-没有为了快速搜索而编入索引
0x01000-加密
24~27 4 最高版本号
28~2B 4 版本号
2C~2F 4 分类ID
30~33 4 属性ID
34~37 4 安全ID,它是$Secure文件(安全文件)的索引,用于描述该文件的访问权设置
38~3F 8 配额管理,文件使用了用户配额中的多个字节空间
40~47 8 更新序列号(启用了变更日志时使用)。它是一个文件,以列表的形式记录了发生改变的文件,以便快速地确定在某一时间段内那些文件发生了变化而需要一个个地对文件进行单独查看。

标准信息属性示例:

主文件表MFT里的标准信息
标准信息
根据MFT的0x14~15得知第一个属性信息的偏移地址为:0x38,查看0x38处的内容,发现第一个属性信息内的标志为0x00000010,为NTFS标准信息类型。然后再要据 “常驻属性结构头“得知其总长度为0x60个字节。

  • 0x28~0x3b:0x00000010,标准信息类型
  • 0x3c~0x0f:0x00000060,属性的长度字节数,包括属性头
  • 0x40:00,常驻属性
  • 0x41:00,属性名长度为0
  • 0x42~0x43:0x18,属性名位置偏移
  • 0x44~0x45:0x00,表示非压缩、加密、稀蔬
  • 0x46~0x47:0x0000,属性ID
  • 0x48~0x4b:0x00000048,即72字节
  • 0x4c~0x4d:0x0018属必内容相对于本属性头起始位置的偏移,也即属性头的长度
  • 0x4e:0x00,索引标志
  • 0x4f:0x00,保留
    以上为属性头的内容,标准属性的内容如下:
    1600394447680
    文件标志为6=0x02+0x04,代表的是0x0002-隐藏,0x0004系统

时间的转换我们可以使用C语言函数进行转换:

SYSTEMTIME systime;
FILETIME    filetime;
FILETIME  localfiletime;

filetime.dwLowDateTime = strtoul(cf[i].m_szLowCreate, NULL, 10);
filetime.dwHighDateTime = strtoul(cf[i].m_szHighCreate, NULL, 10);
FileTimeToLocalFileTime(&filetime, &localfiletime);
FileTimeToSystemTime(&localfiletime, &systime);
_tprintf(TEXT("创建时间:%d-%d-%d %d:%d:%d\n"), systime.wYear,systime.wMonth,systime.wDay,systime.wHour,systime.wMinute,systime.wSecond);
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

Powered by bytekits.com,汇天下文字,成非凡梦想!!!