如何在LUA解剖器中重新组装TCP数据包?

时间:2012-10-30 11:31:23

标签: tcp lua wireshark-dissector

我有一个在TCP协议之上运行的解析器,其数据流经多个TCP数据包。

我想在转换所有内容之前汇总数据,所以我知道我需要tcp_dissect_pdus(),但我找不到文档或示例。

任何人都可以指导我或帮助我了解我如何使用它吗?

1 个答案:

答案 0 :(得分:6)

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节。