2016-07-10 4 views
0

64 비트 16 진수를 해독하는 중 문제가 발생했습니다.이 작업을 수행하는 방법에 대해 ProtoField.uint64를 사용하고 있습니다.Wireshark 디시 메타 디코딩 64 비트 16 진수

protofield없이 Wireshark에서이 디코딩을 잘 볼 수 있지만, uint64에서는 작동하지 않습니다.

Wireshark dissecting msgs

내가 ProtoField를 사용하여 동일한 PCAP으로, 나는 그것의 하위 트리에 디코딩 와이어 샤크 아무것도하지만, 내 메시지 유형 "퀴즈"를 볼 수 있습니다 정확히 같은 일을 시도

-- 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) 

-- 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 위키 페이지에서 사용할 수있는 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))