2014-06-12 42 views
0

我對我的lua腳本中的diameter.Event-Timestamp內容感興趣。在協議級別上,它被轉換爲unix秒,但是我的Field將其解碼爲可讀格式。問題是:如何從該字段獲得實際的無符號數字?在wireshark-lua中以秒爲單位的diameter.Event-Timestamp

這是我現在有:

diaETS = Field.new("diameter.Event-Timestamp") 
tap_diameter = Listener.new("frame", "diameter.cmd.code==271 && diameter.Accounting-Record-Type != 3", false) 
function tap_diameter.packet(pinfo,tvb,tapinfo) 
     local ets = {diaETS()} 
     for i in pairs(ets) do 
       print(ets[i]); 
    end 
end 

和響應是:

"May 21, 2014 10:18:01.000000000 CEST" 

我想有:

1400660281 

感謝

回答

0

你能發佈一個示例pcap capt包含該AVP的相關DIAMETER消息? (例如,在cloudshark.org或某處發佈)可能有一個子字段可以被檢索以直接獲取該號碼。

否則,您可以使用Lua的os.time()函數將字符串轉換回數字 - wireshark的Lua也具有該功能。例如,使用string.match()解析字符串以獲取月份,日期,年份等作爲離散字段,將它們放入Lua表中,並使用該表調用os.time()。棘手的部分是處理時區,因爲os.time()不會爲您處理。因此,您可以創建自己的時區字符串 - >偏移量映射表,以找出適用於該時間的偏移量/差異。

+0

感謝您的建議。我採用了不同的解決方案,但您的解決方案也是如此。不幸的是,我不能忍受公開可用的痕跡到任何地方,因爲它是敏感數據:( – asdmin