Wireshark解析器:IP解析器无法识别我的协议
我正在开发一个解析器/协议作为网络层之上的插件,这样IP解析器将解析所有IP头,并查看“协议”字段以将有效负载传递给我的协议。Wireshark解析器:IP解析器无法识别我的协议,wireshark,wireshark-dissector,Wireshark,Wireshark Dissector,我正在开发一个解析器/协议作为网络层之上的插件,这样IP解析器将解析所有IP头,并查看“协议”字段以将有效负载传递给我的协议。 假设协议编号为“254” 为了让IP解析器将有效负载传递给我的协议,需要执行哪些步骤 编辑: 我的数据包临时文件包含: #include "config.h" #include <epan/packet.h> #define IP_PROTO_TEMP 254 static int proto_temp = -1; static void diss
假设协议编号为“254” 为了让IP解析器将有效负载传递给我的协议,需要执行哪些步骤 编辑: 我的数据包临时文件包含:
#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);
}
#包括“config.h”
#包括
#定义IP_协议_临时254
静态int proto_temp=-1;
静态空洞剖析温度(tvbuff\u t*tvb、数据包信息*pinfo、原型树*tree)
{
col_set_str(pinfo->cinfo,col_协议,“TEMP”);
/*清除信息栏中的内容*/
列清除(pinfo->cinfo,列信息);
}
无效原始寄存器温度(无效)
{
proto_temp=proto_寄存器协议(
“临时协议”、/*名称*/
“TEMP”、/*短名称*/
“临时”/*缩写*/
);
}
作废协议登记移交临时文件(作废)
{
静态剖析器手柄温度手柄;
temp_handle=创建剖析器(dissect_temp,proto_temp);
解剖器添加单元(“ip.proto”,ip-proto-TEMP,TEMP-handle);
}
我在>C:\Development\wireshark\plugins\temp文件夹中有这个文件,因为我是作为插件编写的
谢谢。让您的剖析器在
“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\u register\u protocol()
调用)。如果您的解析器不是一个“新型”协议,请使用一个额外的“数据”参数并返回一个int
,使用create\u dissector\u handle()
,而不是new\u create\u dissector\u handle()
谢谢@GuyHarris的回复。我仍然无法注册协议。我看到了ipproto.c文件,但在文件中看不到我的协议号(254)。当我把我的剖析器作为一个插件来写的时候,它不会影响对吧?先生,我已经附加了问题中的packet temp.c文件。请看一下,告诉我哪里错了?谢谢。你认为“ip.proto”拼写为“ip.port”是错误的修复该错误,即使用dissector\u add\u uint(“ip.proto”,ip\u proto\u TEMP,TEMP\u handle)代码>非解析器添加单元(“ip.port”、ip协议、临时句柄)代码>“我看到了ipproto.c文件,但在文件中看不到我的协议号(254)。”它不一定在那里;例如,Wireshark允许您添加在IP上运行的新协议,而无需修改Wireshark源本身。添加它只会改变IPv4和IPv6解析器显示协议/下一个标头字段的方式。