Я написал диссектор ixia lua. У меня такая же проблема с другим подобным диссектором.
Да, я знаю, что диссектор уже написан на c, но он не работает "из коробки", по крайней мере, не для моего следа - и я также попробовал обходной путь, предложенный для "Фиксированной длины трейлера Ethernet", до 19. Возможно не работает, потому что мой пакет туннелирован, поэтому у меня есть 2 уровня Ethernet.
Мне удалось разобрать трейлер ixia.
Моя проблема в том, что мой анализатор анализирует eth_trailer crc
С добавленным кодом crc теперь отображается перед слоем ixia, а не под деревом Ethernet. Есть ли возможность показать crc под уровнем Ethernet как для пакета без ixia?
if offset_ixia == 4 then
local subtree = tree:add(ixia_trailer_proto, buffer(0,offset_ixia),"eth.trailer")
end
local subtree = tree:add(ixia_trailer_proto, buffer(offset_ixia,length-offset_ixia),"Ixia trailer")
В обычном пакете это выглядит следующим образом:
Вот полный упрощенный код, показывающий проблему:
ixia_trailer_proto = Proto("ixia_trailer","Ixia-lua Trailer")
-- Header fields
source = ProtoField.uint8("ixia_trailer_proto.source" , "Source" , base.HEX)
ixia_trailer_proto.fields = {source}
offset_ixia = 0
-- create a function to dissect it
local function is_ixia_trailer(buffer,pinfo,tree)
local length = buffer:len()
--eth + ip
if length < 15 then return false end
if length == 15 then
type_offset = 11
elseif length == 19 then -- 15 + crc size
type_offset = 15
offset_ixia = 4
end
local type = buffer( type_offset , 2):uint()
if type == 0xaf12 then
ixia_trailer_proto.dissector(buffer, pinfo, tree)
return true
end
return false
end
function ixia_trailer_proto.dissector(buffer, pinfo, tree)
length = buffer:len()
if offset_ixia == 4 then
local subtree = tree:add(ixia_trailer_proto, buffer(0,offset_ixia),"eth.trailer")
end
local subtree = tree:add(ixia_trailer_proto, buffer(offset_ixia,length-offset_ixia),"Ixia trailer")
subtree:add(source, buffer(offset_ixia + 0,1))
end
ixia_trailer_proto:register_heuristic("eth.trailer", is_ixia_trailer)
Вот пример файла pcap с трейлером https://transfernow.net/019rp7t214kv