@port139 Blog

基本的にはデジタル・フォレンジックの技術について取り扱っていますが、記載内容には高確率で誤りが含まれる可能性があります。

USN と range tracking

fsutil コマンドの「enablerangetracking」オプションを確認してみます。テスト環境は Windows 10 です。

この機能については、マイクロソフト社の下記URLで説明されています。

Tracking modified ranges of a file より引用

The NT File System (NTFS) team has added a new feature to Windows. USN Journal will output an update sequence number (USN) record containing modified ranges for a file upon close. A new record type, USN_RECORD_V4 has been introduced to record these changed ranges of a file.

F: ドライブで USN ジャーナルを有効にします。デフォルトでは「Write range tracking: Disabled」となっています。 

Range trackingを有効にします。

fsutil usn enablerangetracking f:

f:id:hideakii:20171015075255p:plain

Range trackingが有効になりました。レコードが生成される条件は下記となっています。

USN_RECORD_V4 structure (Windows) より引用
A USN_RECORD_V4 record is only output when range tracking is turned on and the file size is equal or larger than the value of the RangeTrackFileSizeThreshold member. The user always receives one or more USN_RECORD_V4 records followed by one USN_RECORD_V3 record.

今回のテストで利用するJPEGファイルのサイズは 4,022,324 バイトです。
「Write range tracking file size threshold: 1048576」よりも、サイズの大きい JPEG ファイルを利用します。

JPEG ファイルの末尾に1バイト(0xFF)を追加します。その後、USNジャーナルを確認すると、V4 レコードが追加されている事を確認できます。

f:id:hideakii:20171015075821p:plain

USN_RECORD_V4 structureUSN_RECORD_EXTENT structure を参考に、USN V4レコード 176 のバイナリデータをパースしてみます。

50000000 RecordLength ⇒ 80
0400 MajorVersion
0000 MinorVersion
27000000000001000000000000000000 FileReferenceNumber
05000000000005000000000000000000 ParentFileReferenceNumber
B000000000000000 USN ⇒ 176
03000080 Reason
00000000 SourceInfo
00000000 RemainingExtents
0100 NumberOfExtents
1000 ExtentSize
00403D0000000000 LONGLONG Offset ⇒ 4014080

0040000000000000 LONGLONG Length ⇒ 16384

 

一般的なUSNパースツールが、USN V4 レコードを可視化するかは未確認です。

 

参考URL:

 

msdn.microsoft.com

f:id:hideakii:20171015081906j:plain