2011-07-28 36 views
1

我處於涉及手動重建原始數據,以包括MFT記錄和其他Windows工件的情況。據我所知,MFT記錄中的時間戳是64位整數,大端,並且自UTC 01/01/1601 00:00:00以100納秒間隔計算。我也很熟悉Windows電子郵件標題時間戳,它由兩個32位值組成,它們組合形成一個64位值,也是自01/01/1601 00:00:00以來的100納秒間隔數計算的。 。試圖使Windows時間戳的意義....

但還有其他Windows時間戳具有不同的時代,例如SQL Server時間戳,我相信這些時間戳使用的是1800年代的日期。我無法找到所有這些文件。除了上面列出的兩種,Windows中使用哪些時間戳?你如何分解它們?

+3

看一看[此](http://blogs.msdn.com/b/oldnewthing/archive/2003/09/05/54806.aspx)。 –

+0

這很有幫助,謝謝。你知道任何好的Mac時間參考,Mac絕對時間以外的東西嗎? – Dan

+0

我從來沒有在Mac上工作,所以我不能給你任何有用的建議。 :( –

回答

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時間戳參考:

+0

感謝您的Mac鏈接,如果您注意到,我寫了您鏈接到的堆棧溢出引用;) – Dan

+0

我不確定如何處理此代碼。我的目標是瞭解時間戳的工作方式。我真的不明白我在代碼中看到的是什麼。最終的目標是完成這個wiki:http://code.google.com/p/opensourceforensics/wiki/TimestampConversion,然後在python中編寫一個多平臺工具來解碼所有這些時間戳。所以我理解他們背後的數學勢在必行,而不僅僅是依靠各種語言的系統功能來做到這一點。感謝您的幫助,我欣賞它。但是理解所有這些格式的幫助也是非常有用的。 – Dan

+0

我瞭解我的問題,我的目標是瞭解其他類型的Windows時間戳,例如SQL Server中使用的時間戳。 – Dan