バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-network-backnumber/
はじめに
Vector社BLFをバイナリエディタで覗いてみる回。
登場人物
博識フクロウのフクさん

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
バイナリエディタで覗いてみたところ?

じゃ、まずはバイナリエディタでBLFの中をみて、
仕様通りか確認していこう。

おー。

先ずは先頭にオブジェクトヘッダがあるはずなんで・・・。

あれ?

どうしたん?

いやー、なんかしょぱなからオブジェクトタイプが変な感じで・・・。


なんだろうね?

先頭に「LOGG」というmSignatureがあって、mHeaderSizeが0x90[byte]。
mObjectSizeがやけに大きいな・・・。
ファイルサイズ分あるんじゃないかなー。

早速雲行きが怪しい・・・。
2つ目のオブジェクトヘッダ

とりあえず、ヘッダサイズに0x90[byte]とあったので、
その分データをスキップしてみよう。


こんどのmSignatureは「LOBJ」って文字列っぽいね。
オブジェクトサイズは0x33CA[byte]でさっきほどでは無いけど、
これも結構大きなサイズだねー。

それもあるんだけど、
オブジェクトヘッダの後ろデータがあんまりルール的じゃないんだよねー。
なんというか、圧縮か暗号化されてるんじゃないかなー。

え?
そんなの仕様書に書いてた??

書いてなかったと思うが・・・。
とりあえず、オブジェクトサイズ分スキップしてみよう。
3つ目のオブジェクトヘッダ

じゃー、オブジェクトサイズである0x33CA分スキップしてみよう。


うーん、「LOBJ」がmSignatureだろうから2byteほどズレてるな・・・。
ちょっと、2byteずらすか。


これは4byteアライメントの仕様が暗黙的にあるのかも。

4byteアライメント?

うん。
データの境界のルールだね。
データの始まりを必ず4の倍数にするルール。

あーなるほど、0x345A=13402だと4の倍数じゃないから、
0x345C=13404が次のオブジェクトヘッダの先頭ってことか。

または、LOBJというSignatureが出てくるまで文字列走査しているか。

うーん、それもありそうだなぁ。

これは、仕様に定義されていないものが結構ありそうな感じだなー。

えー、解読は無理そうなの?

最悪、無理ってことにはなるけど、
なんとなくルールが見えて来たんで、
次回までにちょっと情報整理しておくよ。

頼んだよー。がんばってー。
まとめ

まとめだよ。
- BLFのオブジェクトヘッダを追っかけた。
- 仕様書にないオブジェクトタイプが存在。
- 実データ部は圧縮か、暗号化されている様子。
バックナンバーはこちら。
コメント