トヨタ純正カーナビのメモリ地点情報のMPT.BINファイルの
フォーマット少し解析の2です。
前回、バイト単位に上位下位4Bit入れ替えたファイルであることは
判りましたから、後は各登録データの持ち方を見れば殆ど判ってきます。
下記は前回同様東京タワーを2件登録し、上位下位4Bit入れ替えたダンプです。
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 0123456789abcdef
-------------------------------------------------------------------------
0000 88 88 88 88 4d 50 54 00 06 01 00 02 30 30 30 30 ・・MPT.....0000
0010 00 00 00 4d 00 01 00 47 51 31 63 7d a7 10 00 00 ...M...GQ1c}ァ...
0020 00 00 ff ff ff ff ff ff 08 93 8c 8b 9e c0 dc b0 .........東京タワー
0030 31 ff 03 12 34 56 78 9f ff 03 c0 dc b0 14 93 8c 1...4Vx...タワー.東
0040 8b 9e 93 73 8d 60 8b e6 8e c5 8c f6 89 80 95 74 京都港区芝公園付
0050 8b df ff ff 00 01 00 ff ff 00 00 00 00 00 00 00 近..............
0060 4e 00 02 21 47 51 31 63 7d a7 10 00 00 00 00 ff N...GQ1c}ァ......
0070 ff ff ff ff ff 08 93 8c 8b 9e c0 dc b0 32 ff 03 ......東京タワー2..
0080 12 34 56 78 9f ff 04 c0 dc b0 c6 14 93 8c 8b 9e .4Vx...タワーニ.東京
0090 93 73 8d 60 8b e6 8e c5 8c f6 89 80 95 74 8b df 都港区芝公園付近
00a0 ff ff 00 01 00 ff ff 00 00 00 00 ...........
見ると赤文字の所が前回1件の時"01"だったのが"02"と言うことは
ここは登録件数を表すのが判る。でナビの最大登録件数が
400件ということは1byteでは足りないのでoffset:01-0bの2bteで表すのだろー
すると"00,02"で2件ということはBigインディアンの様だ。
次の緑"30"はパスワードのASCIIそのまま。
次の青の"4d"は自データ長を示すのが判る。で何バイトで表すか?
自然に考えると1件目データ頭はoffset:0010なので、"00,00,00,4d"の
やはり4ByteのBigインディアンと考えるべきだろー
で、次のピンクが2ByteでデータNo。次の紫は2件目を特別メモリ1にしてたので
通常0x00,特別メモリ0x2?のデータ種別と判る。
後は基本的にデータ長1Byte+データで構成されてるのが直ぐにわかる。
(電話データだけ何故か1数字4Bitにケチってかつ"FF"+"データ"+"FF"なのが不思議なのだが)
そして一番大事な座標データ。下線の6Byteが位置データであることは、
幾つかの異なる場所を登録してみれば判る。
ただ、うまく合わない。最初の"47"の頭7Bitを見ると"35"で東京タワーの
緯度に当たるが、うまく合わない。
一時マップコードかとも思ったがマップコードの特性の利用度に応じた重み付けではまして合わない。
->完全に詰まった。
でーその頃"MTP.BIN"で検索して出て来たのはオクでオービスデータ売りの方と
katonaさんの日記ぐらいでかつ、去年の7月位のねたで、やはり情報が無いとの
話だったので、まー反応は貰えないだろーナーと思いつつも4Bit入れ替えの話を
その去年の7月の日記にコメントしてみた。
すると、反応があってkatonaさんご自身でも4Bit入れ替えてみて、位置情報も
考察していただけておかげさまでほぼ解析完了となった次第です。