##環境
Firefox 65.0
##目的
Firefox のキャッシュがどういう形式で PC に保存されているかを書いておきます。Firefox のバージョンによってキャッシュの構造も結構変わってるので、あくまでも現状(2019年3月現在)の情報です。
##保存場所
about:cache
で確認できます。
##index
cache2 ディレクトリの直下に index ファイルがあります。キャッシュの索引を管理するためのファイルのようです。最初の 12bytes がヘッダになっています。
↓ヘッダの構造
Offset | Size | Type | Description |
---|---|---|---|
0 | 4 | BE Integer | Version |
4 | 4 | BE Unix Date | Last Modified |
8 | 4 | - | Dirty Flag |
ヘッダの後は 44bytes 毎に個々のキャッシュの情報が保存されています。最初の 20bytes が Key(:URL) の SHA1 ハッシュ値で、その後の 24bytes に色んな情報が保存されています。(それぞれどういったパラメータなのかはよく分かりません😓)
Size | Type | Description |
---|---|---|
20 | SHA1Sum | Hash of Key |
4 | BE Integer | Frecency |
8 | - | Origin Attrs Hash? |
4 | BE Unix Date | Expiration Date |
2 | - | On Start Time? |
2 | - | On Stop Time? |
4 | - | Flags |
↑ 以下 44bytes 毎に同じ構造の繰り返しになってます。 |
##entries
entriers フォルダにキャッシュのデータが保存されています。URL の SHA1 ハッシュ値がファイル名となっていて、.jpg とか .css とか生データがそのまま保存されているわけではないです。構造としては下記のように生データの後に色々なメタデータ(最終更新日時、HTTP ヘッダ、データサイズなどなど)とともに保存されています。こちらもバージョンによって結構構造が変わっていて、解析するときにはバージョンチェックが必須です。
Size | Type | Description |
---|---|---|
[Data Size] | - | Raw Data |
4+([Data Size]/262144+1)*2 | - | Hash + Chunk Hash |
4 | BE Integer | Version |
4 | BE Integer | Fetch Count |
4 | BE Unix Date | Last Fetched Date |
4 | BE Unix Date | Last Modified Date |
4 | BE Integer | Frecency |
4 | BE Unix Date | Expiration Date |
4 | BE Integer | Key Length |
4 | - | Flags |
[Key Length] | String | :URI |
(Optional) | - | (HTTP Header, etc...) |
4 | BE Integer | Data Size |
##参考
cache2 - DXR
Firefox Cache2 Storage Breakdown←ちょっと情報が古い