在第2层添加Wireshark解剖器

时间:2013-06-25 07:19:17

标签: ethernet wireshark-dissector

如何根据以太网中的类型字段调用自己的解剖器? 从以太网帧获取Type值后,我想要解析带有一些附加字段的自定义以太网帧,然后进行正常的解剖。

我可以编写解剖器,它可以在指定的UDP / TCP端口上解析数据包,但不知道如何为指定的以太网类型进行解析。

2 个答案:

答案 0 :(得分:1)

我现在有工作片段。这只是一个原型。

-- create myproto protocol and its fields
p_myproto = Proto ("myproto","My Protocol")
local f_command = ProtoField.uint16("myproto.command", "Command", base.HEX)
local f_data = ProtoField.string("myproto.data", "Data", FT_STRING)

p_myproto.fields = {f_command}

-- myproto dissector function
function p_myproto.dissector (buf, pkt, root)
  -- validate packet length is adequate, otherwise quit
  if buf:len() == 0 then return end
  pkt.cols.protocol = p_myproto.name

  -- create subtree for myproto
  subtree = root:add(p_myproto, buf(0))
  -- add protocol fields to subtree
  subtree:add(f_command, buf(0,2)):append_text(" [Command text]")

  -- description of payload
  subtree:append_text(", Command details here or in the tree below")
end

-- Initialization routine
function p_myproto.init()
end

-- subscribe for Ethernet packets on type 5212 (0x145c).
local eth_table = DissectorTable.get("ethertype")
eth_table:add(5212, p_myproto)

答案 1 :(得分:0)

以下代码注册vlan_dissector作为以太网802.1Q帧的解剖器。

   -- subscribe for Ethernet packets on type 33024(0x8100).
   local eth_table = Dissector.get("ethertype")
   eth_table:add(33024, vlan_dissector)