Wireshark-bugs: [Wireshark-bugs] [Bug 10801] wireshark lua engine, tap packet with h264 filter,
Date: Mon, 22 Dec 2014 19:20:43 +0000

Comment # 12 on bug 10801 from
OK, found the issue.

The problem is you're trying to get the ByteArray value of a *Protocol* field -
not a regular field, but the Protocol itself.  I.e., the field named "h264"
isn't a normal field, but instead a protocol. (in the C-code, it's a
FT_PROTOCOL type)

So apparently there's a bug in Wireshark for how it handles a protocol field. 
I know where and what the bug is, so I'll submit a fix. (as soon as I can get
my wireshark dev environment working again - it's not working right now)

In the meantime, what you can successfully do is get the protocol field's
TvbRange object, and from that convert it into a ByteArray.

So like this:

local f_h264 = Field.new("h264")
local my_h264_tap = Listener.new("frame", "h264")
local tw = TextWindow.new("Export H264 to File Info Win")
function twappend(str)
      tw:append(str)
      tw:append("\n")
end

function my_h264_tap.packet(pinfo,tvb)
      local h264s = { f_h264() }
      for i,h264_f in ipairs(h264s) do
        if h264_f.len < 2 then
          return
        end
        -- get a TvbRange of the field
        local h264tvb = h264_f.tvb
        -- get ByteArray from TvbRange
        local h264 = h264tvb:bytes()
        twappend("========>id:" .. tostring(pinfo.number) .. " what:" ..
h264:get_index(0));
     end
end


You are receiving this mail because:
  • You are watching all bug changes.