如何根据协议值以编程方式创建Wireshark Dissector子树?

时间:2018-10-31 04:59:32

标签: wireshark wireshark-dissector

如何在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;


}

0 个答案:

没有答案