IEのindex.datの構造 - 適宜覚書-Fragments

IEのindex.datの構造

   

不正確な表現になるが、index.datは閲覧履歴やクッキーの情報を記録したバイナリファイルだ。

ヘッダ

以下の情報が含まれる。

  • ファイルサイズ
  • ハッシュテーブルのアドレス
  • インターネット閲覧キャッシュのディレクトリパス

とりあえずバイナリエディタでContent.IE5\index.datを開いてみて、頭からみて最初のNULL(0x00)を探す。見つけたら、その次(0x1C)から4bytes分を抜き出す。例えば00-80-17-00。この部分がファイルサイズを示すが、そのままではなく逆順にする。この例では00-17-80-00で16進数0x178000となり、1540096バイト(1504KB)となる。勿論こんなことしないでファイルのプロパティを見ればすぐ分かると言えばその通りだが…。

次はハッシュテーブルの位置を示すアドレスだが、これはファイルのプロパティでは分からない。これは先のファイルサイズのデータの直後(0x20)から4bytes分に書かれている。00-50-00-00なので先と同じ手法で逆順にして00-00-50-00でこれは0x5000なので5000あたりを見ると48-41-53-48=>HASHと書かれている。

キャッシュのディレクトリは0x50から12bytes毎の範囲で頭8bytes分にデータとして含まれる。手元の例では、

  • 57 38 37 52 4E 4C 32 46 BE 02 00 00
  • 51 30 4A 42 52 58 38 39 BF 02 00 00
  • 4A 42 4C 41 51 54 31 38 BF 02 00 00
  • 4F 38 39 4D 34 30 34 38 00 00 00 00

で実効的には

  • 57 38 37 52 4E 4C 32 46
  • 51 30 4A 42 52 58 38 39
  • 4A 42 4C 41 51 54 31 38
  • 4F 38 39 4D 34 30 34 38

となり、この内容は

  • W87RNL2F
  • Q0JBRX89
  • JBLAQT18
  • O89M4048

となる。で、実際どうかと確かめるには、Content.IE5フォルダを見れば良い。要するに単にこれらの情報を見たいなら、ファイルサイズやフォルダ名はもっと楽に調べられるのだが、データとして抜き出したい場合はindex.datから取り出すのが妥当というだけのことだろう。

ちなみに、Content.IE5フォルダやHistory.IE5フォルダはカレントユーザ分はそのまま開こうとしてもプロセスで掴まれて開けないが、コピーをすればindex.datは入手出来る。フォレンジックのように中身が変わっては困るというような場合は、他OS経由でindex.datを抜き出すという方が良いのかな?とりあえず、上記は確認用に手ごろなデータが無い場合取り易くするための便宜的な手。

ハッシュテーブル

せっかくハッシュテーブルの位置がヘッダから分かったので今度はこの中身。まずハッシュテーブル長だが、先程見つけた0x5000のHASHと書かれた0x5005から4bytes(ここからはヘッダの各パラメータと違い、そのindex.dat毎に異なる)がそれだ。20-00-00-00でこれは0x20で32。index.datのサイズが0x80 (128)bytes毎で変化することからハッシュテーブルは32*128=4096bytes(4kbytes)の固定長と看做されている。試しに0x5000に4096(0x1000)足すとOx6000でその位置には55-52-4CでURLと書かれているが、この前までが0x5000から始まる最初のハッシュテーブルの範囲である。URL以下は閲覧履歴のURLデータである。

次のハッシュテーブル位置は00-D0-01-00=>0x1d000なので0x1d000行を探すとHASHと書いてあるのを見つけられる。決して前のハッシュテーブルの直後からではない。

ぬー。眠いので中断。続く。

適宜覚書-Fragmentsは、筆者が興味をもった様々な情報やネタを筆者が忘れても後で思い出せるよう覚書として公開するBlogです。Google Chrome拡張、Facebook、Google、Twitter、Windows、各種Webアプリなどを扱うことが多いです。この覚書が、もし何かお役立ちになれば幸いです。

 - 覚書