Wireshark Dissector:IP Dissector无法识别我的协议

时间:2015-06-05 09:03:22

标签: wireshark wireshark-dissector

我正在开发一个解剖器/协议作为网络层之上的插件,以便IP解剖器将剖析所有IP头,并查看“协议”字段以将有效负载传递给我的协议。
假设协议号是“254”。

需要执行哪些步骤,以便IP解析器将有效负载传递给我的协议?

编辑:

我的packet-temp.c文件包含:

#include "config.h"

#include <epan/packet.h>


#define IP_PROTO_TEMP 254
static int proto_temp = -1;


static void dissect_temp(tvbuff_t *tvb, packet_info *pinfo, proto_tree     *tree)
{
    col_set_str(pinfo->cinfo, COL_PROTOCOL, "TEMP");
    /* Clear out stuff in the info column */
    col_clear(pinfo->cinfo, COL_INFO);
 }

 void proto_register_temp(void)
 {
     proto_temp = proto_register_protocol (
               "TEMP Protocol", /* name       */
               "TEMP",      /* short name */
               "temp"       /* abbrev     */
               );
  }



 void proto_reg_handoff_temp(void)
{
     static dissector_handle_t temp_handle;

     temp_handle = create_dissector_handle(dissect_temp, proto_temp);
     dissector_add_uint("ip.proto", IP_PROTO_TEMP , temp_handle);
}

我在&gt; C:\ Development \ wireshark \ plugins \ temp文件夹中有此文件,因为我将其作为插件编写。

感谢。

1 个答案:

答案 0 :(得分:1)

让你的解剖器在"ip.proto"解剖器表中注册,其中254为关键,例如:

proto_my_protocol = proto_register_protocol("My Protocol", "MYP", "myp");
my_handle = new_create_dissector_handle(dissect_my_protocol, proto_my_protocol);
dissector_add_uint("ip.proto", 254, my_handle);

(您可能已经在进行上述某些操作,例如proto_register_protocol()调用)。如果您的解剖器不是新式的&#34;协议,采取额外的&#34;数据&#34;参数并返回int,请使用create_dissector_handle()而不是new_create_dissector_handle()