@port139 Blog

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

FSUTILツールと初期化サイズ

Windows に標準で添付されている、FSUTIL(http://technet.microsoft.com/en-us/library/bb490642.aspx)ツールを使って、初期化サイズ(Initialized Size)があるファイルを作成するには、NTFSボリューム上で以下のコマンドを実行します。

C:\case\sparse>fsutil file createnew hoge.txt 1000
ファイル C:\case\sparse\hoge.txt が作成されました

このコマンドの結果、ファイルサイズ 1,000 byte のファイルが作成されます。EnCase 上から確認すると、Initialized Size は 0、Logical Size は 1,000 になっており、ファイルの中身は 0x00 になります。但し、初期化されていないので、EnCase 上では文字色が青色になります。
ファイルサイズが MFT レコード内の格納可能なサイズ(Residentな場合)、Initialized Size は設定されません。
初期化の位置は setvaliddata オプションを利用することで変更することが可能。例えば以下のコマンドを実行すると、初期化サイズは 500 で Logical Size は 1,000 になる。

C:\case\sparse>fsutil file setvaliddata hoge.txt 500
有効なデータ長が変更されました

この結果、EnCase 上では hoge.txt の FO 0〜499 までは 0x00 が青色から黒色になり、以降 500バイト分が初期化されてない青色として表示される。
setvaliddata と Valid Data Length (VDL) の詳細は、FSUTIL に下記のように記載されています。

Using setvaliddata

In NTFS, there are two important concepts of file length: the End of File (EOF) marker and the Valid Data Length (VDL). The EOF indicates the actual length of the file. The VDL identifies the length of valid data on disk. Any reads between VDL and EOF automatically return 0 in order to preserve the C2 object reuse requirement.

The setvaliddata parameter is only available for administrators because it requires the Manage Volume privilege. This feature is only required for advanced multimedia and system area network (SAN) scenarios.

Windows 上での VDL と EOF 間のデータの読み取り処理については、自動的にゼロが返される仕様ですね。EnCase などフォレンジックツールでこの領域を確認する場合は、初期化されてない領域はスラックというか未使用領域のデータがそのまま表示されることになります(ツールの仕様に依存)。