试图理解Windows时间戳....

时间:2011-07-28 18:56:24

标签: windows timestamp computer-forensics

我的情况涉及手动重建原始数据,包括MFT记录和其他Windows工件。我知道MFT记录中的时间戳是64位整数,大端,并且是自01/01/1601 00:00:00 UTC以来的100纳秒间隔的数量计算的。我也熟悉Windows电子邮件标头时间戳,它由两个32位值组成,这些值组合形成一个64位值,也是自01/01/1601 00:00:00 UTC以来的100纳秒间隔数计算的

但是还有其他Windows时间戳具有不同的时期,例如SQL Server时间戳,我相信它使用1800年代的日期。关于这一切,我找不到太多文件。 Windows中使用的时间戳除了上面列出的两个以外?你怎么打破他们?

1 个答案:

答案 0 :(得分:1)

以下是解码Windows时间戳的一些代码:

static string microsoftDateToISODate(const uint64_t &time) {
/**
 * See comment above for more information on
 * SECONDS_BETWEEN_WIN32_EPOCH_AND_UNIX_EPOCH 
 *
 * Convert UNIX time_t to ISO8601 format
 */
time_t tmp = (time / ONE_HUNDRED_NANO_SEC_TO_SECONDS)
    - SECONDS_BETWEEN_WIN32_EPOCH_AND_UNIX_EPOCH;

struct tm time_tm;
gmtime_r(&tmp, &time_tm);
char buf[256];
strftime(buf, sizeof(buf), "%Y-%m-%dT%H:%M:%S", &time_tm);
return string(buf);
}

您对Mac时间戳的参考是: