wireshark插件开发 - Lua插件解析

wireshark支持C语言和Lua语言开发插件,本部分内先介绍Lua插件部分开发。Lua语言相对C语言开发有一个巨大的优势,就是不需要编译代码,因为Lua语言是脚本语言,只需要编写相关协议解析的脚本内容,然后由wireshark加载即可(Wireshark自带Lua解析器),wireshark封装丰富的接口给Lua使用,

实现代码

 1 -----------------------------------------------------------------
 2 -- wireshark分析udp sample协议插件
 3 -- 将自定义协议以可读的方式展示在wireshark中
 4 -----------------------------------------------------------------
 5 --基于UDP协议
 6 local udp_table = DissectorTable.get("udp.port")
 7 local my_proto = Proto("udp-sample", "udp sample protocol", "udp sample protocol")
 8 --协议端口号
 9 local my_port = 11110
10 
11 --定义协议字段内容
12 local versionField = ProtoField.uint16("Version", "Version", base.DEC)
13 local idField = ProtoField.uint32("ID", "ID", base.DEC)
14 local stringField = ProtoField.string("Buffer", "Buffer")
15 
16 my_proto.fields = {versionField, idField, stringField}
17 
18 --协议分析器
19 function my_proto.dissector(buffer, pinfo, tree)
20 pinfo.cols.protocol:set("udp-sample")
21 
22 local len = buffer:len()
23 local myProtoTree = tree:add(my_proto, buffer(0, len), "udp sample protocol")
24 local offset = 0
25 myProtoTree:add(versionField, buffer(offset, 2))
26 offset = offset + 2
27 
28 myProtoTree:add(idField, buffer(offset, 4))
29 offset = offset + 4
30 
31 myProtoTree:add(stringField, buffer(offset, 1024))
32 end
33 
34 --增加协议到Wireshark中
35 udp_table:add(my_port, my_proto)

 

 

 

 加载

修改wireshark根目录下面的init.lua文件

在文件尾部追加下面一行代码,假设Lua解析文件名为udp-sample

dofile("udp-sample.lua")

 

 

解析成功会出现上图红线所标注内容

结果展示

通过客户端程序连接服务端程序,并抓包,过滤结果展示如下:

 

 

更多更完整的内容,请移步百度阅读:

https://yuedu.baidu.com/ebook/ca33e60d3a3567ec102de2bd960590c69ec3d89b

 

转载于:https://www.cnblogs.com/99code/p/7398834.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值