美文网首页python自制小工具
wireshark通过Lua脚本解析自定义协议--Apple的学

wireshark通过Lua脚本解析自定义协议--Apple的学

作者: applecai | 来源:发表于2022-08-05 20:42 被阅读0次

    一,前言

    分析以太网数据很很多种方法,比如网络调试助手,比如wireshark,10年前我就玩过wireshark,当时为了学习tcpip协议分析报文,而本次的目的是分析udp中的自定义协议,基于网络调试助手保存的字符串通过python解析为excel已经完成了,但是我还是想玩下wireshark添加插件的方式来解析自定义协议。

    二,调研

    几年前我就想基于wireshark来做Doip的解析插件,不过后来没空,只是了解到有c++和Lua语言的插件。c++需要安装各种环境来使用,而Lua脚本就比较容易。但是具体Lua的接口是什么我都不清楚,所以本次选择Lua来重点研究,没想到百度一下很顺利找到了wireshark的Lua插件使用方法。

    三,尝试用Lua语言制作插件

    主要就是协议名称,字段定义,显示分支添加及绑定字段

    my_proto = Proto("MYPRO","MY Protocol")
    -- 第一个参数用于过滤器的字段,第二个是数据显示时的名称,第三个是数据类型
    flag1 = ProtoField.uint16("myproto.flag1", "flag1", base.HEX)
    flag2 = ProtoField.uint16("myproto.flag2", "flag2", base.HEX)
    data = ProtoField.uint8("myproto.data", "data", base.HEX)
    floatTest = ProtoField.float("myproto.floatdata", "floatdata")
    -- 声明协议的字段
    my_proto.fields = {
        flag1,
        flag2,
        data,
        floatTest
    }
    
    
    function my_proto.dissector(buffer,pinfo,tree)
        if buffer:len() == 0 then return end
        
        pinfo.cols.protocol = my_proto.name
        local subtree = tree:add(my_proto,buffer(),"my protocol data")
        -- 解析分支
        --local head_st = subtree:add(my_proto, buffer(), "header")
        local payload_st = subtree:add(my_proto, buffer(), "payload")
        
        -- 根据字段大小,添加到子树
        payload_st:add_le(flag1, buffer(12,2)) --little-endian,从0位置解析4个字节
        payload_st:add_le(flag2, buffer(14,2))
        
        -- 解析成具体的类型提示追加在字段后面
        payload_st:add_le(data, buffer(15,1))
        payload_st:add_le(floatTest, buffer(16,4))
    
    end
    
    local udp_port = DissectorTable.get("udp.port")
    udp_port:add(30000,my_proto)
    
    

    四,效果

    image.png

    五,小结

    不需要精通Lua脚本,只要基于框架了解简单语法进行修改,就能实现从那么多数据中选择关键数据直接解析,直接观察,效果已经达到了,又掌握了一项提高工作效率的技能。
    方法越多,效率越高,不想求人,就得自己掌握所有环节,摆脱一切依赖项,减少障碍,做事的时候可以一路畅通,这也是我学习各种技能的动力之一,哈哈~

    相关文章

      网友评论

        本文标题:wireshark通过Lua脚本解析自定义协议--Apple的学

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