LoginSignup
0
0

More than 1 year has passed since last update.

自作プロトコルのパケットフォーマットをWiresharkで表示

Last updated at Posted at 2022-04-17

はじめに

パケットダイアグラムというパケットの構造を図で表示してくれる機能がWireshark ver. 3.4以降で追加されました。
その機能で自作プロトコルのフォーマットを表示してくれるか気になったので確認してみました。
注意点があるものの、自作プロトコルも表示してくれました。
これで自作プロトコルやWiresharkに入ってない新しいプロトコルのパケット解析が若干楽になりそうです。

動作環境

  • Windows10 Home
  • Wireshark ver. 3.6.3
  • 日本語表示

大まかな流れ

  1. LuaでPacket dissectorを記載、プラグインに登録
  2. パケットダイアグラムの表示を有効化

Packet dissector作成と配置

適当に下記のLuaスクリプト(Packet dissector)を作成し、「C:\Program Files\Wireshark\plugins」配下に「.lua」形式で保存した。

original_proto = Proto("original_proto","Original Protocol (description)")

original_proto.fields.len = ProtoField.uint16("my_proto.len","Length")
original_proto.fields.data = ProtoField.bytes("my_proto.data","Data", base.SPACE)

CONSTANT = {
    PORT_NUM = 20000
}

function original_proto.dissector(buffer, pinfo, tree)
    pinfo.cols.protocol = "ORIGPROTO"

    local subtree = tree:add(original_proto, buffer(), "Original Protocol")
    local len = buffer(0, 2)
    local data = buffer(2, len:le_uint())

    subtree:add_le(original_proto.fields.len, len)
    subtree:add(original_proto.fields.data, data)
end

udp_table = DissectorTable.get ("udp.port")
udp_table:add (CONSTANT.PORT_NUM, original_proto)

local len = buffer(0, 2):le_uint()のようにリトルエンディアン関連の変換を入れると、パケットダイアグラムに当該項目(Length)が表示されなくなるため注意が必要。
変換したい場合はデータをいったん変数に入れ、変数に対して変換処理を追加すればよい
(上記例ではlocal data = buffer(2, len:le_uint())

パケットダイアグラムの有効化

メニューより、[編集(E)]->[設定...(P)]->[外観]->[レイアウト]で下記の画像が表示される。
表示部3にてパケットダイアグラムを選択し、[OK]を選択

image.png

パケット表示の確認

Wiresharkを導入したPCに向かって、適当なLinux端末(Raspberry pi OS)上で下記のコマンドでパケットを送信した。

echo 040001020304 | xxd -r -p | nc -u 192.168.0.1 20000

下記のように、独自プロトコルのパケットフォーマットが表示されることを確認した。
image.png

さいごに

最近入ったばかりの機能なので、入れ子構造になるような複雑なプロトコルフォーマットでも表示されるかは不明です。
上部に表示されているIPプロトコルの表示を見る限り、何かしらの記載方法がありそうですが、本記事での確認はここまでにします。

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0