パケット解析の定番、Wiresharkを使って、オリジナルのプロトコルを表示させるために、組み込み言語Luaを使って、カスタマイズしてみました。
環境 : Ubuntu 14.04
インストールは、
apt-get install wireshark
設定は、/etc/wireshark/init.luaで、disable_lua = false となっていることを確認します。
myproto.lua
1 2 3 4 5 6 7 8 9 10 |
my_proto = Proto("myproto","My Protocol") function my_proto.dissector(buffer,pinfo,tree) pinfo.cols.protocol = "MYPROTO" local subtree = tree:add(my_proto,buffer(),"My Protocol Data (" .. buffer:len() .. ")") subtree:add(buffer(0,4),"Command: " .. buffer(0,4):string()) subtree:add(buffer(4,1),"Parameter 1: " .. buffer(4,1):uint()) subtree:add(buffer(5,2),"Parameter 2: " .. buffer(5,2):uint()) end udp_table = DissectorTable.get("udp.port") udp_table:add(1212,my_proto) |
このファイルを
/usr/lib/x86_64-linux-gnu/wireshark/libwireshark3/plugins
に配置するだけです。
Wiresharkを起動して、Loopback:loをキャプチャ対象にします。
選択した部分のバイナリデータがハイライト表示されます。
通信は、以下のようにローカルで行いました。
コマンドとパラメータを送るという想定で、コマンドは、abcd、パラメータ1は0x31で49, 2は0x3233で12851 を意味しています。
このLuaを使ったカスタマイズは、まだまだ研究したいと思います。
参考 : http://wiki.wireshark.org/Lua/Dissectors