@port139 Blog

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

NTFS $BadClusと$Badの中身

NTFSで不良ブロックを管理している$BadClusファイルですが、NTFS DocumentationのP 58に詳細が説明されています。

$BadClusは名前付ストリームとして$Badを属性として持っており、$Badファイルはボリュームと同じサイズを持っています。このファイルを誤って選択してコピーすると大変なことになってしまうわけですね。

$Badファイルでは、DataRun構造を利用して不良クラスタの位置を保存していくという事になります。

不良セクタを含むクラスタについては、$Bitmapファイル内では使用状態となり、他のファイルが該当クラスタを利用する事が無いようになっています。

 

サンプルとして、昨日のAPPENDIX A: DETAIL PROCESS OF HOW DATA IS HID IN FAKED BAD CLUSTERS(http://www.forensicfocus.com/Content/pid=66/page=8/)の $Bad 構造を確認してみたいと思います。

スクリーンショット画像ファイルを見ながら転記していますので、もしミスっていましたら教えていただければです。

 

80 00 00 00 属性タイプ

58 00 00 00 属性の長さ(0x58⇒88)

01 内蔵フラグ

04 名前の長さ

40 00 名前のオフセット(0x40⇒64)

00 00 Flags

01 00 属性ID

00 00 00 00 00 00 00 00 Runリストの開始VNC

7E B4 0B 00 00 00 00 00 Runリストの終了VNC

48 00 Data Runへのオフセット(0x48⇒72)

00 00

00 00 00 00 パディング

00 F0 47 BB 00 00 00 00 属性の物理サイズ

00 F0 47 BB 00 00 00 00 属性の論理サイズ

00 00 00 00 00 00 00 00 ストリームの初期化サイズ

24 00 42 00 61 00 64 00 ストリーム名($BAD)

31 0C 88 DA 05 03 73 B4 08 00 00 00 Data Run

 

Data Runの先頭 31 を 3 と 1 に分解、1が隣の 0C を示すのでクラスタ数は12。

上位4bitは 3 なので 88 DA 05 がクラスタ位置という事になります。

88 DA 05 を10進数に戻すと 383,624 となりクラスタ番号 383,624 から 12 クラスタ分という指定になりますね。