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

Wireshark lua插件开发第二周进展

时间:2023-11-26 19:22:24浏览次数:42  
标签:解析器 插件 Lua -- local lua buf Wireshark

1. Lua简介

Lua是一种轻量级的脚本语言,解释执行,不需要编译器之类的。 Lua的基本语法可以参考 官网 或者 菜鸟教程。
Wireshark内置了对Lua脚本的支持,可以直接编写Lua脚本,无需配置额外的环境,使用起来还是非常方便的。 [Wireshark Developer's Guide]里的第10章和第11章都是关于Lua支持的文档,有需要的话可以详细查阅。

2. Wireshark Lua插件基本结构

Wireshark Lua插件主要包括Dissector和DissectorTable两个重要概念:

  • Dissector(解剖器): 用于解析特定协议的类,我们需要编写的主要是这一部分。
  • DissectorTable(解剖器表): 用于组织不同解析器,使Wireshark能够根据协议选择合适的解析器。

3. 编写Lua插件实例

本周简单写了一段lua脚本并再wireshark里启用。对于课设任务要求,小组仍在多加努力,争取赶上任务要求进度

do
    -- 定义协议名称和描述
    local myProtocol = Proto("MyProtocol", "Custom Protocol")

    -- 定义协议字段
    local f_field1 = ProtoField.uint8("MyProtocol.field1", "Field 1", base.HEX)
    local f_field2 = ProtoField.uint16("MyProtocol.field2", "Field 2", base.HEX)

    -- 将字段添加到协议
    myProtocol.fields = {f_field1, f_field2}

    -- 获取data解析器
    local data_dissector = Dissector.get("data")

    -- 解析器函数
    local function myProtocol_dissector(buf, pkt, root)
        local buf_len = buf:len()

        -- 根据协议报文格式判断是否为自定义协议
        if buf_len < 3 or buf(0, 1):uint() ~= 0xAA then
            -- 不是自定义协议,调用data解析器
            return data_dissector:call(buf, pkt, root)
        end

        -- 提取字段值
        local field1_value = buf(1, 1):uint()
        local field2_value = buf(2, 2):uint()

        -- 在Packet Details窗口显示协议信息
        local tree = root:add(myProtocol, buf)
        tree:add(f_field1, buf(1, 1)):append_text(", Field 1: " .. field1_value)
        tree:add(f_field2, buf(2, 2)):append_text(", Field 2: " .. field2_value)

        -- 设置Packet List窗口的协议列
        pkt.cols.protocol = "MyProtocol"

        -- 返回true表示成功解析
        return true
    end

    -- 将解析器函数注册到协议解析器
    function myProtocol.dissector(buf, pkt, root)
        myProtocol_dissector(buf, pkt, root)
    end

    -- 将协议解析器添加到udp.port解析器表,监听特定端口
    local udp_table = DissectorTable.get("udp.port")
    udp_table:add(12345, myProtocol)
end

4. 启用Lua插件

  1. 将上述代码保存为lua文件,例如my_protocol.lua

  2. 打开Wireshark,选择菜单【文件】-【全局配置文件夹】,找到init.lua文件。

  3. init.lua文件末尾添加以下内容:

    dofile("path/to/my_protocol.lua")
    

    将路径替换为实际文件路径。

    想要启用Lua插件,首先要确认你的Wireshark版本是支持Lua的(Windows版本默认应该都是启用支持了的)。可以通过【帮助】-【关于】窗口确认:

  4. 重新启动Wireshark或选择【分析】-【重新载入Lua插件】。

5. 调试和测试

  1. 抓取包含自定义协议的数据包。
  2. 在Wireshark中查看Packet List,应该能够看到协议列显示为"MyProtocol"。
  3. 选择数据包,查看Packet Details,应该显示解析后的协议字段信息。

6. 高级功能

如果自定义协议中包含嵌套的协议(例如以太网、IP等),可以在解析器函数中调用其他解析器。示例代码已提供如何在解析器函数中调用以太网解析器。

标签:解析器,插件,Lua,--,local,lua,buf,Wireshark
From: https://www.cnblogs.com/zsy1748774883/p/17857737.html

相关文章

  • WPS加载EndNote X9插件
    参考官方教程,针对EndNoteX9版本修改1、关闭WPS。2、找到路径C:\ProgramFiles(x86)\EndNoteX9\Product-Support\CWYW,将Cwyw_X86.dat的后缀修改为.zip注意这里是把Cwyw_X86.dat重命名为Cwyw_X86.zip,不是把Cwyw_X86.dat文件压缩成Cwyw_X86.zip3、新建目录C:\ProgramFiles(x......
  • ChatGPTGPT本地一键登录,无需魔法即开即用:PandoraNext重磅归来,支持chatgpt所有最新功
    PandoraNext简单介绍PandoraCloud+PandoraServer+SharedChat+BackendAPIProxy= PandoraNext支持GPTs,最新UI。支持多种登录方式:(相当于PandoraCloud)账号/密码AccessTokenSessionTokenRefreshTokenShareToken可内置tokens(可使用上述所有Token),支持设置密码。(相当于Pan......
  • 惊喜小现:园子的 VSCode 插件
    园子的vscode插件自从2021年12月29日在vscodemarketplace上发布第一版本v0.05以来,已经快两年了。那时我们刚刚忙完忙了大半年的网站整改,百废不知从何处开始兴,一位.NET全栈开发同事一时兴趣边学边做,尝试开发园子的vscode插件。一开始就采用开源的方式,代码托管在git......
  • 如何安装排版插件?
    如何安装排版插件?用专门的压缩包,解压缩出来几个文件在《原版程序》文件夹中点:setup.exe,完成安装安装中会提示没有GMS文件,不用管它,我们用的是破解精简版选版本,选英语,选地址这一步主要是完成破解版的安装将《汉化文件》中的LangR5,复制到*:\eCut\ini的文件夹内,替换之......
  • IDEA插件
    MyBatisXSaveActions热部署JRebelplugins里面搜索jrebel激活jrebel不要勾选启用自动编译不再显示指引问题1:JRebel-JVMTI[FATAL]Couldn'twritetoC:\Users\win10把中文用户名改成英文 ......
  • lua基本语法1
    一注释单行注释 两个减号是单行注释:--注释内容多行注释--[[多行注释多行注释--]] 二)基本类型Lua中有8个基本类型分别为:nil(空)----->javanull(空)boolean(布尔)、number(数字)双精度浮点数--->javaintdoublefloatstring(字符......
  • Pbootcms商城插件安装使用教程
    pbootcms商城插件上线,可以实现简单的商品管理、商品购买、加入购物车、购物车批量购买、以及后台的订单管理,发货管理、改价功能,支付信息管理等功能,满足商城基本功能安装流程:1、上传代码到你的网站根目录下2、导入数据库,数据库总共有四个表,ay_order:订单表,ay_order_data:订单附表,ay_......
  • 好用的IDEA插件——Apipost-Helper-2.0
    今天给大家推荐IDEA插件:ApipostHelper,比市面上很多产品好用并且完全免费!先说一下ApipostHelper的安装和使用安装在IDEA编辑器插件中心输入Apipost搜索安装:Apipost-Helper-2.0配置方法:使用ApipostIDEA插件前需要在IDEA设置中进行配置:云端域名默认为:https://sync-project-ide.a......
  • IDEA插件推荐:Apipost-Helper
    今天给大家推荐一款IDEA插件:Apipost-Helper-2.0,写完代码IDEA内一键生成API文档,无需安装、打开任何其他软件;写完代码IDEA内一键调试,无需安装、打开任何其他软件;生成API目录树,双击即可快速定位API定义的代码…非常好用!而且完全免费!在IDEA编辑器插件中心输入Apipost搜索安装:Apipost-......
  • IDEA必备插件!一键生成接口文档
    IDEA是一款功能强大的集成开发环境(IDE),它可以帮助开发人员更加高效地编写、调试和部署软件应用程序。我们在编写完接口代码后需要进行接口调试等操作,一般需要打开额外的调试工具,而今天给大家介绍一款IDEA插件:Apipost-Helper-2.0。代码写完直接编辑器内调试、还支持生成接口文档、接......