2016-07-10 7 views
0

64ビット16進法の解読に問題があります。これを行うにはProtoField.uint64を使用しています。Wiresharkディセクターデコード64ビット16進

私はプロトタイプなしでWiresharkでうまくこのデコードを見ることができますが、それはuint64のために働きません。

-- declare our protocol 
trivial_proto = Proto("triviala","trivial Protocol") 

-- create a function to dissect it 
function trivial_proto.dissector(buffer,pinfo,tree) 
    pinfo.cols.protocol = "TRIVIA" 
    local subtree = tree:add(trivial_proto,buffer(),"Trivia Protocol Data") 
    subtree:add(buffer(0,2),"Seq number: " .. buffer(0,2):uint()) 
    subtree:add(buffer(2,4),"Seq number: " .. buffer(2,4):uint()) 
    subtree:add(buffer(6,2),"no messages: " .. buffer(6,2):uint()) 
    --Doesnt work 
    --subtree:add(buffer(8,8),"no messages: " .. buffer(8,8):uint64()) 

end 
-- load the udp.port table 
udp_table = DissectorTable.get("udp.port") 
-- register our protocol to handle udp port 
udp_table:add(20004,trivial_proto) 
udp_table:add(20006,trivial_proto) 
udp_table:add(20021,trivial_proto) 

Wireshark dissecting msgs

私はまったく同じことをしようとすると、ProtoFieldを使用して、同じPCAPで、私はWiresharkの中で私のメッセージタイプ「トリビア」を見ることができますが、そのサブツリー

-- declare our protocol 
trivial_proto = Proto("triviala","Trivia Protocol") 

local F = trivial_proto.fields 

F.f_1 = ProtoField.uint8("triviala.sessnum","Session Number",base.HEX) 
F.f_2 = ProtoField.uint32("triviala.seqnum","Sequence Number",base.HEX) 
F.f_3 = ProtoField.uint8("triviala.nomsgs","Number Mesages",base.HEX) 
F.f_4 = ProtoField.uint64("triviala.time","Date Time",base.HEX) 


-- create a function to dissect it 
function trivial_proto.dissector(buffer,pinfo,tree) 
    pinfo.cols.protocol = "TRIVIA" 
    local subtree = tree:add(trivial_proto,buffer(),"Trivia Protocol Data") 
    subtree:add(F.f_1, buffer(0,2)) 
    subtree:add(F.f_2, buffer(2,4)) 
    subtree:add(F.f_3, buffer(6,2)) 
    --subtree:add(F.f_4, buffer(8,8)) 
end 
-- load the udp.port table 
udp_table = DissectorTable.get("udp.port") 
-- register our protocol to handle udp port 
udp_table:add(20004,trivial_proto) 
udp_table:add(20006,trivial_proto) 
udp_table:add(20021,trivial_proto) 
でデコード何も

Wireshark not dissecting msgs

助けてください!

答えて

0

trivial_proto.fieldsFを割り当てる必要があります。

あなたはWireshark Lua/Examples wikiページ上で提供されていますfpm.luaスクリプトを参照する場合、あなたはあなたのような何かをする必要があることが表示されます。

local F = 
{ 
    f_1 = ProtoField.uint8("triviala.sessnum","Session Number",base.HEX) 
    f_2 = ProtoField.uint32("triviala.seqnum","Sequence Number",base.HEX) 
    f_3 = ProtoField.uint8("triviala.nomsgs","Number Mesages",base.HEX) 
    f_4 = ProtoField.uint64("triviala.time","Date Time",base.HEX) 
} 

trivial_proto.fields = F 

... 

subtree:add(F.f_1, buffer(0,2)) 
subtree:add(F.f_2, buffer(2,4)) 
subtree:add(F.f_3, buffer(6,2)) 
関連する問題