知らないとヤバい!? 写真のExifから個人情報を守る方法まとめ!(http://photo-studio9.com/exif/)
[ サンプル画像3 ]
■ ファイル先頭部の解析
先頭の256バイトです。
次の順で確認します。
●'Exif' 文字列の確認
まず先頭部に 'Exif' という文字列をチェックします。(ないかもしれない?)
●TIFF Header 確認
その後に
TIFF Header
があることを確認します。ない画像もあり、なければ GPS 情報もありません。
この先頭アドレス(本例では 0C H)がオフセット補正量になり、指定オフセット量はこの分だけ加えて絶対位置を計算しなければなりません。
TIFF Headerは8バイト構成でつぎのようになっています。
●0th IFD = Primary IFD データのチェック
エントリ先頭は 14Hで、ここからが IFD です。
●GPS タグの有無チェック
上のエントリ表の中に GPSタグ があることを確認する。(なければ GPS 情報はありません)
GPS タグの 8825H(ビッグエンディアン)の有無をチェックする。
D6H から該当データの12バイトがあり、そのエントリの最終4バイトがGPS IFD へのオフセット(上例では 12DCH)を取得する。
■ GPS情報の取得
先頭から12E0Hバイト目からの256バイトです。
12E8H (=12DCH+0CH) バイト目からGPS データがあります。
01H
(南北),
02H
(緯度),
03H
(東西),
04H
(経度)
次の順で確認します。
●南北
タグ=01H のエントリでは、02H(ASCII 文字)の2バイトが指定されており、4FH='N'+ヌル がある。つまり北緯である。
●緯度
タグ=02H のエントリでは、05H(LONG,分数)が指定されており、オフセット 1312H なので、実アドレスは 1312H + 0CH = 131EH である。
131EH からの実データは、 23H(=35), 01H, 077EH(=1912),64H(=100),00H,01Hである。→ 35/1度1912/100分 or 35度19.12秒 or 35度19分10.8秒
●東西
タグ=03H のエントリでは、02H(ASCII 文字)の2バイトが指定されており、45H='E' +ヌルがある。つまり東経である。
●経度
タグ=04H のエントリでは、05H(LONG,分数)が指定されており、オフセット 132AH なので、実アドレスは 132AH + 0CH = 1336H である。
1336H からの実データは、 8BH(=139), 01H, 0CD6H(=3286),64H(=100),00H,01H である。→ 139/1度3286/100秒 or 139度32.86秒 or 139度32分51.6秒