diff options
author | David Brodski <david@brodski.eu> | 2011-10-26 00:01:04 +0000 |
---|---|---|
committer | David Brodski <david@brodski.eu> | 2011-10-26 00:01:04 +0000 |
commit | f8473f9b393e7c8ebebbbcd11ffd89de5f4cf1cb (patch) | |
tree | f431a1c8180921197c08744172f10e0320c549c4 | |
parent | e79ca91c1884398d2ba205026d168be375e74788 (diff) |
wireshark lua file, at the moment only for wlan
-rw-r--r-- | bin/wireshark.lua | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/bin/wireshark.lua b/bin/wireshark.lua new file mode 100644 index 0000000000..273355c20e --- /dev/null +++ b/bin/wireshark.lua @@ -0,0 +1,77 @@ +-- declare our protocol +gwlan_proto = Proto("gnunet","Gnunet Layer") +-- create a function to dissect it +local f = gwlan_proto.fields + +f.len = ProtoField.uint16 ("gnunet.len", "Gnunet Message Len") +f.type = ProtoField.uint16 ("gnunet.type", "Gnunet Message Type") +-- rhs_proto.fields.sequence = ProtoField.uint16("rhs.sequence","Sequence number") +f.proto = DissectorTable.new("gnunet.proto", "Gnunet Protocoll", FT_UINT16, BASE_DEC) +--gwlan_proto.fields = {f_len, f_type} + +function gwlan_proto.dissector(buffer,pinfo,tree) + pinfo.cols.protocol = "Gnunet Packet" + local subtree = tree:add(gwlan_proto, buffer(),"Gnunet Data (" .. buffer:len() .. ")") + local len = buffer(0,2) + local type = buffer(2,2) + subtree:add(buffer(0,2), "Len: " .. buffer(0,2):uint()) + subtree:add(buffer(2,2), "Type: " .. buffer(2,2):uint()) + if (len:uint() > 5) then + if (len:uint() <= buffer:len()) then + f.proto:try(type:uint(), buffer(0, len:uint()):tvb(), pinfo, subtree) + end + if (len:uint() < buffer:len()) then + gwlan_proto.dissector(buffer(len:uint(),buffer:len() - len:uint()):tvb(),pinfo,tree) + end + end +end + +function gwlan_proto.init() +end + +-- load the udp.port table +llc_table = DissectorTable.get("llc.dsap") +-- register our protocol to handle llc.dsap 0x1e +llc_table:add(31,gwlan_proto) + +fragmentack = Proto("gnunet.fragmentack","Gnunet Fragment Ack") + +function fragmentack.dissector(buffer,pinfo,tree) + pinfo.cols.protocol = "Gnunet Fragment ack" + tree:add(fragment,buffer(),"Gnunet Data ack") + tree:add(buffer(4,4),"fragment_id: " .. buffer(4,4):uint()) + tree:add(buffer(8,12),"bits: " .. buffer(8,12):uint()) +end + +fragment = Proto("gnunet.fragment","Gnunet Fragment") + +function fragment.dissector(buffer,pinfo,tree) + pinfo.cols.protocol = "Gnunet Fragment" + tree:add(fragment,buffer(),"Gnunet Fragment") + tree:add(buffer(4,4),"fragment_id: " .. buffer(4,4):uint()) + tree:add(buffer(8,2),"total_size: " .. buffer(8,2):uint()) + tree:add(buffer(10,2),"offset: " .. buffer(10,2):uint()) + tree:add(buffer(12), "Data: " .. buffer(12)) +end + +hello = Proto("gnunet.hello","Gnunet Hello Message") + +function hello.dissector(buffer,pinfo,tree) + pinfo.cols.protocol = "Gnunet Hello Message" + tree:add(fragment,buffer(),"Gnunet Hello Message") + tree:add(buffer(4,4),"reserved: " .. buffer(4,4):uint()) + RsaPublicKeyBinaryEncoded(buffer(8 , buffer:len() -8):tvb(),pinfo, tree) +end + + +function RsaPublicKeyBinaryEncoded(buffer,pinfo,tree) + local subtree = tree:add(gwlan_proto,buffer(),"Gnunet RsaPublicKeyBinaryEncoded(" .. buffer:len() .. ")") + subtree:add(buffer(0,2),"len: " .. buffer(0,2):uint()) + subtree:add(buffer(2,2),"sizen: " .. buffer(2,2):uint()) + subtree:add(buffer(4,258),"Pub Key: " .. buffer(4,258)) + subtree:add(buffer(262,2),"pedding: " .. buffer(262,2):uint()) +end + +f.proto:add(19,fragmentack) +f.proto:add(18,fragment) +f.proto:add(16,hello) |