2011-07-28 14 views
1

私はMFTレコードやその他のWindowsの成果物を含めるために、生データの手動での再構築に関係しています。私は、MFTレコードのタイムスタンプはビッグエンディアンの64ビット整数で、01/01/1601 00:00:00 UTCから100ナノ秒の間隔で計算されることを理解しています。また、Windowsの電子メールヘッダーのタイムスタンプにも精通しています。これは、1つの64ビット値を構成する2つの32ビット値で構成され、01/01/1601以降の100ナノ秒間隔で計算されます00:00:00 UTC 。Windowsのタイムスタンプを理解しようとしています....

しかし、私は1800年代の日付を使用すると信じているSQL Serverのタイムスタンプなど、異なるエポックを持つ他のWindowsタイムスタンプがあります。私はこのすべてについて多くの文書を見つけることができません。上記の2つ以外のWindowsではどのようなタイムスタンプが使用されていますか?あなたはどうやってそれらを壊しますか?ここで

+3

は、[このを見てください](http://blogs.msdn.com/b/oldnewthing/archive/2003/09/05/54806.aspx)。 –

+0

おかげさまで、ありがとうございました。あなたは、Mac Absolute Time以外のものについて、良い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リンクのおかげで、あなたが気付いた場合、私はあなたにリンクされたStack Overflowリファレンスを書いた;) – Dan

+0

本当にこのコードをどうするべきか分からない。私の目標は、タイムスタンプの仕組みを理解することです。あなたのコードで何を見ているのか分かりません。最終的な目標は、このwikiを終了することです:http://code.google.com/p/opensourceforensics/wiki/TimestampConversionそして、これらのタイムスタンプをすべてデコードするマルチプラットフォームのツールをPythonで記述します。ですから、私はそれらの背後にある数学を理解し、これを行うためのさまざまな言語のシステム機能に頼るだけではありません。あなたの助けをありがとう、私はそれを感謝します。しかし、これらのフォーマットをすべて理解する助けがあれば、非常に役に立ちます。 – Dan

+0

私は私の質問にあるものを理解し、私の目標は、SQL Serverで使用されているような追加のタイプのWindowsタイムスタンプを理解することです。 – Dan

関連する問題