CP-500徹底解剖


Brief summary for English-speaking people

This page contains "CP-500 inside out", an detailed analysis about EPSON CP-500 generated jpeg file. jpeg files generated by CP-500 contains the following useful information: To extract those parts, you can use cp500thumb.pl and cp500comment.pl. (NOTE: these may not work on DOS/Windows-based perl implementation due to autoconversion of line terminator) Read the source code for details.

NOTE: the camera called "EPSON PhotoPC500" in US has product code CP-200 in Japan. This page describes CP-500, which is totally different from EPSON PhotoPC500.


ファイル構造

外側は普通のjepgなんだけど、内緒のおやくだちデータが2箇所に入ってます。

横80ピクセルのサムネイル

実は、CP-500のjpegファイルにはAPP0マーカがふたつある。 ひとつめは標準的なJFIF signatureで、 ふたつめが怪しい。
ふたつめのAPP0以降は、 のようになっています。 この、JPEGファイル部分を取り出すと、横幅80ピクセルの サムネイル画像になってます。
サムネイルを取り出すツールを用意してございます: cp500thumb.pl
0000000  ff d8 ff e0 00 10 4a 46 49 46 00 01 02 01 00 f0
	 ~~~~~JPEGのmagic number
	       ~~~~~APP0マーカ
0000010  00 f0 00 00 ff e0 0f ba 4a 46 58 58 00 10 ff d8
		     ~~~~~ふたつめのAPP0マーカ	   ~~~~~ここからサムネイル
0000020  ff db 00 43 00 03 02 02 03 02 02 03 0303 03 04

撮影画像のデータ

上記のサムネイルを含んだAPP0マーカの次に、APP12マーカがある。 ここは主にテキスト(一部バイナリ)で、例えば以下のようになっています。 バイナリを流さないために、vis -oしました。 バックスラッシュのあとの3桁の数字を8進数だと思って読んでね。 テキスト部分の行末は\r\nなんで、\015がいちいち出力されてますが まあ我慢してね。 意味は推して知るべし、ってかんじですか。
APP12マーカ以降を取り出すツールを用意してございます: cp500comment.pl
SEIKO EPSON CORP.  \000 713\015
[picture info]\015
TimeDate=852078321\015
Shutter=129443\015
Flash=0\015
Resolution=3\015
Protect=0\015
ContTake=0\015
ImageSize=1024-768\015
ColorMode=1\015
FNumber=F2.8\015
Zoom=x1.0\015
Macro=0\015
[camera info]\015
Type=SR52 \015
Serial#=#00000001\015
Version=v52-71\015
ID=EPSON DIGITAL STILL CAMERA\015
[diag info]\015
PicLen=384172\015
ThmLen=4016\015
Q=96\015
R=130\015
B=342\015
s0=8253,0,18846,33e8,1f9a3,792a,0,1010000,0,a1c0ae2,c040cdd,dfa0ed2,ffdb437,1420037,0,0,0,0\015
T0=389,0,3,2beec,b1,1f6e5\015
[user]\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015
[end]\015
\000\000\000[file info]\000\250\000\000\000\000\000\000\000\001\000\000\000\0002\311\256\361\000\005\334\254\017\260\000\37701010001JPG \000\001\371\243\000\000\000\202\000\200\001V\000\003`\000\257\000\000\000\377\377\377\377\004\000\003\000\000\001\000\000\000\000\000\000\000\000\202S\000\000\000\000\000\001\210F\000\0003\350\000\001\371\243\000\000y*\000\000\000\000\001\001\000\000\000\000\000\000
\034
\342\014\004\014\335\015\372\016\322\017\375\2647\001B\0007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\211\000\000\000\000\000\000\000\003\000\002\276\354\000\000\000\261\000\001\366\345(b@\034\361\2126+A\026F\034\347\223R,\316p1\236({	\\1\317\315\322\236\222B\207\216?
C\260\3571[\0046j9pF8\244\220\356g\310\27195\027\364\253\216\206\022Z\200\240f\254M\\;\214\321\200jZ\036\241\216);\003H\253v\033\216\005&:
もどる