我正在开发一个解剖器/协议作为网络层之上的插件,以便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文件夹中有此文件,因为我将其作为插件编写。
感谢。
答案 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()
。