2014-10-30 112 views
2

我剛剛在Lua爲wireshark開始工作,我已經很困惑。根據http://wiki.wireshark.org/LuaAPI/Tvb#tvb:len.28.29 Tvb具有函數「len」,但是當我在下面的代碼中調用buf或pkt時,我得到了「嘗試調用方法'len'(數字值)」的錯誤。獲得buf或pkt(它們是「tvb」對象)長度的正確方法是什麼?Lua Wireshark腳本

local myprotocol = Proto("proto","My Protocol Title"); 
function myprotocol.dissector(buf,pkt,root) 
    local test = pkt:len() -- <--Throws error 

回答

1

我覺得有一些關於參數的疑惑;根據Dissectors page:「當被Wireshark調用時,它們被傳遞(1)數據的TVB緩衝區(Tvb對象),(2)樹根(TreeItem對象)和(3)分組信息記錄(Pinfo目的)。」從同一頁上的示例:function trivial_proto.dissector(buffer,pinfo,tree)

看來bufferTvb對象,但pktPinfo對象,所以你應該嘗試buf:len(),而不是pkt:len()