LuaでWiresharkDissectorに取り組んでいます。
利用可能な分析ツールを利用するために、カスタムプロトコルに関するできるだけ多くの情報をwiresharkに提供しようとしています。したがって、プロトコルの正しい送信元アドレスと宛先アドレスを設定しようとしています。
私のプロトコルは、UDPやIEEE802.15.4などの他のさまざまなプロトコルの上に置くことができます。したがって、パッケージの送信元/宛先がすでに設定されている可能性もあります(UDP)。
ただし、wiresharkに自分のアドレスを表示させたいので、次のことを試しました。
myproto = Proto("myproto"), "My Protocol")
myproto_source = ProtoField.uint16("myproto.src", "Source Address", base.HEX)
myproto.fields = { myproto_source }
function myproto.dissector(buffer, pinfo, tree)
local subtree = tree:add(myproto, buffer(), "My Proto")
subtree:add(myproto_source, buffer(0,2)
-- does not work with error:
-- bad argument #1 to '?' (Address expected, got userdata)
pinfo.src = myproto_source
-- does work, but only adds text, wireshark tools rely on pinfo.src
pinfo.cols.src = tostring(buffer(0,2):uint())
end
udp_table = DissectorTable.get("udp.port")
udp_table:add( 12345, myproto )
wtap_encap_table = DissectorTable.get("wtap_encap")
wtap_encap_table:add(wtap["IEEE802_15_4"], myproto)
では、設定に必要なデータ型/クラスの「アドレス」はあるのpinfo.src
でしょうか。それとも、パケット情報を設定するまったく異なる方法がありますか?
前もって感謝します!