@port139 Blog

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

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

NirSoft の ESEDatabaseView を使い WebCacheV01.dat をパースすると、MSysObjects の内容を確認する事ができます。

Container_36 がダウンロードに関するテーブルになりますので、この定義情報を MSysObjects の CSV で確認すると ObjidTable 値 74、Name として ResponseHeaders の行を確認できます。
ResponseHeaders の ColtypOrPgnoFDP の値を確認すると 11 になっていますが、これはExtensible Storage Engine (ESE) Database File (EDB) format の資料 Page 26 からカラムタイプが JET_coltypLongBinary であると確認できます。

11 JET_coltypLongBinary
Large binary data
A fixed or variable size, raw binary column that can be up to 2147483647 bytes of size.

バイナリ値としてデータが保存されている為、ESEDatabaseView などで出力した CSV ではこれが文字として? 89 00 ... といった状態で出力される事になります。
Extensible Storage Engine (ESE) Database File (EDB) format の資料では、Page 29 で圧縮に関連し JET_coltypLongBinary が登場します。圧縮については、6.3.2. XPRESS compression の項目によると、1KiB(1024byte)以上の場合に使う事が出来るようですが、実際に WebCacheV01.dat で圧縮が使用されているのかという点があります。

試しに、非常に長い名前のフォルダを作成し、IE 10 を使いファイルをそのフォルダ配下にダウンロードしてみました。
ResponseHeaders の HEX パターンを RAW 検索するとレコードがヒットしてきましたので、手元でテストした範囲では値が 1024byte を超えていても圧縮されずデータが保存されている状況でした。
このテストで気がついたのですが、ESEDatabaseView で出力される CSV は、1024byte を超えるデータ部分は含まれておらず、1024byte までのデータ範囲のみが出力されるという事ですね。

なお、IE10 History Readerは 1024byte を超えている範囲も出力してくれています。ただ、Unicodeで日本語文字列が含まれていると出力結果が化けてしまうという注意点があったりはしますね。