首页 > 其他分享 >Wireshark C插件开发第一周进展

Wireshark C插件开发第一周进展

时间:2023-11-19 17:45:19浏览次数:39  
标签:解析器 插件 内置 proto 第一周 foo Wireshark

Wireshark C插件开发学习笔记

1. Wireshark对C插件的支持

Wireshark使用插件来实现协议解析,插件可以以两种方式实现:内置方式和插件方式。内置方式将解析器模块编译到主程序中,而插件方式以共享库/DLL形式存在,可以动态加载。

内置方式 vs 插件方式

  • 内置方式:

    • 插件在主程序中编译,永远可用。
    • 对Windows平台,通过列于 libwireshark.def 中的函数,可以访问有限的函数。
    • 构建周期较长,但代码布署与内置解析器相同。
  • 插件方式:

    • 插件构建周期较短,开发初期简单,布署与内置解析器相同。
    • 插件可以注册用于处理解析的函数,与内置解析器几乎相同。

详细信息可以在 doc/README.developer 文件中找到。

2. 编译构建C解析器

首先,需要决定解析器是以内置方式还是插件方式实现。插件方式相对容易上手。

解析器初始化

#include "config.h"
#include <epan/packet.h>

#define FOO_PORT 9877

static int proto_foo = -1;

void proto_register_foo(void) {
    proto_foo = proto_register_protocol("FOO Protocol", "FOO", "foo");
}

在初始化中,使用 proto_register_protocol 注册协议,为协议提供名称、短名称和缩写。这样,协议将被主程序识别。

Handoff例程

void proto_reg_handoff_foo(void) {
    static dissector_handle_t foo_handle;
    foo_handle = create_dissector_handle(dissect_foo, proto_foo);
    dissector_add_uint("udp.port", FOO_PORT, foo_handle);
}

proto_reg_handoff_foo 中,创建 dissector handle 并将其与UDP端口号关联,以便主程序在看到此端口上的UDP数据时调用我们的解析器。

解析器代码

static void dissect_foo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
    col_set_str(pinfo->cinfo, COL_PROTOCOL, "FOO");
    col_clear(pinfo->cinfo, COL_INFO);
}

dissect_foo 函数用于解析交给它的数据包。在这个基本的实现中,我们设置了协议文本并清除INFO列的所有数据。

以上是一个最小化的解析器实现,编译和安装后,它可以标识协议。

编译和安装

将插件源代码文件 packet-foo.c 及必需的支持文件准备好,并根据不同平台选择合适的构建方式,比如 UNIX/Linux 下使用 Makefile.amCMakeLists.txt,Windows 下使用 Makefile.nmake

运行编译命令,例如:

nmake -f Makefile.nmake

将生成的 foo.dll 文件拷贝到 Wireshark 的插件目录。

这样,我们就完成了一个基本的 Wireshark C 插件的开发,可以通过不断完善 dissect_foo 函数来实现更复杂的协议解析。

标签:解析器,插件,内置,proto,第一周,foo,Wireshark
From: https://www.cnblogs.com/zsy1748774883/p/17842307.html

相关文章

  • 基于wireshark插件的国密标准检测工具的设计与实现前期安排
    任务理解:  整体任务:写.lua插件,其中创建的协议实现解析抓包数据并完成相关密评标准阶段安排:第一周:理解任务要求,学习相关知识,配置编程环境,分配工作学习笔记https://www.cnblogs.com/dkyzhouyikai/p/17841223.html  第二周:着手实现与检验  第三周:验收成员分工:......
  • 闲鱼商家私信脚本,打招呼发送广告,按键精灵插件,已开源版!
    客户定制的一个按键精灵商家私信脚本,是插件版,设置话术户启动后进入闲鱼会自动给商家发送私信,非常稳定,那么现在脚本已经没用了,就开源分享出来代码。ui界面:  ui界面代码:========================================================界面1:{请在下面输入话术:{输入框:{名称......
  • 豆瓣贴吧24小时自动顶帖脚本,随机延迟时间,按键精灵插件开源版!
    之前给客户定制的,定制了非常多的脚本和插件,这也是其中一个,我留着没用,就把源码直接给大家开源出来,方面大家学习一下,或者你可以把代码和UI界面的代码直接粘贴到你的按键精灵手机助手里面就能运行的,你可以试试,仅供学习用。ui界面:  ui界面2:  UI界面代码:================......
  • 知乎自动评论脚本,可实现点赞的效果,按键精灵开源插件!
    用按键精灵开发的一个按键精灵自动评论点赞脚本,也是客户定制的,现在这个代码留下没用,就直接开源出来,你可以复制自己粘贴到按键精灵手机助手里面ui界面:  界面2:  界面代码:================================================界面1:{请在下面设置话术:{输入框:{名称:......
  • 基于wireshark插件的国密标准检测工具的设计与实现
    基于lua语言的wireshark插件开发lua运算符--createanewdissectorlocalNAME="Doip"localPORT=13400localDoip=Proto(NAME,"DoipProtocol")--dissectpacketfunctionDoip.dissector(tvb,pinfo,tree)end--registerthisdissectorDissec......
  • 抖音cookie多账号自动点赞脚本,可关注插件,可导入用户UID安全码,开源版
    刚给用户定制的一个抖音自动点赞脚本,就是可以导入用户ID,然后软件会自动点赞主页第一条视频,然后自动点赞,可选择关注或者点赞,选择后软件会自动判断,按条件实现关注或点赞,用精易VIP助手开发的,调用谷歌浏览器模块。ui界面:  完整源代码:========================================......
  • Bootstrap中的时间插件
    需要下面文件包 当用户进行对文本框点击的时候弹出来时间选择框,而且用户不能自己修改,只能通过这个插件1<%@pagecontentType="text/html;charset=UTF-8"language="java"%>2<%3StringbasePath=request.getScheme()+"://"+request.getServerName()+":"......
  • 在Rider 中使用Entity Framework Core UI 插件创建EFCore 的 Migration迁移文件时报错
    报错信息EFCoretoolsarerequiredtoexecutethisaction在点击报错信息中的发Fix进行安装时,再次出错这次是提示版本不匹配这里我使用的是EFCore7.0.14版本的报错原因没有安装dotnettool点击Fix进行安装时,是安装的最新版,是要是.net7的安装dotnettool直......
  • vscode插件:koroFileHeader(添加注释文件头)
    第一步:安装插件koroFileHeader。如下图1 第二步:配置setting。将下面的json代码配置到setting中。"fileheader.configObj":{"createFileTime":true,"language":{"languagetest":{"head":"/$$",......
  • 免费!IDEA插件推荐:Apipost-Helper
    今天给大家推荐一款IDEA插件:Apipost-Helper-2.0,写完代码IDEA内一键生成API文档,无需安装、打开任何其他软件;写完代码IDEA内一键调试,无需安装、打开任何其他软件;生成API目录树,双击即可快速定位API定义的代码…非常好用!而且完全免费!在IDEA编辑器插件中心输入Apipost搜索安装:Apipost-......