美文网首页
wireshark 书写lua插件

wireshark 书写lua插件

作者: ShootHzj | 来源:发表于2022-02-24 18:01 被阅读0次

未书写插件前

wireshark的协议不支持之前,报文几乎难以分析,举例如下

image-20210908144418891

Wireshark插件路径

MAC

image-20210908142121894

重新加载Wireshark中的lua插件

MAC

image-20210908141433962

从一个新协议的样板开始

pulsar_protocol = Proto("Pulsar", "Pulsar Protocol")

pulsar_protocol.fields = {}

function pulsar_protocol.dissector(buffer, pinfo, tree)
    length = buffer:len()
    if length == 0 then
        return
    end
    pinfo.cols.protocol = pulsar_protocol.name
    local subtree = tree:add(pulsar_protocol, buffer(), "Pulsar Protocol Data")
end

local tcp_port = DissectorTable.get("tcp.port")
tcp_port:add(6650, pulsar_protocol)

我们从协议对象开始,命名为pulsar_protocol。构造函数两个参数分别为名称和描述。协议需要一个fields表和dissecotr函数。我们现在还没有任何field,所以fields表为空。对于每一个报文,dissctor函数都会被调用一次。

dissector函数有三个入参,bufferpinfo,和treebuffer包含了网络包的内容,是一个Tvb对象。pinfo包含了wireshark中展示packet的列信息,是一个Pinfo对象。tree是wireshark报文详情显示的内容,是TreeItem对象。

dissector函数中,我们检查buffer的长度,如果长度为0,则立即返回

pinfo对象包含着列信息,我们可以将pinfo的protocol设置为pulsar,显示在wireshark的界面中。接下来在packet的结构中创建一个子树,最后,我们把协议绑定到6650端口上。让我们加载这个lua插件

mkdir -p ~/.local/lib/wireshark/plugins
cp $DIR/../../pulsar_dissector.lua ~/.local/lib/wireshark/plugins/pulsar_dissector.lua

结果符合预期

image-20210908145821228

添加长度字段

让我们添加一个长度字段,pulsar协议中,长度字段即就是前4个字节,定义字段

message_length = ProtoField.int32("pulsar.message_length", "messageLength", base.DEC)

pulsar_protocol.fields = { message_length }

pulsar.message_length可以用在过滤器字段中。messageLength是子树中的label。第三个字段决定了这个值会被如何展示

最后,我们把长度值加入到Wireshark的tree中

subtree:add(message_length, buffer(0,4))

pulsar的协议是大端序,我们使用add函数。如果协议是小端序,我们就可以使用addle函数。

image-20210908153825471

我们添加的message_length字段已经可以显示在Wireshark中了

添加额外信息

protoc加入到wireshark

参考及附录

proto field函数列表

https://www.wireshark.org/docs/wsdg_html_chunked/lua_module_Proto.html#lua_fn_ProtoField_char_abbr___name____base____valuestring____mask____desc__

wireshark解析protobuf

https://ask.wireshark.org/question/15787/how-to-decode-protobuf-by-wireshark/

相关文章

  • wireshark 书写lua插件

    未书写插件前 wireshark的协议不支持之前,报文几乎难以分析,举例如下 Wireshark插件路径 MAC ...

  • Wireshark导出H264的插件

    一、Lua插件代码怎么用? 在wireshark安装目录下有一个init.lua的脚本文件在init.lua的最后...

  • Lua编写wireshark插件

    在我们自己的系统中,会自定义协议,甚至加密;为了更容易进行抓包分析,我们需要编写wireshark插件. 前提 w...

  • Wireshark的Lua插件

    填坑

  • Lua编写Wireshark插件实战

    标签(空格分隔): Wireshark Lua 参考:http://yoursunny.com/t/2008/Wi...

  • Wireshark安装lua插件解析Redis协议

    引言 在未安装Lua插件直接使用Wireshark对Redis进行抓包时发现有抓取到Redis端口的数据,但都是T...

  • LuaIde slua Api api 生成

    插件下载地址: sluaApi生成插件 注意: luaide 由于支持多套lua 解决方案,而每套lua方案会有多...

  • LuaIde ulua Api生成

    插件下载地址: uluaApi生成插件 注意: luaide 由于支持多套lua 解决方案,而每套lua方案会有多...

  • LuaIde xlua Api生成

    插件下载地址: xluaApi生成插件 注意: luaide 由于支持多套lua 解决方案,而每套lua方案会有多...

  • WireShark提示Lua错误

    今天启动wireshark抓包时候发现一个错误,记录一下 编辑配置文件 将倒数第二行配置 保存,重新启动程序即可!...

网友评论

      本文标题:wireshark 书写lua插件

      本文链接:https://www.haomeiwen.com/subject/zgttrrtx.html