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")

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

结果展示

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

时间: 2024-10-13 08:39:21

wireshark插件开发 - Lua插件解析的相关文章

wireshark插件开发 - 汇总

wireshark插件开发 - 自定义协议 wireshark插件开发 - Lua插件解析 wireshark插件开发 - C插件解析 wireshark插件开发 - 更多

Linux编译wireshark,并支持lua插件

由于工作需要,我编写过一个解析内部通信协议的wireshark的插件,插件是使用lua语言编写的,所以wireshark必须要支持lua接入才行. 一般在windows下的wireshark使用安装包安装后,都是支持lua的.只是默认lua支持是处于关闭状态,在网上一搜索就能知道怎么打开lua支持了. 但是,在Linux下就不一定支持了.我们公司使用的是CentOS的操作系统,默认使用操作系统光盘安装的wireshark是没有lua支持的.所以,我就只能摸索如下的步骤去重新编译wireshark

基于Lua插件化的Pcap流量监听代理

1.前言 我们在实际工作中,遇到了一个这样的用例,在每天例行扫描活动中,发现有些应用系统不定期的被扫挂,因为我们不是服务的制造者,没有办法在不同的系统里打印日志,所以我们就想用一个工具来获取特定服务的输入数据流.我们如果不在IDS上看应用的服务,可以直接针对服务所在服务位置,针对应用端口进行,有针对性的监听分析. Tshark和tcpdump.windump这些监听工具提供了比较丰富的命令行参数来监听流量数据.wireshark.burpsuite这些工具也提供相应的lua.python脚本的机

lua标签解析器

lua 标签解析器 概述 一个类xml标签解析函数,将标签解析成Lua中的表结构它可以用来解析简单xml结构,可以作为RichLabel控件的字符串解析组件(其实它现在就是这么用的;-)) 原理 使用lua的模式匹配, 使用了模式串%b<>%b用来匹配对称的字符.常写为 %bxy,x和y是任意两个不同的字符. x作为匹配的开始,y作为匹配的结束.比如,%b<> 匹配以 < 开始,以 > 结束的字符串 要解析的字符串 hello world <div>hell

[Lua]插件管理工具LuaRocks

lua 插件管理工具LuaRocks 一个关于LuaRocks的ppt 参考 这里的环境是ubuntu, 只是安装了lua5.2 ,还没有安装其他包. 资源 官网:http://luarocks.org/ 扩展列表:http://luarocks.org/repositories/rocks/ 安装说明:http://luarocks.org/en/Installation_instructions_for_Unix(有很多的配置选项) install 总是提示–with-lua 其实是需要找到

[RK_2014_0905]ubuntu中,wireshark启动提示:Lua: Error during loading: [string &quot;/usr/share/wireshark/init.lua&quot;]:46: dofile has been disabled

一.问题描述 PC机安装ubuntu14.04,使用root用户登陆. 启动wireshark时,出现一下的Error对话框: Lua: Error during loading: [string "/usr/share/wireshark/init.lua"]:46: dofile has been disabled due to running Wireshark as superuser. 二.解决方法 修改/usr/share/wireshark/init.lua # vi /

ubuntu/wireshark -Lua: Error during loading: [string &quot;/usr/share/wireshark/init.lua&quot;]:45有关问题解决

ubuntu/wireshark --Lua: Error during loading: [string "/usr/share/wireshark/init.lua"]:45问题解决 错误如下: 解决方案:修改init.lua 直接运行wireshark的话会报错: Lua: Error during loading: [string "/usr/share/wireshark/init.lua"]:45: dofile has been disabled 要对

Unity中用Mono插件解析xml文件

1.解压压缩包,把文件夹拖到脚本文件夹下 Mono是第三方基金会开发的开源的东西,通过Mono基础上开发的程序可以在各个系统下运行.开发语言是C#. 用插件解析比较高效,平台运行稳定.使用简单. Unity安装路径中可以找到Mono压缩包 2.新建脚本XmlTest using UnityEngine; using System.Collections; using Mono.Xml; using System.Security; public class XmlTest : MonoBehav

【wireshark】插件开发(三):Lua插件 Dissector

// TODO: 部分内容需要修改 1. 骨架 首先新建一个文件,命名为foo.lua,注意此文件的编码方式不能是带BOM的UTF8,否则wireshark加载它时会出错(不识别BOM): -- @brief Foo Protocol dissector plugin -- @author zzq -- @date 2015.08.12 -- create a new dissector local NAME = "foo" local PORT = 9877 local foo =