wireshark插件程序遇到的一个问题
自己的协议是基于UDP广播的,头几个字节的内容标示自己的协议,发送端口是随机的
实现过程中采用了
heur_dissector_add("udp",dissect_XXX_heur,proto_XXX);
用dissect_xxx_heur来过滤所有的UDP包
static gboolean dissect_xxx_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
guint8 packet_type = 0;
packet_type = tvb_get_guint8(tvb, 0);
if( packet_type != 0x01 && packet_type != 0x02 ) {
return FALSE;
else{
dissect_xxx(tvb,pinfo,tree);
return TRUE;
}
}
但是发现如果发送端口是已经注册的端口,就无法正确解析,得不到优先解析数据包的权利
eg,port 是4000时和ICQ冲突..etc
由于发送端口不固定,不可能disable所有已经注册的UDP之上的协议吧?
谢谢啦!