После Учебное пособие MikaS (очень просто и хорошо сделано!) Я написал этот диссектор LUA:
yokogawa_protocol = Proto("YokogawaWT3000", "Yokogawa WT3000 Protocol")
message_header0 = ProtoField.int32("yokogawa_protocol.message_header0", "messageHeader0", base.DEC)
message_header1 = ProtoField.int32("yokogawa_protocol.message_header1", "messageHeader1", base.DEC)
message_header2 = ProtoField.int32("yokogawa_protocol.message_header2", "messageHeader2", base.DEC)
message_length = ProtoField.int32("yokogawa_protocol.message_length", "messageLength", base.DEC)
message_ascii = ProtoField.string("yokogawa_protocol.message_ascii", "messageAscii", base.ASCII)
yokogawa_protocol.fields = { message_header0, message_header1, message_header2, message_length, message_ascii }
function yokogawa_protocol.dissector(buffer, pinfo, tree)
length = buffer:len()
if length == 0 then return end
pinfo.cols.protocol = yokogawa_protocol.name
local subtree = tree:add(yokogawa_protocol, buffer(), "Yokogawa WT3000 Protocol Data")
subtree:add(message_header0, buffer(0,1)) -- fixed h80
subtree:add(message_header1, buffer(1,1)) -- fixed h00
subtree:add(message_header2, buffer(2,1)) -- fixed h00
subtree:add(message_length, buffer(3,1)) -- ascii length
subtree:add(message_ascii, buffer(4, length-4)) -- ascii text
end
local tcp_port = DissectorTable.get("tcp.port")
tcp_port:add(10001, yokogawa_protocol)
Щелкните правой кнопкой мыши на messageAscii
, затем"Apply as Column"
, дайте мне посмотреть декодированное значение для каждого сообщения в новом столбце.
Спасибо всем