L2tp Payload / Tunneldigger

Wir untersuchen l2tp. Um der Traffik mit Wireshark zu analysieren bedarf es ein Dissector der es erlaubt das l2tp Payload und die Tunneldigger zu darstellen. Mit tunneldigger wird ein lua script geliefert, leider geht er nur für die tunneldigger Informationen. Eine Dekodierung des Payloades ist nicht vorhanden. Mit nachstehenden lua Script kann das gesamten Verkehr dargestellt werden:

l2tpData_proto = Proto ("l2tpData","l2tp-Freifunk")

function l2tpData_proto.dissector(buffer, pinfo, tree) 
  -- look for control or payload 
 local type = buffer(0, 1):uint()

 if type == 0x00 then
    -- decode only the l2tpV3 part whithout the payloaditself
    local udp_table = DissectorTable.get("udp.port")
    local l2tp_dis = udp_table:get_dissector(1701)
    sub_buf = buffer(0, 12):tvb()
    l2tp_dis:call(sub_buf, pinfo, tree)
    -- we have as first member an ethernet frame, coninue disecton with it
    ethernet_dissector = Dissector.get("eth")	
    sub_buf = buffer(12, buffer:len() - 12):tvb()
    ethernet_dissector:call(sub_buf, pinfo, tree)
  else
    -- call tunneldiger dissector (lua script from tunneldigger)
    local udp_table = DissectorTable.get("udp.port")
    local td_dis = udp_table:get_dissector(8942)
    td_dis:call(buffer, pinfo, tree)     
  end
end

-- We recognise the Freifunk data on the port number used
-- If the port you use is not 10042 modify the last line
udp_table = DissectorTable.get("udp.port")
udp_table:add(10042, l2tpData_proto)

3 Likes