前言

上一个试验在wireshark中新增了一个可以正常载入的插件.
但是在分析包时报错,看报错提示是解析器指针为空。
对照着官方文档,做了试验。原来是没有新建解析器。

wireshark插件的使用路数:自己分析解析器回调函数带进来的数据,然后用wireshark插件提供的API,向wireshark UI上设置分析的结果。

试验

// @file packet-foo.c
// @ref http://www.dgtech.com/foo/sys/www/docs/html/
//      https://www.wireshark.org/docs/wsdg_html_chunked/
//      https://www.wireshark.org/docs/wsdg_html_chunked/ChDissectAdd.html#idm1589259872// @note how to use foo plugin
// open a pcap file or capture any packet, select a tcp frame(have payload), Decode as ... => foo => ok#include "config.h"#include <epan/packet.h>
#include <epan/prefs.h>
#include <epan/dissectors/packet-tcp.h>
#include "packet-foo.h"#define PROTOCOL_FULL_NAME_FOO "foo Protocol"
#define PROTOCOL_SHORT_NAME_FOO "foo"
#define PROTOCOL_DISPLAY_FILTER_NAME_FOO PROTOCOL_SHORT_NAME_FOOvoid proto_register_foo(void);
void proto_reg_handoff_foo(void);#define foo_TCP_PORT 7000 /* Not IANA registed */static dissector_handle_t dissector_handle_foo = NULL;
static int protocol_handle_foo = -1;static int dissect_proc_foo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_, void *data _U_);void proto_register_foo(void)
{// first entry proto_register_foo// then entry proto_reg_handoff_foo// 注册协议// 执行了proto_register_protocol, 就这一句, 在显示过滤器中输入foo, 就显示绿色// 说明foo协议已经注册// 参数1是协议的完整名称// 参数2是协议的短名称, 在Decode as对话框中的协议名称列表中可以看到// 参数3是显示过滤器中的协议名称protocol_handle_foo = proto_register_protocol(PROTOCOL_FULL_NAME_FOO, PROTOCOL_SHORT_NAME_FOO, PROTOCOL_DISPLAY_FILTER_NAME_FOO);
}void proto_reg_handoff_foo(void)
{// 建立解析器// 指定协议使用的解析器处理函数dissector_handle_foo = create_dissector_handle(dissect_proc_foo, protocol_handle_foo);// 绑定端口// 指定要处理哪个端口的载荷dissector_add_uint("tcp.port", foo_TCP_PORT, dissector_handle_foo);
}static int dissect_proc_foo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_, void *data _U_)
{// process folw// parse data + set ui content// return data length was process// wireshark 主显示区的列头信息// col.1 = "No."// col.2 = "Time"// col.3 = "Soruce"// col.4 = "Destination"// col.5 = "Protocol"// col.6 = "Length"// col.7 = "Info"// set col.5 = "Protocol" 's content to 'foo'col_set_str(pinfo->cinfo, COL_PROTOCOL, PROTOCOL_SHORT_NAME_FOO);// set col.7 = "Info" 's content to empty, else will display by tcp infocol_clear(pinfo->cinfo, COL_INFO);return tvb_captured_length(tvb); // return data length by process
}

