【发布时间】:2012-10-19 17:44:17
【问题描述】:
我有一个运行在 TCP 协议之上的解析器,并且有数据在多个 TCP 数据包上流动。
我想在转换所有内容之前组装数据,所以我知道我需要tcp_dissect_pdus(),但我找不到它的文档或示例。
谁能指导我使用它或帮助我了解如何使用它?
【问题讨论】:
标签: tcp lua wireshark-dissector
我有一个运行在 TCP 协议之上的解析器,并且有数据在多个 TCP 数据包上流动。
我想在转换所有内容之前组装数据,所以我知道我需要tcp_dissect_pdus(),但我找不到它的文档或示例。
谁能指导我使用它或帮助我了解如何使用它?
【问题讨论】:
标签: tcp lua wireshark-dissector
tcp_dissect_pdus 没有 wslua API。但是你可以自己实现。
如果你想组装跨越两个或更多数据包的 pdu,这相当简单:
function slicer.dissector(tvb, pinfo, tree)
...
local pdu_length = get_pdu_length(...)
if pdu_length > tvb:len() then
pinfo.desegment_len = pdu_length - tvb:len()
else
do_dissection(tvb, pifo, tree)
end
return
end
如果您不知道 pdu 的确切长度,您可以这样做:
pinfo.desegment_len = DESEGMENT_ONE_MORE_SEGMENT
您应该阅读README.developer 第 2.7 节。
【讨论】: