tshark调用栈解析——https模块(从下往上看)

libwireshark.dll!ssl_print_decrypted_app_data(const char * name, const unsigned char * data, unsigned int len) 行 4880    C

——次函数是我自己增加的打印消息,可以打印ssl解密后的内容
     libwireshark.dll!dissect_ssl_payload(tvbuff * tvb, _packet_info * pinfo, int offset, _proto_node * tree, _SslSession * session) 行 1365    C
     libwireshark.dll!dissect_ssl3_record(tvbuff * tvb, _packet_info * pinfo, _proto_node * tree, unsigned int offset, _SslSession * session, int is_from_server, int * need_desegmentation, _SslDecryptSession * ssl, const int first_record_in_frame) 行 1762    C
     libwireshark.dll!dissect_ssl(tvbuff * tvb, _packet_info * pinfo, _proto_node * tree, void * data) 行 776    C
     libwireshark.dll!call_dissector_through_handle(dissector_handle * handle, tvbuff * tvb, _packet_info * pinfo, _proto_node * tree, void * data) 行 618    C
     libwireshark.dll!call_dissector_work(dissector_handle * handle, tvbuff * tvb, _packet_info * pinfo_arg, _proto_node * tree, int add_proto_name, void * data) 行 706    C

——call_dissector_through_handle根据注册的协议名称,可以找到对应的协议处理函数

static int
call_dissector_through_handle(dissector_handle_t handle, tvbuff_t *tvb,
                  packet_info *pinfo, proto_tree *tree, void *data)
{
    const char *saved_proto;
    int         len;

    saved_proto = pinfo->current_proto;

    if (handle->protocol != NULL) {
        pinfo->current_proto =
            proto_get_protocol_short_name(handle->protocol);
    }

    if (handle->is_new) {
        len = (*handle->dissector.new_d)(tvb, pinfo, tree, data);
    } else {
      

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值