Wireshark解剖器开发 - 重组tcp帧

时间:2014-11-03 15:41:28

标签: tcp wireshark

就在开始之前,抱歉我的英语......我是法国人。

我正在开发(用C语言)一个wireshark解剖器来解析一个特定的协议给公司(它的所有者)我在哪里工作但是当消息是几个TCP帧我有问题...我不能重新组装消息被分成两个不同的帧TCP时的消息,我不能在一条消息中改写它......

我阅读了readme.dissector并尝试使用两种方法:

  • 第一种方法:

    tcp_dissect_pdus(tvb, pinfo, tree, dns_desegment, 2,
                get_dns_pdu_len, dissect_dns_tcp_pdu, data);
            return tvb_captured_length(tvb);
    
  • 第二种方法:

    guint offset = 0;
        while(offset < tvb_reported_length(tvb)) {
            gint available = tvb_reported_length_remaining(tvb, offset);
            gint len = tvb_strnlen(tvb, offset, available);
    
            if( -1 == len ) {
                /* we ran out of data: ask for more */
                pinfo->desegment_offset = offset;
                pinfo->desegment_len = DESEGMENT_ONE_MORE_SEGMENT;
                return (offset + available);
            }
    
            col_set_str(pinfo->cinfo, COL_INFO, "C String");
    
            len += 1; /* Add one for the '\0' */
    
            if (tree) {
                proto_tree_add_item(tree, hf_cstring, tvb, offset, len,
                    ENC_ASCII|ENC_NA);
            }
            offset += (guint)len;
        }
    
        /* if we get here, then the end of the tvb coincided with the end of a
           string. Happy days. */
        return tvb_captured_length(tvb);
    

但不可能重新组合消息,我不明白为什么......你能帮助我吗? 我希望你理解我的问题...:/

0 个答案:

没有答案