| 1 | initial version |
If you just want to process the data without exploring heuristic dissectors, try a post-dissector.
There is a sample capture attached to Issue 16227 - LLDP: Add ONOS TLV (and ethernet types)
Train Top Protocol
ttdp data: 00:00:01:6e:97:7f:f7:ac
ttdp data: 2d:58:32:97:0b:a8:e8:72:9d:6d:b6:d9:49:c1:04:38:d7:70:97:e5:b3:3d:15:fa:bf:33:5c:00:5c:70:67:77
-- TTDP.lua
-- https://ask.wireshark.org/question/27062/how-can-i-write-a-dissector-for-a-part-of-the-lldp-payload-in-lua/
-- Grab and format fields as needed
-- Step 1 - document as you go. See header above and set_plugin_info().
local ttdp_info =
{
version = "1.0.0",
author = "Chuck Craft",
description = "Print lldp.unknown_subtype.content",
}
set_plugin_info(ttdp_info)
-- Step 2 - create a protocol to attach new fields to
local ttdp_p = Proto.new("ttdp","Train Top Protocol")
-- Step 3 - add some field(s) to Step 2 protocol
local pf = { payload = ProtoField.string("ttdp.payload", "ttdp data") }
ttdp_p.fields = pf
-- Step 4 - grab existing field(s) for processing
ttdp_payload_f = Field.new("lldp.unknown_subtype.content")
-- Step 5 - create the postdissector function that will run on each frame/packet
function ttdp_p.dissector(tvb,pinfo,root)
local tree = nil
finfo = { ttdp_payload_f() }
if (#finfo > 0) then
if not tree then
tree = root:add(ttdp_p)
end
for k, v in pairs(finfo) do
local field_data = string.format("%s", v)
tree:add(pf.payload, field_data)
end
end
end
-- Step 6 - register the new protocol as a postdissector
register_postdissector(ttdp_p)