如何在C中创建Wireshark解剖器,可以解析协议以确定要创建的子树的数量,然后以编程方式创建该子树的数量。
我正在使用包含2个部分的协议
1)数据包中的请求数(长2个字节)
2)后跟那些请求(每5个字节长1到20个请求)
每个请求的长度为5个字节
2 bytes - Request number
3 bytes - random number
这是示例数据包
020155502666
解剖过的这个包是
Length : 02
request 01:
random number : 555
request 02:
random number: 666
此代码使我可以创建一个带有单个子树的主树,在该子树中添加请求号和随机数。如何更改它,以编程方式在每个请求对象的主树下创建一个子树。
dissect_packet (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
{
/* Set up structures needed to add the protocol subtree and manage it */
proto_item *ti
proto_tree *tree , *tree_sub
/* Other misc. local variables. */
guint offset = 0;
guint16 number_of_requests;
/* create display subtree for the protocol */
ti = proto_tree_add_item(tree, tree, tvb, 0, -1, ENC_NA);
packet_tree = proto_item_add_subtree(ti, tree_sub);
proto_tree_add_item(packet_tree, hf_requestID, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
proto_tree_add_item(packet_tree, hf_random_number, tvb, offset, 3, ENC_BIG_ENDIAN);
offset +=3;
}