wiresharkでSOME/IPのフレーム解析
pythonでSOME/IPの通信ができるツールを作って動作確認をしようとしたときの話。
DoIPと違ってデフォルトでキャプチャ解析できなかったのでちょっとつまずいた。
SOME/IPに限らず、wiresharkのプロトコルキャプチャで困ったら役に立つかも。
wiresharkのSOME/IP対応
調べてみたところ、最近のwiresharkはSOME/IPにも対応しているらしい。
いざwiresharkでキャプチャしながらお手製のSOME/IPツールの動作確認をしたが、キャプチャできるのはただのUDP/TCPフレーム。
そういやwiresharkってport番号でプロトコル判断してたよな。
今適当なポート番号設定してるけど、あれ?
SOME/IPのポート番号
ここで気づいたのが、SOME/IPってTCP/UDPのポート番号何を使うんだろうということ。
ざっとSOME/IPの仕様を見たところ、特にそれっぽい指定はなかった。
なので動的ポート番号使えばいいんじゃないかな。
wikipediaのポート番号一覧みてもSOME/IPないし。あれ?
SOME/IP-SDのポート番号
SOME/IPより上位のプロトコルであるSOME/IP-SDの仕様をを見ると30490を使うのが正しいぽい。
今やりたいのはSOME/IP-SDではなく普通ののSOME/IP通信なんだけどいけるかな。
ためしに30490でSOME/IPの通信をやってみる。
ダメじゃん。あれ?
wiresharkのプロトコル設定
調べてみたところ、wiresharkで対応しているプロトコルごとに詳細な設定が出来るらしい。
例えばSOME/IPだったらこのポート番号の通信はSOME/IPと認識してくださいみたいな。(やっぱり動的ポート番号が正しいのかな)
設定手順
画面左上「編集」から「設定」を立ち上げ
左隅「Protocols」から「SOME/IP」を選択
一番下の入力欄で、任意のport番号を入力(複数指定可能)しOK
選択したポート番号のフレームキャプチャで、Protocolが「SOME/IP」になってる