精华内容
下载资源
问答
  • WireBait:在没有Wireshark的情况下运行和测试Lua Wireshark解剖器或捕获数据
  • http://www.360doc.com/content/13/1226/15/15257968_340284574.shtml http://www.360doc.com/userhome.aspx?userid=15257968&cid=9 ... htt...

    http://www.360doc.com/content/13/1226/15/15257968_340284574.shtml

    http://www.360doc.com/userhome.aspx?userid=15257968&cid=9

    http://www.360doc.com/content/13/1226/15/15257968_340276830.shtml

    http://www.360doc.com/content/13/1226/15/15257968_340275093.shtml

    http://www.360doc.com/content/13/1226/15/15257968_340273156.shtml

    http://www.360doc.com/content/13/1226/15/15257968_340271051.shtml

    转载于:https://www.cnblogs.com/lvdongjie/p/4074413.html

    展开全文
  • Lua for wireshark

    千次阅读 2010-06-26 21:13:00
    lua for wireshark2010-04-20 17:28 --练习一下lua for wireshark --目标:按照自己的方式解析dns协议 --由于wireshark提供的help不是很详细,而且自己也没有用c对wireshark进行dissector的编写,...
    lua for wireshark
    2010-04-20 17:28

    --练习一下lua for wireshark
    --目标:按照自己的方式解析dns协议
    --由于wireshark提供的help不是很详细,而且自己也没有用c对wireshark进行dissector的编写,开始比较困难,逐步总结出了一个框架
    --基本的程序框架:
    --mydns
    do --把代码放到do ... end中,避免命名冲突
    mydns = Proto("MyDns","MyDns","MyDns")
    --定义自己的协议,参数都是字符串,返回一个协议对象
    mydns.dissector = function(buffer,pinfo,tree)
    --定义这个协议的解析函数,最后会将这个函数注册到wireshark用来解析数据的表中。这个函数的三个参数很重要,是wireshar引擎在调用该函数是会传入,
    --buffer就是我们要分析的数据,
    --pinfo记录了前面分析过协议留下的信息
    --tree是用来在详细框中添加我们信息的结构。 这三个参数在后面的程序中经常会用到的 pinfo.cols.protocol = "MyDns"
    --在pinfo上面加mydns的protocol字段,这会是显示在界面上protocol栏里面

    pinfo.cols.info = "This is a special dns"
    --这是显示在界面的info里面的东西
    tb = tree:add(buffer(),"DNS")
    --buffer(start,offset),这里buffer以start为起点,offset为偏移返回数据,是以字节(byte)为单位的,详细的buffer操作看help.这样操作以后,这个解析器生效的时候就可以在详细框中看到dns了
    end
    udp_table = DissectorTable.get("udp.port")

    --获取udp.port表,我还不知道具体有哪些表,但这个是能用的

    udp_table:add(53,mydns.dissector)
    --把新协议加到上面获取的表中,匹配udp.port == 53,当有符合端口数据进来,wireshark引擎就会调用mydns.dissector.这个优先级比软件内部解析器要高,所以原来的DNS你就找不到了,取而代之的是MyDns
    end
    --note
    --[[ 1,关于dissector的参数: pinfo还有很多选项,参考help中的api,要用那个具体再选 buffer一定要注意,返回的单位是byte,而且数据类型为userdata.所以解析的时候还要做很多转换工作,如转换为字符串,整数这些都有相应的函数支持 tree我现在知道的就是用来显示详细信息的,这部分就是我们解析buffer,把相关的信息加到tree里面,以后就可以在wireshark里面直接分析协议了 2,buffer其实应该是TvbRange,可以看看他有很多的操作提供在api里面,如果你的应用需要把协议在分,那么TvbRange:call()能够继续调用下一层的协议来进行分析 --]]

    展开全文
  • LuaWireshark插件

    2015-11-22 10:14:00
    Create Wireshark Dissector by Lua 东方瀞ylxxwx@gmail.com 1. Why Wireshark dissector Wireshark supports thousands of protocols now. But there are still some new protocols not supported and private ...

    Create Wireshark Dissector by Lua

    东方瀞
    ylxxwx@gmail.com

    1. Why Wireshark dissector

    Wireshark supports thousands of protocols now. But there are still some new protocols not supported and private protocols are not either. Fortunately, we can write dissectors by ourselves and add them to wireshark without changing wireshark source code.

    2. Lua vs. C for Wireshark dissector

    Wireshark supports plug-ins developed by C or Lua. Comparing with C, Lua is a script language, platform independent and easy for debugging. Here is an example of developing wireshark plug-in by Lua.

    3. Simple Example for Lua dissector

    Suppose we want to develop a dissector for DHCPv4 Bulk Leasequery. It is TCP based protocol and one DHCPv4 Bulk Leasequery packet includes two parts, 1: size of the remaining part (2 bytes), 2: a bootp packet contains Leasequery information.

    3.1 Simple dissector

    To make it simple, we take an assumption, one TCP packet contains only one Leasequery packet and there is no TCP reassemble issue.

    In the script, first, we define a new protocol p_lqv4 and the two fields f_size, f_text, which consist of leasequery packet. Then the most important part, dissector function p_lqv4.dissector(buf, pkt, root), the input paramter buf is the data buffer for this dissector to parse and the pkt is the packets information for reassemble, etc; and the root is the parsed protocol tree shown in the “Packet Details” pane.

    do
        local p_lqv4 = Proto("lqv4","Leasequery v4");
        local f_size = ProtoField.uint16("lqv4.size","size",base.DEC)
        local f_text = ProtoField.string("lqv4.content","bin")
    
        p_lqv4.fields = { f_size, f_text }
    
        function p_lqv4.dissector(buf, pkt, root)
            local totalsize = buf:len()
            if leftsize <= 2 then
               return
            end
            local size = buf(0,2):uint()
            local t = root:add(p_lqv4,buf(0,totalsize))
            t:add(f_size,buf(0,2))
            local dissector = Dissector.get("bootp")
            if dissector ~= nil then
              dissector:call(buf(2,size):tvb(),pkt,t)
            end
        end
    
        local wtap_encap_table = DissectorTable.get("wtap_encap")
        local tcp_encap_table = DissectorTable.get("tcp.port")
        wtap_encap_table:add(wtap.USER15,p_lqv4)
        wtap_encap_table:add(wtap.USER12,p_lqv4)
        tcp_encap_table:add(67,p_lqv4)
    end
    

    3.2 Multi-Leasequery messages in one packet

    When there are multi-leasequery messages in one TCP packet, we can use a cursor offset to indicate the start of one leasequery packet and use while to go through each leasequery packet inside the TCP packet.

    do
        local p_lqv4 = Proto("lqv4","Leasequery v4");
        local f_size = ProtoField.uint16("lqv4.size","size",base.DEC)
        local f_text = ProtoField.string("lqv4.content","bin")
    
        p_lqv4.fields = { f_size, f_text }
    
        function p_lqv4.dissector(buf, pkt, root)
            local offset = 0
            local totalsize = buf:len()
            local leftsize = buf:len()
    
            while leftsize > 0 do
              local size = buf(offset,2):uint()
              local nxtpdu = offset + size + 2
    
              local t = root:add(p_lqv4,buf(offset,2))
              t:add(f_size,buf(offset,2))
              local dissector = Dissector.get("bootp")
              if dissector ~= nil then
                dissector:call(buf(offset+2,size):tvb(),pkt,t)
              end
    
              offset = nxtpdu
              leftsize = buf(offset):tvb():len()
            end
        end
    
        local wtap_encap_table = DissectorTable.get("wtap_encap")
        local tcp_encap_table = DissectorTable.get("tcp.port")
        wtap_encap_table:add(wtap.USER15,p_lqv4)
        wtap_encap_table:add(wtap.USER12,p_lqv4)
        tcp_encap_table:add(67,p_lqv4)
    end
    

    3.3 Reassemble TCP packets

    In order to support TCP reassemble, we need to us two parameters desegment_len and desegment_offset in the input parameter pkt. desegment_len is a variable to indicate wireshark how many bytes needed to complete this parse, wireshark will try to find the following packets to reassemble them together. desegment_offset is a cursor indicates how many bytes have been processed.

    do
        local p_lqv4 = Proto("lqv4","Leasequery v4");
        local f_size = ProtoField.uint16("lqv4.size","size",base.DEC)
        local f_text = ProtoField.string("lqv4.content","bin")
    
        p_lqv4.fields = { f_size, f_text }
    
        function p_lqv4.dissector(buf, pkt, root)
            local offset = pkt.desegment_offset or 0
            local totalsize = buf:len()
            local leftsize = buf:len() - offset
    
            if leftsize < 2 then
                pkt.desegment_len = DESEGMENT_ONE_SEGMENT
                pkt.desegment_offset = offset
                return
            end
    
            local size = buf(offset,2):uint()
            local nxtpdu = offset + size + 2
            if nxtpdu > totalsize then
              pkt.desegment_len = nxtpdu - buf:len()
              pkt.desegment_offset = offset
              return
            end
    
            local t = root:add(p_lqv4,buf(offset,2))
            t:add(f_size,buf(offset,2))
            local dissector = Dissector.get("bootp")
            if dissector ~= nil then
              dissector:call(buf(offset+2,size):tvb(),pkt,t)
            end
        end
        local wtap_encap_table = DissectorTable.get("wtap_encap")
        local tcp_encap_table = DissectorTable.get("tcp.port")
        wtap_encap_table:add(wtap.USER15,p_lqv4)
        wtap_encap_table:add(wtap.USER12,p_lqv4)
        tcp_encap_table:add(67,p_lqv4)
    end
    

    4. DHCPv4 Bulk Leasequery dissector

    Combining the above three parts described in Chapter 3 together, then we have a full-featured dissector shown as below. This DHCPv4 Leasequery dissector supports multi leasequery messages within one TCP packet and TCP reassemble for Leasequery message. The following gives the complete code of this dissector.

    --[[
      This is for DHCPv4 Bulk leasequery dissector,
      For Windowns, cp this file to System\Program Files\Wireshark
      For Linux, cp this file to /etc/wireshark
      Add "dofile("packet_lqv4.lua")" to the bottom of File "init.lua"
      Author: ylxxwx@gmail.com
    --]]
    do
        local p_lqv4 = Proto("lqv4","Leasequery v4");
        local f_size = ProtoField.uint16("lqv4.size","size",base.DEC)
        local f_text = ProtoField.string("lqv4.text","Text")
        local p_port = 67
    
        p_lqv4.fields = { f_size, f_text }
    
        function p_lqv4.dissector(buf,pkt,root)
            local offset = pkt.desegment_offset or 0
            local totalsize = buf:len()
            local leftsize = buf:len() - offset
    
            while leftsize > 0 do
              if leftsize < 2 then
                pkt.desegment_len = DESEGMENT_ONE_SEGMENT
                pkt.desegment_offset = offset
                return offset
              end
    
              local size = buf(offset,2):uint()
              local nxtpdu = offset + size + 2
    
              if nxtpdu > totalsize then
                pkt.desegment_len = nxtpdu - totalsize
                pkt.desegment_offset = offset
                return
              end
    
              local lqblock = root:add(p_lqv4,buf(offset,size + 2))
              lqblock:add(f_size,buf(offset,2))
              local dissector = Dissector.get("bootp")
              if dissector ~= nil then
                dissector:call(buf(offset+2,size):tvb(),pkt,lqblock)
              end
              pkt.cols.protocol = "DHCPv4BulkLeasequery"
    
              offset = nxtpdu
              leftsize = buf(offset):tvb():len()
              if leftsize == 0 then
                 pkt.desegment_len = 0
                 pkt.desegment_offset = 0
                 return
              end
            end
        end
        local wtap_encap_table = DissectorTable.get("wtap_encap")
        local tcp_encap_table = DissectorTable.get("tcp.port")
        wtap_encap_table:add(wtap.USER15,p_lqv4)
        wtap_encap_table:add(wtap.USER12,p_lqv4)
        tcp_encap_table:add(p_port,p_lqv4)
    end
    

    5. Add the new dissector into wireshark

    5.1 Check if your wireshark supports Lua?

    Click Menu->Help->About Wireshark. If you find without Lua, you need to upgrade wireshark to the latest version. If you find with Lua 5.2, congratulations. You can go to 5.2.

    5.2 Copy the new dissector to wireshark directory

    Copy the dissector to wireshark directory. In different system the wireshark directory is different, shown below.

    SystemPath
    windows System\Program Files\Wireshark
    Linux /etc/wireshark

    5.3 Enable the new plug-in

    Add dofile("[dissector file]") to the file init.lua which locates in the wireshark directory. Then restart wireshark. It works.

    转载于:https://www.cnblogs.com/ylxxwx/p/4985379.html

    展开全文
  • 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,转载请注明出处

    展开全文
  • luaWireshark中的应用

    2016-10-29 10:36:02
    当用流行的抓包工具WireShark进行网络开发时,往往需要解析自定义的协议,而这些自定义的协议又得不到WireShark的支持,故需要自己来用LUA写解析插件。 在WireShark安装目录下有指导指南,打开指导指南,找到里面的...
  • 源地址:... 一、平台 操作系统:windows 7 ...wireshark:1.10.3 ...lua:5.1 ...lua 语言基本语法,特别是关于表操作和循环 ...wireshark 文档,包括用户使用文档和开发者文档,这些在 wireshark 官方网站都
  • 基于LUAwireshark插件,利用listener搭建一个对esp协议包的包序号连续性检验的提示器
  • 使用Lua编写Wireshark的Dissector插件

    千次阅读 2015-04-19 10:27:39
    使用Lua编写Wireshark的Dissector插件是本文要介绍的内容,Dissector 插件可以用来对特定的协议内容进行分析展示,在分析自己实现的应用层协议时还是很有用的。 dissector 插件一般用 C 来实现,具体如何实现可以...
  • 原文:...   一、平台   操作系统:windows 7 ...wireshark:1.10.3 ...lua:5.1 ...lua 语言基本语法,特别是关于表操作和循环 ...wireshark 文档,包括用户使用文档和开发者文档,这些在 wireshark...
  • 使用lua编写Wireshark的dissector插件

    千次阅读 2010-06-26 21:11:00
    使用lua编写Wireshark的dissector插件Dissector插件可以用来对特定的协议内容进行分析展示,在分析自己实现的应用层协议时还是很有用的。dissector插件一般用C来实现,具体如何实现可以参考Wireshark代码目录下面的/...
  • wireshark Lua脚本编写

    2020-11-02 11:03:36
    wireshark Lua脚本编写 Lua语言是脚本语言,只需要编写相关协议解析的脚本内容,然后由wireshark加载即可(Wireshark自带Lua解析器),wireshark封装丰富的接口给Lua使用,一些有用的docs: ...
  • wireshark Lua

    千次阅读 2013-10-22 22:55:17
    抓取一个包含H.264 Payload RTP包的SIP会话或RTSP会话后,用Wireshark的Play功能只能播放声音,不能播放视频。把RTP payload直接导出成文件后也是不能直接播放的,因为H.264 over RTP封包是符合RFC3984规范的,必须...
  • wireshark lua脚本

    2016-12-04 15:42:00
     将编写的(假设为rssp2.lualua文本,放入wireshark 安装目录下,放哪里都行只要dofile添加了路径. 并且在安装目录下找到init.lua,最后一行添加路径代码 : dofile(DATA_DIR.."RSSP2.lua") 3、介绍  解析由...
  • 文章目录怎樣安裝h265_export.lua前言添加 lua 插件修改init.lua修改h265_export.lua添加h265_export.lua 到 init.lua 路徑wireshark encode 設置wireshark filterUDP decode as RTPRTP decode to H265Tool > lua...
  • lonelycastle做uTP的实验,使用wireshark捕包,但是最初没有找到wireshark下的uTP的dissector,每次...说干就干,查了一下发现wireshark可以使用lua来实现dissector,这样就简单过了,不用编写C的dissector了。本身...
  • 1.ProtoField包含哪些字段及意义? 2.如何将一个秒数转换成时间戳? 3.没有用local声明的变量不都是全局的吗?为什么我在一个.lua中,不同地方使用,不像全局变量那样?
  • 参见: https://yoursunny.com/study/IS409/ScoreBoard.htm https://wiki.wireshark.org/LuaAPI/TreeItem https://www.cnblogs.com/zzqcn/p/4840589.html foo.lua --https://www.cnblogs.com/zzqcn/p/4...
  • Wireshark lua插件

    千次阅读 2017-03-26 12:26:43
    源地址:... 参考:  http://yoursunny.com/t/2008/Wireshark-Lua-dissector/  http://yoursunny.com/study/IS409/ScoreBoard.htm  http://www.360doc.com/content/13/1021
  • Wireshark Lua插件自定义

    千次阅读 2019-06-20 00:07:28
    近期工作中刚好有实现自定义的UDP相关协议,用Wireshark时只能给出原始的字节流,观察起来确实十分不便,为此研究了一下WiresharkLua插件实现,在此记录一下。 一、配置执行Lua脚本 首先通过菜单中的"About ...
  • Wireshark lua 插件简介

    千次阅读 2020-01-05 10:26:58
    简单介绍在使用lua插件过程中可能会遇到的一些问题以及解决办法
  • --message()为调试函数,可以打印输出信息,可以在wireshark工具栏中,打开工具-lua-console,然后双击该协议,就会出现打印的信息 --message(buffer(offset,2)) --循环解析tlv格式的数据,doLength表示已解析的...
  • 1. 检查Wireshark的版本是否支持Lua 打开Wireshark,点击“HelpàAbout Wireshark”菜单,查看弹出的对话框,如果有“with Lua 5.1”表示支持Lua语言扩展,如果有“without Lua”表示不支持Lua扩展。 2. 启用LUA...
  • 使用lua编写Wireshark(Ethereal)的dissector插件 dissector插件可以用来对特定的协议内容进行分析展示,在分析自己实现的应用层协议时还是很有用的。dissector插件一般用C来实现,具体如何实现可以参考Wireshark...
  • 源: 用Lua语言编写Wireshark dissector插件 https://yoursunny.cn/t/2008/Wireshark-Lua-dissector/ https://yoursunny.cn/study/IS409/ScoreBoard.htm

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 436
精华内容 174
关键字:

luawireshark