加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

lua – 如何使用侦听器获取TCP流号?

发布时间:2020-12-14 21:48:38 所属栏目:大数据 来源:网络整理
导读:我分析了一个非常大的PCAP,它持有许多HTTP事务,其中一些让我感兴趣.我正在使用带有Lua脚本的tshark来查询与过滤器匹配的所有数据包. tshark -X lua_script:filter.lua -r some.pcap -q 到现在为止还挺好.但是,我正在寻找一个数据包的TCP流号的值,它在Wiresha
我分析了一个非常大的PCAP,它持有许多HTTP事务,其中一些让我感兴趣.我正在使用带有Lua脚本的tshark来查询与过滤器匹配的所有数据包.

tshark -X lua_script:filter.lua -r some.pcap  -q

到现在为止还挺好.但是,我正在寻找一个数据包的TCP流号的值,它在Wireshark中名为tcp.stream.任何人都可以说我需要进行哪些更改filter.lua进行打印?

-- filter.lua
do
    local function init_listener()
        local tap = Listener.new("http","http contains someKeyValue && tcp.port eq 1234")
        function tap.reset()
        end
        function tap.packet(pinfo,tvb,ip)
            print("Found my packet ... now what?")
        end
        function tap.draw()
        end
    end
    init_listener()
end

有关pinfo,tvb和ip的文档是不合适的.

解决方法

您可以通过Field访问TCP流编号.

local tcp_stream = Field.new("tcp.stream").value

Field的值是当前数据包的值.您不需要每次都创建一个新的Field.这允许您使Field为常量并创建一个返回当前数据包的TCP流编号的函数.也可以调用Field值来获取FieldInfo值,该值可能包含其他有用信息.

您希望filter.lua看起来像:

-- filter.lua
do
    local function init_listener()
        local get_tcp_stream = Field.new("tcp.stream")
        local tap = Listener.new("http",ip)
            print(tostring(get_tcp_stream()))
        end
        function tap.draw()
        end
    end
    init_listener()
end

https://www.wireshark.org/docs/wsdg_html_chunked/lua_module_Field.html#lua_class_Field

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读