我分析了一个非常大的PCAP,它持有许多HTTP事务,其中一些让我感兴趣.我正在使用带有Lua脚本的tshark来查询与过滤器匹配的所有数据包. tshark -X lua_script:filter.lua -r some.pcap -q 到现在为止还挺
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","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