wireshark插件 - 建立可以正常工作的解析器相关推荐

  1. 调用wireshark(二):调用协议解析器

    上文[调用wireshark(一):初次尝试 http://www.cnblogs.com/zzqcn/archive/2013/05/11/3072362.html ]已经介绍了调用wireshar ...

  2. Wireshark Protobuf 和 gRPC 内置解析器使用介绍

    Wireshark Protobuf 和 gRPC 内置解析器使用介绍 目录 Wireshark Protobuf 和 gRPC 内置解析器使用介绍 1. 主要功能 2. 示例中使用的.proto文件 ...

  3. linux抓包dcp,Wireshark DCP-ETSI 解析器拒绝服务漏洞

    发布日期:2013-02-03 更新日期:2013-02-14 受影响系统: Wireshark Wireshark 1.8.x Wireshark Wireshark 1.6.x 描述: ----- ...

  4. Python和NLP构建你自己的简历解析器

    使用Python和NLP构建你自己的简历解析器 使用Python和自然语言处理(NLP)一步一步地建立你自己的简历分析器的指南. 让我们先把一件事说清楚.简历是对你的技能和经验在一两页内的简短总结,而 ...

  5. 设计模式学习(四):基于Builder模式的歌词解析器

    一.前言 上篇文章(设计模式学习(三):生成器(Builder)模式)记录了 Builder 模式的具体内容,这次使用C语言来实现一个实际的例子--基于Builder模式的歌词解析器. 本文的示例来自 ...

  6. wireshark协议解析器原理与插件编写

    工作原理 每个解析器解码自己的协议部分, 然后把封装协议的解码传递给后续协议. 因此它可能总是从一个Frame解析器开始, Frame解析器解析捕获文件自己的数据包细节(如:时间戳), 将数据交给一个 ...

  7. lua语言学习之自定义wireshark插件来解析自定义协议

    lua语言学习之自定义wireshark插件来解析自定义协议 关于wireshark这个抓包工具 关于lua 使用lua写wireshark插件 wireshark接口文档 如何在wireshark使 ...

  8. wireshark插件 - 添加UI子树, 向子树上添加分析后的文本

    前言 要想用wireshark 插件做一个最简单的协议分析(不挎包),除了分析协议数据(纯C, 和wireshark无关),还要将分析的结果显示在wireshark树区和数据区, 只要能在树区添加子树 ...

  9. Zabbix探针工作模式解析

    本文转载于:http://ghoulich.xninja.org/2016/07/11/analysis-of-zabbix-agent-work-mode/ ZABBIX Zabbix探针工作模式解 ...

最新文章

  1. 【java】兴唐第三十节课之零三知识点总结
  2. 三大框架开发时,spring配置文件出现异常
  3. eplan文本怎么换行_JDK 14的新特性:文本块Text Blocks
  4. python中的函数及作用域的理解
  5. java spring工作原理_SpringMVC的工作原理是什么样的,跟Spring的关系是怎么样的?
  6. 用户密码到底要怎样存储?
  7. 灯泡(信息学奥赛一本通-T1438)
  8. UI设计中的黄金分割率,实用案例适合临摹学习
  9. Eigen教程(10)之混淆
  10. 朝鲜黑掉韩国政府版 Word
  11. windows编译opencv+opencv_contrib 以及解决cmake下载boostdesc_bgm等文件失败问题
  12. 做抖音自媒体,如何搭建自己的账号?
  13. html实训大作业《基于HTML+CSS+JavaScript红色文化传媒网站(20页)》
  14. node.js 在 Express4.0 框架使用 Connect-Busboy 实现文件上传
  15. 台式计算机 蓝牙,台式电脑蓝牙在哪里打开(手把手教你打开台式电脑蓝牙)...
  16. java520.1314表白_521.1314表白的数学题大全 临沂学霸520专用表白方式
  17. C语言程序设计 | 大小端
  18. ubuntu16.04笔记本查看电脑配置(CPU,显卡,内存,硬盘)
  19. 西门子博途1500双驱同步,伺服同步运行程序,3轴码垛博途程序,scl项目
  20. 西安计算机三本院校排名2015,2015年陕西三本院校排名

热门文章

  1. Oracle数据库排序和限制查询
  2. 微名片php源码,mingpian 微名片源码。在线生成 . . WEB(ASP,PHP,...) 240万源代码下载- www.pudn.com...
  3. vim之vundle安装与使用
  4. java中1到5的阶乘代码_java技术支持 求1~5的阶乘之和
  5. 制作PE工具箱 、 PE工具箱应用
  6. 带负荷测试要求二次最小电流_继电保护二次核相、带负荷试验方法
  7. Spring Cloud Alibaba 官方中文文档
  8. el-table 抖动问题(已解决)
  9. 如何安装iso文件的软件
  10. 虚拟机没有网络还没有网络图标!!!