2

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でしょうか。それとも、パケット情報を設定するまったく異なる方法がありますか?

前もって感謝します!

4

2 に答える 2

2

pinfo.srcオブジェクトを取りAddressます (これは IP アドレスであり、16 ビット整数ではありません)。使用例:

pinfo.src = Address.ip('1.2.3.4')

これは、Wireshark に表示される「ソース」列のテキストのみを設定することに注意してください。基礎となるパケット情報は変更できず、IP パケットの詳細には引き続き実際の IP アドレスが表示されます。

于 2012-02-09T18:27:01.940 に答える
0

ただの提案-私はLUAウィズではありません:

pinfo:col.src = buffer(0,2):uint()

多分??

于 2012-02-09T17:03:16.283 に答える