web-dev-qa-db-ja.com

16進数のNTFSMACタイム

EnCaseとHexEditorを使用して仮想ドライブを分析しています。

EnCaseによると、この16進数は次のとおりです。_5FBF60C54F2CCF01_

は日付/時刻(mm/dd/yy)です:02/17/14 09:18:54 (PM)

私は以前に日付/時刻をうまく計算しましたが、上記に一致することはできません。

誰かがEnCaseが正しいことを確認し、それを私に説明できれば、それは素晴らしいことです。

1
Andrew

Se ここ 。 (forensicfocus.comの「NTFSタイムスタンプの解釈」)

Windowsソフトウェア開発ツールキットの「FILETIME」データ構造のドキュメントによると、NTFSファイルのタイムスタンプは「1601年1月1日(UTC)以降の100ナノ秒間隔の数を表す64ビット値」です。

この内部形式から人間の解釈により適した形式への変換は、タイムスタンプデータから年、月、日、時、分、秒、およびミリ秒を抽出するWindowsシステムコールFileTimeToSystemTime()によって実行されます。他のプラットフォーム(Unixなど)、または意図的にプラットフォームに依存しないソフトウェア(PerlやJavaなど)では、他の変換方法が必要です。

FileTimeToSystemTime()のドキュメント、および実際のテストでは、変換されるFILETIME値は0x7FFFFFFFFFFFFFFF以下である必要があることが示されています。これは、時間30828-09-14 02:48:05.4775807に対応します。

(などなど)

/ edit:あなたの日付はその年の2月20日土曜日になりますが23464(タイプミスなし)。 NTFSはおそらく無効になっていますか?

ここ は電卓です。「filetime」設定を使用し、必ず10進数で数値を入力してください。)

0
SadBunny

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

しかし、なぜそれが数時間ずれているのかわかりません。おそらくそれはタイムゾーンの問題です。

0
Thomas Weller