houshangling
houshangling
2017-12-20 11:05

wireshark插件开发遇到的一个问题

5
  • wireshark
  • 插件

公司的业务在标准的PDCP协议前面加了44个字节的自定义数据,现在想做个wireshark的插件用于数据包解析。

要求是自定义的44个字节不解析,只解析44个字节后的标准的PDCP协议。
但是遇到一个问题:插件跳过了前面的44个字节,然后调用find_dissector函数找wireshark已经实现的PDCP协议解析器,但是解析后在页面上什么都没有显示。

代码如下:

 //包解析
int packet_parse(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset)
{
    int item_offset = 44;

    gint16 pdu_len = tvb_reported_length(tvb);

    proto_item * pdcp_item = proto_tree_add_item(tree, proto_dtmpdcp, tvb, 0, -1, ENC_NA);
    proto_item_append_text(pdcp_item, ",PDU len : %-05u", pdu_len);

    proto_tree * subtree = proto_item_add_subtree(pdcp_item, ett_dtmpdcp);
    offset += item_offset;

    dissector_handle_t handle = find_dissector("pdcp-lte");

    if(handle)
    {

        tvbuff_t* next_tvb = tvb_new_subset(tvb, offset, -1, pdu_len - item_offset);
        if(next_tvb)
        {
            call_dissector(handle, next_tvb, pinfo, subtree);
            //tvb_free(next_tvb);
        }
    }

    return 0;
}

在wireshark上呈现如下:

图片说明

请问有知道这是什么原因么?谢谢

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

2条回答