0

.pcap ファイルを読み取ろうとしており、各クライアントのデータ パケット数を集計しようとしています (ここでのクライアント IP は宛先アドレスです)。たとえば、5 つのデータ パケットが xxx.ccc.vv​​v.bbb に送信された場合、次の形式でファイルに出力しています。

xxx.ccc.vvv.bbb 5  

これは私が以下に書いたプログラムです:

#!/usr/bin/lua

do
    numberofpkts = 0
    stat = {client1 = {numberofpkts = {}}}
    local file = io.open("luawrite","w")
    local function init_listener()
            local tap = Listener.new("wlan")
            local dest_addr = Field.new("wlan.da")
            local pkt_type = Field.new("wlan.fc.type")
            function tap.reset()
                    numberofpkts = 0;
            end

            function tap.packet(pinfo, tvb)
                    client = dest_addr()
                    client1 = tostring(client)
                    type = pkt_type()
                    if(tostring(type) == '2') then
                            stat.client1.numberofpkts = stat.client1.numberofpkts+1
                            file:write(tostring(client1),"\t", tostring(stat.client1.numberofpkts),"\n")
                    end
            end

    end
    init_listener()
end  

ここで、wlan.da は宛先アドレスを示します。wlan.fc.type は、データ パケット (タイプ = 2) であることを示します。ワイヤレス トラフィックで tshark を使用してこれを実行しています。

エラーが発生します:

tshark: Lua: on packet 3 Error During execution of Listener Packet Callback:
/root/statistics.lua:21: attempt to call field 'tostring' (a nil value)
tshark: Lua: on packet 12 Error During execution of Listener Packet Callback happened  2 times:
 /root/statistics.lua:21: attempt to call field 'tostring' (a nil value)  

この問題を解決する方法を教えてください。前もって感謝します!

4

1 に答える 1