精华内容
下载资源
问答
  • S7comm Plus wireshark 插件

    2020-10-16 16:15:40
    S7comm Plus wireshark 插件,用于wireshark 解析工控协议S7commen Plus;实测可用
  • 基于LUA的wireshark插件,利用listener搭建一个对esp协议包的包序号连续性检验的提示器
  • CMCC Portal Wireshark 插件

    2017-07-20 13:32:37
    中国移动Portal协议分析的Wireshark插件,可分析CMCC Portal协议。使用方法:1)将cmccportal.lua放到wireshark的安装根目录,2)修改wireshark根目录下的init.lua,在文件最后增加dofile(DATA_DIR.."cmccportal.lua...
  • wireshark插件omci.lua

    2018-09-20 16:05:46
    添加插件wireshark可以解析OMCI的报文,过滤条件直接使用OMCI即可过滤。
  • 基于Lua语言的wireshark插件编写

    千次阅读 2019-12-12 21:43:20
    想要开发wireshark插件,我们可以使用C语言也可以使用Lua语言。如下图,是使用两种语言开发插件的对比。 如上图,我最后选择使用Lua语言进行开发wireshark插件。 二、插件功能 目前我有一个任务,需要解析RTP包的...

    一、两种语言开发插件的对比

    • 想要开发wireshark插件,我们可以使用C语言也可以使用Lua语言。如下图,是使用两种语言开发插件的对比。在这里插入图片描述
    • 如上图,我最后选择使用Lua语言进行开发wireshark插件。

    二、插件功能

    • 目前我有一个任务,需要解析RTP包的payload,这个payload前三个字节是自定义的字节,后面的才是H264的数据、或者OPUS的数据。
    • 因此我需要在RTP包的上层进行解析RTP包的payload,并且让H264的数据按照H264的格式或者OPUS的格式来显示。在这里插入图片描述

    本篇博文重点介绍如何基于Lua语言去编写wireshark插件。

    • 具备的基础:
      1. Lua语言基础,可以去这个网站去学习简单的Lua语言基础。https://www.runoob.com/lua/lua-miscellaneous-operator.html
      2. 熟悉wireshark的使用,并且去浏览一下wireshark支持Lua语言的API。https://www.wireshark.org/docs/wsdg_html_chunked/lua_module_Proto.html
      3. 剩下的就只需要看一下我的这篇博文就好了

    三、Lua插件API介绍

    3.1 Proto
    • 表示一个新的Protocol,在Wireshark中Protocol对象有很多用处,解析器是其中主要的一个。主要接口有:
    接口说明
    proto:__call (name,desc)创建Proto对象。name和desc分别是对象的名称和描述,前者可用于过滤器等
    proto.nameget名称
    proto.fieldsget/set字段
    proto.prefsget配置项
    proto.init初始化,无参数
    proto.dissector解析函数,3个参数tvb,pinfo,tree,分别是报文内容,报文信息和解析树结构
    proto:register_heuristic (listname, func)为Proto注册一个启发式解析器,被调用时,参数func将被传入与dissector方法相同的3个参数
    • 如下的例子,创建一个新的协议
    local NAME1          = "red"
    local PORT           = 5004
    local RTP_PROTO_TYPE = 106
    local red    = Proto(NAME1, "Red Protocol")
    
    3.2 ProtoField
    • 表示协议字段,一般用于解析字段后往解析树上添加节点。根据字段类型不同,其接口可以分为两大类。

    • 整型:
      • ProtoField.{type} (abbr, [name], [desc],[base], [valuestring], [mask])
      type包括:uint8, uint16, uint24, uint32, uint64, framenum

    • 其他类型
      • ProtoField.{type} (abbr, [name], [desc])
      type包括:float, double, string, stringz, bytes, bool, ipv4, ipv6, ether,oid, guid

    • 这些接口都会返回一个新的字段对象。方括号内是可选字段,花括号内是可替换的类型字段。

    • 如下图的例子,

    -- create fields of red
    fields_M             = ProtoField.uint8 (NAME1 .. ".M", "M", base.HEX,Payload_type,0x80)
    fields_pt            = ProtoField.uint8 (NAME1 .. ".PT", "PT", base.DEC,Payload_type,0x7F)
    fields_seqno         = ProtoField.uint16(NAME1 .. ".seqno", "Sequence number")
    fields_h264bytes     = ProtoField.bytes(NAME1 .. ".bytes", "H264Data")
    fields_fec           = ProtoField.bytes(NAME1 .. ".fec", "FEC Payload")
    
    • 当添加这写字段后,我们看如下图的实际加载情况
      在这里插入图片描述
    3.3 Tvb
    • Tvb(Testy Virtual Buffer)表示报文缓存,也就是实际的报文数据,可以通过下面介绍的TvbRange从报文数据中解出信息。主要接口有:
    接口说明
    tvb:__tostring()将报文数据转化为字符串,可用于调试
    tvb:reported_len()get tvb的(not captured)长度
    tvb:len()get tvb的(captured)长度
    tvb:reported_length_remaining()获取当前tvb的剩余长度,如果偏移值大于报文长度,则返回-1
    tvb:offset()返回原始偏移
    • 我们最常使用应该就是“tvb:len()”
    3.4 Pinfo
    • 报文信息(packet information)。主要接口有:
    接口说明
    pinfo.len pinfo.caplenget报文长度
    pinfo.abs_tsget报文捕获时间
    pinfo.numberget报文编号
    pinfo.src pinfo.dstget/set报文的源地址、目的地址
    pinfo.columns pinfo.colsget报文列表列(界面)
    • 取得报文列表列后,就可以设置该列的文本,比如
        -- show protocol name in protocol column
        pinfo.cols.protocol = red.name
    

    在这里插入图片描述

    • 如上图所示,我们就可以将协议名称修改为RED。
    3.5 DissectorTable
    • 表示一个具体协议的解析表,比如,协议TCP的解析表”tcp.port”包括http,smtp,ftp等。可以依次点击wireshark菜单“Internals”、“Dissector tables”,来查看当前的所有解析表。如下图,我们选择 rtp.pt解析表在“Integer tables”选项卡中,顾名思义,它是通过类型为整型的 rtp 端口号来识别下游协议的:
      在这里插入图片描述
    • DissectorTable的主要接口有:
    • 接口说明
    接口说明
    DissectorTable.get(name)get名为name的解析表的引用
    dissectortable:add(pattern, dissector)将Proto或Dissector对象添加到解析表,即注册。pattern可以是整型值,整型值范围或字符串,这取决于当前解析表的类型
    dissectortable:remove(pattern, dissector)将满足pattern的一个或一组Proto、Dissector对象从解析表中删除

    四、代码框架

    -- create a new dissector
    local NAME = "red"
    local PORT = 5004
    local red = Proto(NAME, "Red Protocol")
    
    
    -- dissect packet
    function red.dissector (tvb, pinfo, tree)
    end
    
    -- register this dissector
    DissectorTable.get("udp.port"):add(PORT, red)
    
    • 如上图,就是整体的三部分式的代码框架,首先需要定义一个新协议,就是给这个新协议起一个新的名字。
    • 接下来,就是对这个新协议进行解析,在 red.dissector 这个函数中写我们解析这种包的逻辑。
    • 最后就是将这个新协议添加到 udp 这个已有协议的的底下,用端口号进行区分。在这里插入图片描述

    五、完善代码

    local version_str = string.match(_VERSION, "%d+[.]%d*")
    local version_num = version_str and tonumber(version_str) or 5.1
    local bit = (version_num >= 5.2) and require("bit32") or require("bit")
    
    -- create a new dissector to decode rtp private payload
    local NAME1          = "red"
    local PORT           = 5004
    local RTP_PROTO_TYPE = 106
    
    
    local red            = Proto(NAME1, "Red Protocol")
    
    -- create fields of red
    fields_M             = ProtoField.uint8 (NAME1 .. ".M", "M", base.HEX,Payload_type,0x80)
    fields_pt            = ProtoField.uint8 (NAME1 .. ".PT", "PT", base.DEC,Payload_type,0x7F)
    fields_seqno         = ProtoField.uint16(NAME1 .. ".seqno", "Sequence number")
    fields_h264bytes     = ProtoField.bytes(NAME1 .. ".bytes", "H264Data")
    fields_fec           = ProtoField.bytes(NAME1 .. ".fec", "FEC Payload")
    
    red.fields           = { fields_M, fields_pt, fields_seqno, fields_h264bytes,fields_fec }
    
    local RTP_dis        = Dissector.get("rtp")
    local H264_dis       = Dissector.get("h264")
    local Data_dis       = Dissector.get("data")
    
    
    -- dissect packet
    function red.dissector(tvb, pinfo, tree)
    	length = tvb:len()
    	if length == 0 then return end
        -- decode private header
        local subtree = tree:add(red, tvb(0,3))
    	subtree:add(fields_M, tvb(0,1))
    	subtree:add(fields_pt, tvb(0,1))
        subtree:add(fields_seqno, tvb(1,2))
    
        -- show protocol name in protocol column
        pinfo.cols.protocol = red.name
       	
    	local fec_id = tvb(0,1):uint()
    	local fec_type = bit.band(fec_id,0x7F)
    	if fec_type == 109 then 
    		tree:add(fields_fec,tvb(3))
    	else 
    		H264_dis:call(tvb(3):tvb(), pinfo, tree)
    	end 
    end
    
    
    --decode first layer  as rtp
    local udp_dissector_table = DissectorTable.get("udp.port")
    udp_dissector_table:set(PORT,RTP_dis)
    
    -- register this dissector
    -- DissectorTable.get("rtp.pt"):add(PORT, red)
    --decode private protocol layer  3-bytes private datas + standard h264
    local rtp_dissector_table = DissectorTable.get("rtp.pt")
    rtp_dissector_table:set(RTP_PROTO_TYPE,red)
    
    • 如上的代码就是扩展代码框架来正确达成我的目的的。
    • 我们可以根据不同的需求编写不同的解析代码。

    六、加载到wireshark中

    • 将Lua文件保存到wireshark的根目录下。比如:在这里插入图片描述
    • 然后在 wireshark 的根目录下找到 “init.lua” 文件。 打开它,使用记事本或者notepad++或者其他软件都可以。在这个文件的开头修改”enable_lua = true“,请参考这段代码上面的注释,不同版本可能不一样。
      在这里插入图片描述
    • 接下来在这个文件”init.lua“ 的最后将我们增加到wireshark根目录的Lua文件添加。如下图:在这里插入图片描述
    • 这个时候Lua文件就已经被嵌入到wireshark中了,有两种启动Lua插件的办法,要么就是重启wireshark,要么就是在wireshark的”分析“菜单下点击“重新载入Lua插件”。在这里插入图片描述

    七、后记

    • 我的整体代码放在我githup上了,链接:https://github.com/zhangyi-13572252156/Wireshark-Plug-In
    • 如果需要交流,欢迎交流。QQ:1251108673
    展开全文
  • 1. 将下载的文件解压至Wireshark根目录 2. 修改Wireshark根目录init.lua文件,拉到最后,添加如下内容: dofile("CMPPv2.lua") dofile(DATA_DIR.."sgip.lua") dofile(DATA_DIR.."smgp.lua")...
  • 中国移动短信网关协议CMPPv2 wireshark插件
  • wireshark 包解析插件

    2013-03-09 10:37:30
    使用方法: 1. 打开wireshark根目录中的init.lua文件, 将disable_lua=false 并在最后添加dofile("map_port_set.lua") 2. 将map_port_set.lua 拷贝到wireshark根目录下 3. 重启wireshark 打开laft6-pcp....
  • 用lua语言编写Wireshark插件解析自定义协议
  • Wireshark协议插件 smgp

    2018-11-07 15:06:21
    Wireshark协议插件 smgp,电信短信协议解析插件Wireshark smgp协议插件
  • 2. 安装好wiresshark后的目录(**/**/Wireshark)下创建一个 lua 文件夹。把root3.0放在当前文件夹下 并解压 3. 在wiresshark目录下 init.lua 文件目录添加上一行 dofile(DATA_DIR.."lua/robotV3_0/robot.lua"&#...
  • Wireshark插件可与Windows事件跟踪一起使用 Microsoft Message Analyzer即将退休,其下载包已于2019年11月25日从microsoft.com网站上删除。Wireshark已建立了庞大的网络协议解剖器库。 Windows的最佳工具是可以收集...
  • wireshark插件开发

    2014-09-16 15:45:12
    wireshark插件开发,version_info
  • Asterix是命令行实用程序和Wireshark插件,用于从标准输入,文件或网络多播流中读取和解析Eurocontrol ASTERIX协议数据。 ASTERIX代表“通用结构化的Eurocontrol监控信息交换”。 它是一种ATM监视数据二进制消息格式...
  • wireshark omci 解析插件

    2017-08-28 14:57:25
    绝对可以使用
  • DoIP wireshark协议分析插件wireshark版本需2.6.0以上,2.6.5版本测试有效
  • 实时以太网TRDP的应用逐渐的在增多,而我们目前的所用的抓包器在TRDP网络中抓到的数据包显示为UDP,虽然可以看到数据包的内容,但加入这个链接库后,在wireshark就可以看到名为TRDP的数据包,且也可以使用trdp的命令...
  • 1. 从Application进入`/Applications/Wireshark.app/Contents/Resources/share/wireshark/init.lua`, 2. 在与`init.lua`同目录下加入解压后的文件 3. 修改`init.lua`, 在最后添加: ``` dofile(DATA_DIR.."sgip....
  • wireshark h264导出插件

    2019-02-13 09:31:36
    将附件的rtp_h264_extractor.lua文件,放到wireshark安装目录下,然后修改wireshark安装目录下的init.lua文件: (1)若有disable_lua = true这样的行,则注释掉; (2)在文件末加入dofile("rtp_h264_extractor.lua...
  • Wireshark lua 插件简介

    千次阅读 2020-01-05 10:26:58
    简单介绍在使用lua插件过程中可能会遇到的一些问题以及解决办法

    在我的专栏《wireshark从入门到精通》前面的章节中,学习了wireshark UI界面的使用技巧,学习了命令行工具的使用方法。除此之外为了方便使用者的灵活定制,比如说按需批量修改报文,完成某种私有协议的解析等方面的功能。wireshark提供了lua插件的功能,扩展了对于wireshark的使用。当然像我在上一节源码概览那一部分所述那样,也是可以写C插件的。但是如果就完成某个功能而言,通常还是使用lua插件,因为其编写起来相对的容易,能够快速的完成特定的需求,本节对此功能先做一次简单的介绍,重点还是使用过程中可能出现的问题以及解决办法,具体的使用示例及API接口解释在后续章节会一一道来。

    首先wireshark对外提供了lua接口,因此插件脚本需要使用lua语言进行编写。为了支持对于lua的解释,wireshark集成了lua的解释器,如图1:
    在这里插入图片描述
    图1

    Lua这门语言是在巴西一所大学实验室里面基于C语言开发出来,具有了很多现代高级语言的特性,因此其使用起来非常的方便。如果有学习过java,python,js等高级语言,相信对于lua会很快的上手。由于Lua的小巧,高效,易扩展等特性,经常用于嵌入式等方面的开发,如C混合编程等。Lua的语言特性和语法规则不是本文所涉及的内容,相关内容可自行学习。本专栏主要是

    展开全文
  • Lua编写wireshark插件基础

    万次阅读 2018-08-08 10:02:53
    最近在做物联网流量分析时发现, App在使用MQTT协议时往往通过SSL+WebSocket+MQTT这种方式与服务器通信,在使用SSL中间人截获数据后,Wireshark不能自动解析出MQTT语义,只能解析到WebSocket层,如图所示。...

    一、背景

    最近在做物联网流量分析时发现, App在使用MQTT协议时往往通过SSL+WebSocket+MQTT这种方式与服务器通信,在使用SSL中间人截获数据后,Wireshark不能自动解析出MQTT语义,只能解析到WebSocket层,如图所示。虽然在Data域中显示了去掉mask的WebSocket数据,但分析起来mqtt仍然很难受。所以打算写一个插件,利用wireshark自带的MQTT解析功能来分析Data部分的数据,而不是自己从头写一个完全新的解析器。注:很多教程是教如何添加一个新的协议,如设置协议的属性等,推荐参考【2】,本文主要梳理编写插件的条理。

    二、Lua编写wireshark插件基础

     有前辈介绍了用Lua写wireshark插件的基础教程,可以参考文末【1】【2】,这里再以自己的理解总结一下,因为实在没有一个文档让我有从入门到精通的感觉。

    1. 首先需要知道解析器(Dissector)和post-dissectors的相关概念【3】

    1)解析器(Dissector)是用来被wireshark调用解析数据包或部分数据包的,需要以Proto对象的形式注册后才能被wireshark调用。同时,我们还可以使用wireshark已经自带的解析器,注册一个解析器的例子代码如下所示。

    -- trivial protocol example
    -- declare our protocol
    --trival是协议名字,后面是说明,均需要在wireshark中唯一。
    
    trivial_proto = Proto("trivial","Trivial Protocol")
    -- create a function to dissect it
    function trivial_proto.dissector(buffer,pinfo,tree)
        pinfo.cols.protocol = "TRIVIAL"
        local subtree = tree:add(trivial_proto,buffer(),"Trivial Protocol Data")
        subtree:add(buffer(0,2),"The first two bytes: " .. buffer(0,2):uint())
        subtree = subtree:add(buffer(2,2),"The next two bytes")
        subtree:add(buffer(2,1),"The 3rd byte: " .. buffer(2,1):uint())
        subtree:add(buffer(3,1),"The 4th byte: " .. buffer(3,1):uint())
    end
    -- load the udp.port table
    udp_table = DissectorTable.get("udp.port")
    -- register our protocol to handle udp port 7777
    udp_table:add(7777,trivial_proto)

    2)解析器注册分为很多种,可以使用函数register_postdissector(trivial_proto)注册为postdissectors,即在所有解析器执行完后执行;也可以在DissectorTable上注册,这样就可以使用wireshark自带的上一层协议解析后的结果。比如,协议TCP的解析表”tcp.port”包括http,smtp,ftp等。例如,你写的解析器想解析tcp端口7777上的某个协议,就使用下面的代码,而不必从tcp或者ip层开始解析。

    -- load the udp.port table
    udp_table = DissectorTable.get("udp.port")
    -- register our protocol to handle udp port 7777
    udp_table:add(7777, trivial_proto)

    这个功能非常强大。直观地,如果想解析WebSocket上的mqtt协议,可以这么写【6】(但是不知什么原因我这么写一直无法成功解析。):

    local mqtt_dissector = Dissector.get("mqtt")
    local ws_dissector_table = DissectorTable.get("ws.port")
    ws_dissector_table:add(8083, mqtt_dissector)

    通过上面这段代码我们学习到,直接获得wireshark中解析器的方法Dissector.get,更多的方法可以参考官方文档11章【7】,比如我们如何获得已经支持的所有协议呢?mqtt协议的解析器关键字是大写还是小写?可以这么写【8】:

    local t = Dissector.list()
    
    for _,name in ipairs(t) do
        debug(name)
    end
    
    --查看所有支持的table
    local dt = DissectorTable.list()
    
    for _,name in ipairs(dt) do
        debug(name)
    end

    3)被调用时,wireshark会传递给解析器三个参数:数据缓冲区(一个Tvb 对象【4】)、包的信息(Pinfo对象【5】)以及显示在图形化中的树形结构(TreeItem 对象 )。注意,理解这三个参数至关重要,同时注意它们不是Lua自身具有的数据类型,经常需要调用对象中的方法转换。通过这三个参数, 解析器就可以获得和修改包的相关信息。

    Tvb就是包的数据内容,可以像这样来提取内容。通常,我们需要提取出来包的内容当做字符串处理,或者提供字符串转换成Tvb来让解析器处理,这时候需要进行一些转换,如下代码所示【10】,详细可参考【9】。

    local b = ByteArray.new(decipheredFrame)
    local bufFrame = ByteArray.tvb(b, "My Tvb")

     Pinfo经常被解释为报文信息,个人理解简单的说就是给了按照图中这个条访问报文的接口,最常见的例子就是修改协议列名称或者info列显示的消息,如pinfo.cols.protocol = "MQTT over Websocket" ,更多的属性从参考文献【5】中可以获取。

     

    TreeItem 对象表示报文解析树中的一个树节点,获得了这个就可以动态往图形化界面里添加节点。

     

    2.调试与启用插件

    启动

    wireshark在启动时会加载init.lua脚本, windows平台在wireshark安装目录下,linux在etc/wireshark下。想要执行我们写的插件,只需在该脚本最后加上dofile(".\\plugins\\mqttoverwebsocket.lua")来执行即可。重新加载Lua脚本的快捷键是Ctrl+Shift+L

    调试

    若脚本有语法错误,wireshark图形界面在加载时会弹出提示;若有运行时错误,会在图形化的协议树中显示;wireshark还有一个Lua终端来执行编写的插件脚本、打印错误信息,通过“工具——Lua——console”打开,动态执行脚本通过“工具——Lua——evaluate”。注意看到输出需要使用wireshark提供的内置函数如debug(text)来输出【14】。

    三、实现解析Websocket上的MQTT协议

     由于不明原因将mqtt协议解析器注册到ws.port或ws.protocol上仍然无法自动解析MQTT,所以我选择首先获得已经解析好去掉mask后的WebSocket的data字段,然后再将其转换成tvb到mqtt解析器中自动解析。获得包解析后内容的方法主要参考【11】和【12】中的解析树的例子,使用fieldinfo类与全局函数all_field_infos()来获得解析树的各个部分内容。

    由于传入mqtt解析器的tree就是这个包的树根,所以也会自动添加一个节点。最后取得了不错的效果。另附github链接:https://github.com/a3135134/Wireshark-Plugin-MQTToverWebSocket.git

     

    do
        -- calling tostring() on random FieldInfo's can cause an error, so this func handles it
        local function getstring(finfo)
            local ok, val = pcall(tostring, finfo)
            if not ok then val = "(unknown)" end
            return val
        end
        
        -- Create a new dissector
        MQTToverWebsocket = Proto("MQTToverWebsocket", "MQTT over Websocket")
        mqtt_dissector = Dissector.get("mqtt")
        -- The dissector function
        function MQTToverWebsocket.dissector(buffer, pinfo, tree)
            local fields = { all_field_infos() }
            local websocket_flag = false
            for i, finfo in ipairs(fields) do
                if (finfo.name == "websocket") then
                    websocket_flag = true
                end
                if (websocket_flag == true and finfo.name == "data") then
                    local str1 = getstring(finfo)
                    local str2 = string.gsub(str1, ":", "")
                    local bufFrame = ByteArray.tvb(ByteArray.new(str2))
                    mqtt_dissector = Dissector.get("mqtt")
                    --mqtt_dissector:call(finfo.source, pinfo, tree) #9 BUG
                    mqtt_dissector:call(bufFrame, pinfo, tree)
                    --mqtt_dissector:call(finfo.value, pinfo, tree)
                    websocket_flag = false
                    pinfo.cols.protocol = "MQTT over Websocket"
                end
        end
            
            --ws_dissector_table = DissectorTable.get("ws.port")
            --ws_dissector_table:add("443",mqtt_dissector)
        end
        -- Register the dissector
        --ws_dissector_table = DissectorTable.get("ws.port")
        --ws_dissector_table:remove(443, mqtt_dissector)
        --ws_dissector_table:add(443, MQTTPROTO)
        --ws_dissector_table:add_for_decode_as(mqtt_dissector)
        register_postdissector(MQTToverWebsocket)
    end

    四、其他注意点

    (1)谈到网络协议,如果涉及到整数必然会有字节序的问题,如果 wireshark 默认使用的是大端字节序,如果协议中的整数采用的是小端字节序,那么请考虑使用 TreeItem 类型的 le_add() 方法替代 add() 方法。

    (2)在 add 和 le_add 方法中,我们可以显式设定我们自己的值,可以给 add 方法传递第三个值,例如:

    local protocol_type = tvb:range(offset, 16):string()
    foo_tree:add(foo_protocol_type, tvb:range(offset, 4), protocol_type)

    这样显示的就是 protocol_type 的内容,另外这里的 protocol_type 类型一定要与上面定义 foo_protocol_type 让 wireshark 解析的一致,不然这个值是无效的,也就是说这个地方 protocol_type 如果是整数,就是无效,反过来也是一样。

    (3)在协议解析树上增加节点不一定要提前定义字段,也就是字段的定义不是必须的,例如,

    local protocol_type = tvb:range(offset, 16):string()
    foo_tree:add(tvb:range(offset, 16), "Protocol Type: " .. protocol_type)

    效果是一样的,但是在过滤器中无法使用此字段。

    (4)pinfo.cols.info:set 方法可以延迟调用,也就说可以在确定了消息的各种属性之后在调用,这样可以更清晰的显示协议的摘要。

    参考文献

    【1】http://www.cnblogs.com/zzqcn/p/4827251.html

    【2】https://mika-s.github.io/wireshark/lua/dissector/2017/11/04/creating-a-wireshark-dissector-in-lua-1.html

    【3】https://wiki.wireshark.org/Lua/Dissectors#Dissectors

    【4】https://wiki.wireshark.org/LuaAPI/Tvb#Tvb

    【5】https://wiki.wireshark.org/LuaAPI/Pinfo#Pinfo

    【6】https://ask.wireshark.org/question/1480/mqtt-over-websocket/

    【7】https://www.wireshark.org/docs/wsdg_html_chunked/lua_module_Proto.html#lua_class_Dissector

    【8】https://osqa-ask.wireshark.org/questions/32288/can-over-ethernet-lua-dissector

    【9】https://www.wireshark.org/docs/wsdg_html_chunked/lua_module_Tvb.html

    【10】https://osqa-ask.wireshark.org/questions/43013/conversion-of-string-into-userdata-type-like-wiresharks-buffer

    【11】https://www.wireshark.org/docs/wsdg_html_chunked/lua_module_Field.html#lua_class_Field

    【12】https://wiki.wireshark.org/Lua

    【13】https://wiki.wireshark.org/Lua/Examples#View_Packet_Tree_of_Fields.2FFieldInfo

    【14】https://wiki.wireshark.org/LuaAPI/Utils

       [15] https://www.cnblogs.com/lvdongjie/p/4073241.html

     

    By ascii0x03, 2018/4/10,转载请注明出处

    展开全文
  • wireshark插件开发 - C插件解析

    千次阅读 2017-09-20 17:28:26
    相比较而言,C语言就比较麻烦,需要准备一堆开发环境和第三方库,不够简洁,不过C语言的一个优点就是快。然而,Lua语言在脚本语言也是出了名的快,除非报文的流量非常大。   C语言这部分内容相对多些, 主要涉及...
    相比较而言,C
    语言就比较麻烦,需要准备一堆开发环境和第三方库,不够简洁,不过
    C
    语言的一个优点就是快。然而,
    Lua
    语言在脚本语言也是出了名的快,除非报文的流量非常大。 
    

     

    C语言这部分内容相对多些, 主要涉及编译环境的构建,更多更完整的内容,请移步百度阅读:

    https://yuedu.baidu.com/ebook/ca33e60d3a3567ec102de2bd960590c69ec3d89b

     

    大概章节划分:

     

    2

    1. 导言 3

    2. 自定义协议 3

    2.1. 概述 4

    2.2. 协议描述 4

    2.3. 客户端 5

    2.4. 服务端 6

    2.5. 启动方式 8

    2.6. 抓包 8

    3. 协议解析 8

    3.1. Lua语言 8

    3.1.1. 实现代码 8

    3.1.2. 加载 10

    3.1.3. 结果展示 11

    3.2. C语言 11

    3.2.1. 源码下载 11

    3.2.2. 开发工具准备 11

    3.2.3. 准备构建 15

    3.2.4. 实现代码 17

    3.2.5. 加载 17

    3.2.6. 结果展示 17

     

    展开全文
  • wireshark插件开发小结

    千次阅读 2015-10-31 09:07:21
    关键字:wireshark, plugin, lua,protocol 概述 ...wireshark是非常流行的网络封包分析软件,...为什么使用wireshark Troubleshoot network problems 定位网络问题 Debug protocol implementations 调
  • 可以使用类似于以下内容的命令序列来构建wireshark模块: if (pkg-config --print-errors --exists 'wireshark > 3'); then PLUGIN_PATH=$(pkg-config --define-variable=libdir=${HOME}/.local/lib --variable=...
  • wireshark gpon omci插件

    2018-09-27 13:53:31
    wireshark gpon omci插件
  • 我想在wireshark上写一个私有协议解析插件,但是发现当数据包比较大时会分组发送。而插件就无法解析,因为他的头部信息只在第一组数据包内,后面的数据包就无法解析。 遇到这种问题怎么处理?我用的是lua脚本。在...
  • ** 在使用插件前,请确保您的wireshark版本支持LUA. ### Windows 将`ocp-wireshark-plug.lua` 文件拷贝至Wireshark安装目录下的plugins/VERSION 下面 如果 wireshark版本 `, 您还需要编辑Wireshark安装目录下的...
  • wireshark C插件开发

    千次阅读 2019-04-22 10:46:07
    1. Wireshark对C插件的支持 每个解析器解码自己的协议部分, 然后把封装协议的解码传递给后续协议。 因此它可能总是从一个Frame解析器开始, Frame解析器解析捕获文件自己的数据包细节(如:时间戳), 将数据交给一个...
  • 中国电信短信网关协议SMGP wireshark插件

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,119
精华内容 2,047
关键字:

wireshark插件如何使用