lain画集のBinHexエンコードされた画像を見る(5)
JPEGファイル詳細
JPEGファイルの中身を知らずに見分けのつかない1とlを総当たりで決定するのはまず無理(こちらで確認した限りで1かlのものが64個→2^64=18,446,744,073,709,551,616通りになる)なのでJPEGファイルの中身の情報を見ていく。
基本的に上記のサイトの内容を参考に説明していく予定…というか上記のサイトを見た方が早いし分かりやすいかも。
innocent.jpg全体構造
スタートマーカー (FF D8)とエンドマーカー(FF D9)の間に複数のセグメントとイメージデータが存在している。
各セグメントはFFから始まる2バイトのマーカー、データの長さが2バイト、データが"データの長さ"バイト、という構造になっている。
データの長さにはそれ自身の2バイトも含まれる(データ部分の長さ+2になる)。
innocent.jpgの全体の構造は以下のようになっている。
table: innocent.jpg全体構造
データ名 データのどの部分か バイト数 説明
スタートマーカー FF D8 2
JFIFフォーマット (APP0) FF E0 ... 18
フォトショップ資源データ (APP13) FF ED ... 522
カラープロファイル FF E2 ... 558
コメント FF FE ... 40
Adobeセグメント FF EE ... 16
量子化テーブル定義 FF DB ... 134
フレームヘッダー FF C0 ... 19
リスタートインターバル定義 FF DD ... 6
ハフマンテーブル定義 FF C4 ... 321
スキャンヘッダー FF DA ... 14
イメージデータ F4 04 ... 1402 リスタートマーカー有
エンドマーカー FF D9 2