lua - 如何通过监听器获取 TCP 流号?

标签 lua wireshark wireshark-dissector

我正在分析一个非常大的 PCAP,其中包含许多 HTTP 事务,其中一些是我感兴趣的。我正在使用 tshark使用 Lua 脚本来查询与过滤器匹配的所有数据包。

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

到现在为止还挺好。但是,我专门寻找名称为 tcp.stream 的数据包的 TCP 流号的值。在 Wireshark 里面。谁能说出我需要对 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 的文档, tvbip是即将到来的。

最佳答案

您可以通过 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","http contains someKeyValue && tcp.port eq 1234")
        function tap.reset()
        end
        function tap.packet(pinfo,tvb,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

关于lua - 如何通过监听器获取 TCP 流号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42695944/

相关文章:

android - 如何从 OSX 上的 Wireshark 中的 Android 模拟器获取 tcpdump 的实时 View ?

python - 用pyshark统计包数

c++ - 如何为自定义协议(protocol)创建 Wireshark 解析器,而无需重新编译 Wireshark

c++ - Luabind: "No matching overload found, candidates:"

nginx - 如何将整个响应数据保存到nginx error.log?

c - 在Lua中,#INF和#IND是什么?

networking - 为什么我看到源和目标不是我的 IP 地址的数据包

wireshark - 持续向 tshark/wireshark 提供 pcap 文件

lua - Wireshark Lua 解剖器重组 - 未使用以前的 Tvb 数据调用解剖器

lua - 登录后什么时候可以使用SendChatMessage?