【Ethernet】車載ネットワーク その⑩【BLFファイル⑩】

車載ネットワーク

バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-network-backnumber/

はじめに

zlib解凍ずみ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

zlib解凍ずみBLFをバイナリエディタで見てみる。

フクさん
フクさん

前回はテキストエディタでオブジェクトの配置状況を雰囲気で見たけど、
今回はバイナリエディタで追いかける。

太郎くん
太郎くん

で、実際のフレームはそこそこ後ろの方にあるって話だったね。

フクさん
フクさん

うん。
最初に出てくるのはCANフレームだね。

BLF内のCANフレーム

フクさん
フクさん

というわけで
まずはCANフレームがどのように埋まっているか見てみる。

フクさん
フクさん

DLCは8。
CANIDは0x111。
データは、
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88
って感じで入っているようだ。

太郎くん
太郎くん

たしかにCANっぽい。

太郎くん
太郎くん

なんでここがCANって分かったの?

フクさん
フクさん

オブジェクトヘッダのmObjectTypeを見た・・・
と言いたいところなんだけど、
仕様書には具体的な数値は無かったんだよねー。
よって、ほぼ勘だ。

太郎くん
太郎くん

(すげーな。いやマジで。)

フクさん
フクさん

ちなみにCANフレームのmObjectTypeは0x56で、
適用した構成は仕様書内で記載されているVBLCANMessage2になる。
これはオブヘクトヘッダ内のオブジェクトサイズから予測した感じだね。

太郎くん
太郎くん

(すげーなー。と思う反面、こえーな。)

BLF内のEthernetフレーム

フクさん
フクさん

次はEthernetフレーム。

太郎くん
太郎くん

mFrameLengthが1514か。

太郎くん
太郎くん

となるとmFrameDataに埋まっているのが1514byteってことかな?

フクさん
フクさん

そうなるね。
ちなみにmObjectTypeは0x78で
仕様書内のVBLEthernetFrameExが該当すると思われる。

太郎くん
太郎くん

mFrameDataの先頭の方が
0x01 0x00 0x5E 0x00 …
は何なのかな?

フクさん
フクさん

あー、たぶんMACアドレス・・・。
なんだけど。
これの場合はたぶんマルチキャスト用のMACアドレスだな。

太郎くん
太郎くん

マルチキャスト用MACアドレス??
何それ?
普通のMACアドレスと違うってこと?

フクさん
フクさん

そうだねー。
そのうち説明するんで、
現時点では「マルチキャスト用MACアドレス」であって、
「NetworkInterfaceに割り付けられたMACアドレス」とは異なる。
って程度の認識でいてよ。

太郎くん
太郎くん

じゃー、それで覚えてく。
(これは伏線?)

次回の方針

フクさん
フクさん

とりあえず、これらの解析情報を元に、
zlib解凍済みのBLFを分解して、

CANフレームとEthernetフレームをテキストで出力する。
ってプログラムを組んでみるよ。

太郎くん
太郎くん

今回もPython?

フクさん
フクさん

そうだねー。
前回がPythonだったんで、ここで使用言語変えるってのあれだし、
LOBJのシグネチャの頭出しロジックとかは使いまわしたいしー。
よって、Python。

太郎くん
太郎くん

まぁ楽な方が良いよね。

まとめ

フクさん
フクさん

まとめだよ。

  • zlib解凍済みBLFをバイナリエディタで覗いて各フレームを抽出。
    • CANフレーム抽出。
    • Ethernetフレームを抽出。
  • mObjectTypeと仕様書上のオブジェクト構成はオブジェクトヘッダのサイズから雰囲気で特定。
  • フレーム抽出&テキスト化のプログラミング言語はPythonを使用予定。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました