fte
typeカラム
fteを実行するとタブによってはtypeカラムにタイムスタンプの種類を出力します。記録されている4つのタイムスタンプ(ファイル作成日時: crtime, 最終更新日時: mtime, エントリ更新日時: ctime, 最終アクセス日時: atime)値から、ファイルがどこで、どのようにして生成されたか、最も妥当と判断した情報を出力しています。
fteが扱う分類について以下に記載します。
FAT
FAT上で保持するタイムスタンプの精度に一致する場合です。
- atime - 日単位
- mtime - 2秒単位
- ctime - なし (fte上は1601/01/01 00:00:00+タイムゾーンの表示)
- crtime - 10ミリ秒単位
exFAT
exFAT上で保持するタイムスタンプの精度に一致する場合です。
動作環境
fteはMicrosoft .NET Framework 2.0以上およびVisual C++ 2008ランタイムがインストールされている環境で動作します。
条件を満たす環境ではfte.exeを実行するだけで起動しますが、エラーが出る場合は以下から必要なパッケージを入手してインストールする必要があります。
.NET Framework ダウンロード
http://msdn.microsoft.com/ja-jp/netframework/aa569263.aspx
Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)
http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=A5C84275-...
INDX アーティファクト(2)
INDX アーティファクト(1)でも書いた通り、NTFSのフォルダ構造では$INDEX_ROOT属性と$INDEX_ALLOCATION属性を使います。$INDEX_ROOTはResidentな属性でありMFTエントリ内のみを保存場所に使いますが、$INDEX_ALLOCATION、いわゆるINDXレコードはNon-Residentな属性でありクラスタを割り当てます。例えば図のように、ファイル/フォルダの作成、更新、削除の処理の組み合わせによっては、フォルダに相当するMFTエントリが上書きされてもINDXレコード使っていたクラスタは上書きされない場合があります。
INDX アーティファクト(1)
INDXタブではNTFSのフォルダコンテンツのうち、INDXレコード($INDEX_ALLOCATION属性)をパースして結果を表示します。
MFT アーティファクト
fteのMFTタブではNTFS内の$MFTファイルを参照して各ファイル/フォルダのタイムスタンプをパースします。
MFTエントリ
NTFSの先頭には$Bootファイルがあり、1クラスタのセクタ数や$MFTファイルの開始位置などの情報が格納されています。$MFTファイルは固定サイズのエントリで構成されており、原則1エントリで1つのファイル、フォルダ(以降オブジェクトと表現)のメタデータを管理します。
各エントリの先頭は必ずシグネチャ"FILE"ではじまるヘッダ領域があり、その中にリンク数、フラグ(ファイル/フォルダ/未使用)、IDなどの情報が含まれます。ヘッダの後は属性情報で構成されており、様々な属性によって構造は様々です。
ObjectID アーティファクト
ObjectID(オブジェクトID)についてまとめています。ObjectIDの仕組みをご存じの方には目新しい情報は含まれていません。fteの実装は後半のfteの処理内容に書いています。
ObjectIDの仕組み
NTFSではMFTエントリの属性として、$OBJECT_ID(0x40)が定義されておりファイルに付与することができます。この属性はDistributed Link Trackingサービスで使われています。Distributed Link TrackingサービスはWindows 2000からデフォルトでONになっており、例えばあるファイルのショートカットを作成して、その後にファイルを移動しても、ObjectIDの紐付けによりショートカットはファイルの場所を追跡できます。このように、ObjectIDは基本的にショートカットファイル(拡張子lnk)が作成された時点でファイルとショートカットファイル内に付与されます。