NTFS MAC 时间(十六进制)

NTFS MAC 时间(十六进制)

我正在使用 EnCase 和十六进制编辑器来分析虚拟驱动器。

EnCase 表示这个十六进制:5FBF60C54F2CCF01

是日期/时间 (mm/dd/yy):02/17/14 09:18:54 (PM)

我以前曾成功计算出日期/时间,但无法匹配上面的内容。

如果有人可以确认 EnCase 是正确的并向我解释,那就太好了。

答案1

这里. (“NTFS 时间戳的解释”,摘自 forensicfocus.com)

根据 Windows 软件开发工具包中“FILETIME”数据结构的文档,NTFS 文件时间戳是“一个 64 位值,表示自 1601 年 1 月 1 日(UTC)以来 100 纳秒间隔的数量”。

从此内部格式转换为更适合人类解释的格式由 Windows 系统调用 FileTimeToSystemTime() 执行,它从时间戳数据中提取年、月、日、时、分、秒和毫秒。在其他平台(例如 Unix)上,或在有意独立于平台的软件(例如 Perl 或 Java)中,需要使用其他转换方法。

FileTimeToSystemTime() 的文档以及实际测试表明,要转换的 FILETIME 值必须为 0x7FFFFFFFFFFFFFFFF 或更小。这对应于时间 30828-09-14 02:48:05.4775807。

(等等等等)

/编辑:虽然你的日期应该是今年 2 月 20 日星期六23464(没有拼写错误)。你的 NTFS 可能坏了吗?

这里'计算器。使用“filetime”设置,并确保以十进制形式输入数字。)

答案2

您可以在 WinDbg 中解决这个难题。只需启动任何程序并附加到它即可。

然后,将数据写入内存中:

0:001> eq 7731000c  5FBF60C54F2CCF01

并将其解释为 ole32!FILETIME

0:001> dt ole32!FILETIME 7731000c  
 Feb 20 16:57:50 23464
   +0x000 dwLowDateTime    : 0x4f2ccf01
   +0x004 dwHighDateTime   : 0x5fbf60c5

正如你所见,这还远在未来。

但是,EnCase 可能会按字节显示写入磁盘的值,因此您会遇到 LSB/MSB 问题。让我们按字节输入数据:

0:001> eb 7731000c 5F BF 60 C5 4F 2C CF 01

以 64 位格式输出,注意字节现在是相反的顺序。

0:001> dq 7731000c  L1
7731000c  01cf2c4f`c560bf5f

解释为 FILETIME:

0:001> dt ole32!FILETIME 7731000c
 Feb 18 02:18:54 2014
   +0x000 dwLowDateTime    : 0xc560bf5f
   +0x004 dwHighDateTime   : 0x1cf2c4f

但不确定为什么会差几个小时。也许是时区问题。

相关内容