@port139 Blog

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

SANS ポスター:Windows Artifact Analysis(15) WebCacheV01.dat

esentutl /m /p1921 WebCacheV01.dat コマンドの出力結果では、Page Tagをパースして結果を表示してくれています。実際のデータ構造としては、ページの最後からページ先頭に向かって 4バイトづつ Page Tag が記録されています。

TAG 0 cb:0x0010 ib:0x0000 offset:0x0050-0x0060 flags:0x0000 ( )
TAG 1 cb:0x04f3 ib:0x0bac offset:0x0bfc-0x10ef flags:0x0003 (vd )
TAG 2 cb:0x00fd ib:0x0010 offset:0x0060-0x015d flags:0x0003 (vd )
TAG 3 cb:0x04d1 ib:0x06db offset:0x072b-0x0bfc flags:0x0003 (vd )
TAG 4 cb:0x04a1 ib:0x178c offset:0x17dc-0x1c7d flags:0x0001 (v )
TAG 5 cb:0x00fd ib:0x168f offset:0x16df-0x17dc flags:0x0003 (vd )
TAG 6 cb:0x04f3 ib:0x119c offset:0x11ec-0x16df flags:0x0003 (vd )
TAG 7 cb:0x00fd ib:0x109f offset:0x10ef-0x11ec flags:0x0003 (vd )
TAG 8 cb:0x00fd ib:0x020a offset:0x025a-0x0357 flags:0x0003 (vd )
TAG 9 cb:0x00fd ib:0x010d offset:0x015d-0x025a flags:0x0003 (vd )

最初の TAG 0 はディスク上では 10 00 00 00 という並びになっています。Extensible Storage Engine (ESE) Database File (EDB) format specification の Page 11 を参考にパースしてみます。

00 00 ⇒ 0000 0000 0000 0000 

15bit がオフセット位置となっていますが、00 ですのでページヘッダ 80バイト(0x50)からでオフセット位置としてはゼロ扱い。
次のサイズが 15bit で 16(0x10) となります。

00 10 ⇒ 0000 0000 0001 0000

結果としてページヘッダ オフセット 80 以降の 16バイトが TAG 0 のデータという事になります。
次に TAG 1 も確認してみます、ディスク上では F3 04 AC 0B という並びになっています。
まず開始位置。

0B AC ⇒ 0000 1011 1010 1100 (2988+80 = \x0BFC)

次に長さ。

04 F3 ⇒ 0000 0100 1111 0011 (1267)

データの終わりとしては 2988+80+1267=\x10EF となります。