`
xumingyong
  • 浏览: 182397 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

使用lua编写Wireshark的dissector插件

阅读更多

Dissector 插件可以用来对特定的协议内容进行分析展示,在分析自己实现的应用层协议时还是很有用的。 dissector 插件一般用 C 来实现,具体如何实现可以参考 Wireshark 代码目录下面的 \epan\dissectors 中的源代码和 plugins 目录下面的源代码。

 

一些简单的对性能要求不高的 dissector 插件也可以使用 Lua 来实现。 Wireshark 已经嵌入了对 Lua 的支持。

 

下面就是一个简单的例子:  

 

-- 定义协议,可以在wireshark中使用trivial过滤

trivial_proto = Proto("trivial","TRIVIAL","Trivial Protocol")

 
-- dissector函数

function trivial_proto.dissector(buffer,pinfo,tree)

    --pinfo的成员可以参考用户手册

    pinfo.cols.protocol = "TRIVIAL"

    pinfo.cols.info = "TRIVIAL data"

    local subtree = tree:add(trivial_proto,buffer(),"Trivial Protocol")


    --不对应任何数据

    subtree:add(buffer(0,0),"Message Header: ")

   
    --版本号对应于第一个字节

    subtree:add(buffer(0,1),"Version: " .. buffer(0,1):uint())

   
    --类型对应于第二个字节

    type = buffer(1,1):uint()

    type_str = "Unknown"

    if type == 1 then

        type_str = "REQUEST"

    elseif type == 2 then

        type_str = "RESPONSE"

    end

    subtree:add(buffer(1,1), "Type: " .. type_str)

 

    --从第三个字节开始是数据

    size = buffer:len()

    subtree:add(buffer(2,size-2), "Data: ")

      

end

 

tcp_table = DissectorTable.get("tcp.port")

--注册到tcp的8888端口

tcp_table:add(8888,trivial_proto)

 

 

插件编写完成后保持为 test.lua 文件,我们就可以抓包测试一下了。

 

首先请确认你的 Wireshark 支持 lua ,如果 Wireshark 目录下面有 init.lua 文件就说明支持 Lua 。其次需要启动对 Lua 的支持,默认不启动对 Lua 的支持。编辑 init.lua 文件,注释掉“ disable_lua = true; ”这一行,然后在文件的最后添加一行 dofile("test.lua") ,这样 Wireshark 启动时就会自动调用 test.lua 。也可以在命令行指定需要执行的脚本文件, 比如“ wireshark  -X lua_script:test.lua ”。

 

分享到:
评论
1 楼 bonix 2009-12-20  
文章很不错,网上能参考的资料很少,参考楼主的文章给自己项目中的协议编写了插件,以可以正常解析
有几个问题想跟楼主交流一下:
1-协议中日期类型字段如何处理,比如是 8 字节的long,lua如何转成日期显示
2-如果协议流中的数据是本机序,lua如何做转序

相关推荐

    wireshark使用Lua编写dissector

    ### 使用Lua编写Wireshark Dissector #### 引言 Wireshark是一款广泛使用的网络协议分析工具,能够捕获和解析各种类型的网络流量。对于高级用户而言,Wireshark提供了强大的扩展功能,允许用户通过自定义插件来解码...

    wireshark Lua脚本插件源码

    在这个压缩包文件中,包含了一个使用Lua编写的Wireshark插件源码,以及一个相关的.pcap抓包文件,让我们来深入探讨一下这些内容。 首先,`ScoreBoard.lua`是Lua脚本文件,很可能用于解析特定的私有协议。在...

    制作lua脚本抓取wireshark自定义协议报文

    在Wireshark中,我们可以使用Lua编写自定义的解析器来捕获和解析特定的协议报文,极大地增强了Wireshark的功能。 在标题"制作lua脚本抓取wireshark自定义协议报文"中,主要涉及两个关键知识点:Wireshark的Lua脚本...

    bmp-dissector:由lua编写的用于wireshark的BGP监控协议(BMP)解析器

    由 lua 编写的用于wireshark的BGP监控协议(BMP)解析器。 参考 用法 视窗 注释掉“%WIRESHARK%\init.lua”中的“disable_lua=true”。 (大概配置) bmp.lua 复制到“%WIRESHARK%\plugins\<version>\”或“%APP...

    Wireshark+lua插件方式抓包及解析OMCI协议报文详细信息

    这通常涉及创建一个`.lua`文件,并可能需要创建配套的`.dissector`文件来定义插件在Wireshark中的行为。 通过以上步骤,你可以利用Wireshark和Lua插件深入解析OMCI协议报文,从而更好地理解和管理GPON网络中的ONT...

    wireguard-dissector:Wireshark解剖器(用Lua编写),用于解剖WireGuard隧道协议

    Wireshark解剖器(用Lua编写),用于解剖隧道协议。 此解剖器已过时,Wireshark 2.9.x中包含改进的版本。 有关更多说明,请参。 要求: Wireshark 2.0.2或更高版本(已通过Wireshark 2.3.x测试)。 和Libgcrypt ...

    WireBait:在没有Wireshark的情况下运行和测试Lua Wireshark解剖器或捕获数据

    而Lua是一种轻量级的脚本语言,Wireshark支持使用Lua编写自定义的数据包解剖器,以便更深入地分析网络流量。 **描述解析:** 描述重申了标题中的信息,强调WireBait的核心功能是为Lua Wireshark解剖器提供独立的...

    iperf3_dissector:适用于Wireshark的Iperf3解剖器

    #Iperf3 Wireshark的解剖器Wireshark已经包含一个iperf2解剖器,但在iperf3中,某些字段已更改顺序,外加UDP端口。 因此,我制作了这个小LUA文件来识别和解析iperf3 UDP数据包。 工作基于 要安装,只需将LUA文件...

    TriStation-Wireshark-Dissector:适用于TriStation协议的基本Wireshark LUA解剖器

    TriStation解剖器是TriStation协议... 它比#tubular还要粗糙,但这是TriStation的基本Wireshark LUA解剖器。 参考pcap: ://packettotal.com/app/analysis id 0e55d9467f138d148c9635617bc8fd83 参考资料blahg: :

    wirehark-lua:源生成的跨平台wireshark解剖器

    在Wireshark-Lua中,开发者可以利用Lua语言的强大功能来编写自定义的解剖器模块,这些模块能够解析特定的网络数据包,展示在Wireshark的用户界面中。例如,对于金融市场的协议,如 ITCH(Interactive Trading Hub)...

    Wireshark-RFID-dissector

    Wireshark-RFID-解剖器... 在某些旧版本中,Lua是作为插件提供的。 要查看您的Wireshark版本是否支持Lua,请转到: 帮助菜单 关于Wireshark Wireshark选项卡 在“编译对象”段落中查找Lua。 ####如何在Wireshark上添

    Wireshark:添加一个基础的解析器

    Wireshark是一款功能强大的网络协议分析工具,它提供了一个强大的插件机制,允许开发者创建自己的协议解析器。下面我们将逐步设计一个基础的解析器,从而了解Wireshark解析器的开发流程。 一、解析器的类型 ...

    alfred-dissector:用于 ALFRED 的 Wireshark 解剖器

    ALFRED Dissector是专为Wireshark设计的一个插件,用于解析ALFRED(ALFRED,可能是“Advanced Lightweight Framework for Real-time Event Distribution”)协议的数据包。本文将详细介绍如何安装和使用ALFRED ...

    kagwang:适用于IEEE 1905.1协议的Wireshk Dissector插件。-开源

    IEEE 1905.1标准描述了用于异构技术(例如PLC,WLAN,以太网和MoCA)的融合数字家庭网络。... 它以LUA脚本的形式实现,因此可以轻松地插入到现有的Wireshark安装中。 有关如何安装插件的提示,请参见文件开头的注释。

    simpleai:SimpleAI是一个基于C ++ AI行为树的小型库,带有在MIT下发布的基于QT5的远程调试器(以及可选的LUA绑定)。

    文献资料 有关详细说明,请参阅。 外部依赖关系: 简易AI 它们都包括在内和/或可以被禁用。 lua 5.3 ... 可以使用随附的Dissector Lua脚本在Wireshark中检查远程调试器网络协议。 为了减少编译时间,您

    zenoh-dissector:用于Wireshark的Zenoh协议解剖器

    Zenoh解剖器协议解析器,适用于Wireshark在...广泛的测试用法要使用此功能,请将zenoh.lua复制到〜/ .local / lib / wireshark / plugins。 然后,当您运行Wireshark时,它将把端口7447上的TCP / UDP通信理解为Zenoh

    nex-dissector:任天堂专有的prudprmcnex协议栈的Wireshark解剖器-请参阅https

    如果您已有现有的init.lua文件以所需顺序加载Wireshark插件,请init.lua文件与该存储库中的init.lua合并。 您将需要在Wireshark文件夹的nex-keys.txt中添加您的NEX PID和您的NEX密码(针对您的设备)-解剖器将自动...

    wireshark-rtp-h264-extractor

    rtp_h264_extractor 将RTP h.264有效负载转储到原始h.264文件(* .264) 根据RFC3984将RTP的H264有效内容分解为NALU,并将... 您可以通过菜单“工具->将H264导出到文件[HQX的插件]”来访问此功能。 作者:黄强雄( )

Global site tag (gtag.js) - Google Analytics