就在开始之前,抱歉我的英语......我是法国人。
我正在开发(用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);
但不可能重新组合消息,我不明白为什么......你能帮助我吗? 我希望你理解我的问题...:/