Hatena::ブログ(Diary)

くらさば

カテゴリ毎のリンク:[Snort][ACID][BASE][ツール][資料]

2003 | 08 | 09 | 10 | 11 | 12 |
2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 02 | 08 |
2009 | 08 | 09 |
2010 | 03 | 04 |
2011 | 01 | 11 |
2012 | 05 |

2007-03-23 晴れ

[] Internet ExplorerCookie ファイルの書式

Internet Exlorer の Cookie データは、Windows 2000 以降の OS ではテキスト形式のファイルとして以下の場所に保存される。

C:\Documents and Settings\ユーザ名\Cookies

ファイルには以下の形式で Cookie のデータが記述されている。

variable_name
value
www.example.com/hoge/
1024
415452544
29847586
1068952320
29846580
*

各行の意味は以下の通り。

variable_name変数名
value
www.example.com/hoge/Cookie を発行したサイトのアドレス
1024フラグ
415452544有効期限の下位32bit値の符号付き整数表現
29847586有効期限の上位32bit値の符号付き整数表現
1068952320作成日時の下位32bit値の符号付き整数表現
29846580作成日時の上位32bit値の符号付き整数表現
*デリミタ


有効期限および作成日時は Win32 FILETIME 形式の値になっている。

Win32 FILETIME 形式とは、1601/1/1(UTC) からの経過時間を 100 ナノ秒で表した 64bit の値である。

日付の値は、32bit 単位で上位と下位に分割されているため、元の値を得るためには結合する必要がある。また、それぞれの値は符号付き整数値として記述されているので、負の値になる事もある。


上記例の有効期限の値を 2 進数で表現すると

29847586415452544
0000000111000111011100000010001000011000110000110100110110000000

となり、この 64bit の値は 10 進数では、

128194406150000000 = 0000000111000111011100000010001000011000110000110100110110000000

となる。


この値を UNIX 時間へ変換するためには、次の式を使用する。

UNIX 時間 = (Win32 FILETIME 時間) * (10^-7) - 11644473600

11644473600 という数値は、1601/1/1(UTC) から UNIX 時間の起点である 1970/1/1(UTC) までの差分秒数である。


上記例の有効期限をこの式に当てはめ UNIX 時間に変換すると

1174967015 = (128194406150000000) * (10^-7) - 11644473600

となる。

さらに日付表示に変換すれば、2007/3/27 03:43:35(UTC) となる。


ちなみに日時の上位 32bit 値を 1 増やすと 429.4967296 秒、約 7 分進む事になる。


参考資料

Forensic Analysis of Microsoft Internet Explorer Cookie Files (pdfファイル)

トラックバック - http://d.hatena.ne.jp/RIP/20070323/p3
リンク元