我对lua脚本中的diameter.Event-Timestamp内容感兴趣。在协议级别,它作为unix秒传输,但我的Field将其解码为人类可读格式。问题是:如何从该字段中获取实际的无符号数?
这就是我现在所拥有的:
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 :(得分:0)
您是否可以使用包含该AVP的相关DIAMETER消息发布示例pcap捕获文件? (例如将其发布在cloudshark.org或某处)可能会有一个子字段可以检索以直接获取数字。
否则,你可以使用Lua的os.time()
函数将字符串转换回数字 - wireshark的Lua也有。例如,使用string.match()
解析字符串以将月,日,年等作为离散字段,将它们放在Lua表中,然后使用该表调用os.time()
。棘手的部分是处理时区,因为os.time()
不会为你处理。因此,您可以创建自己的时区字符串 - >偏移映射表,以确定要应用于时间的偏移/差异。