在Wireshark-Lua中以秒为单位显示直径事件时间戳。

我对在 lua 脚本中的直径事件时间戳内容感兴趣。在协议层上,它以 Unix 秒的形式传输,但我的字段将其解码为人类可读格式。问题是:如何从此字段获取实际的无符号数字?

现在我有:

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

谢谢

点赞
用户3395060
用户3395060

你能否发布一个包含相关 DIAMETER 消息的示例 pcap 捕获文件,其中包含该 AVP?(例如,在 cloudshark.org 或其他地方发布它)可能存在一个子字段,可以检索直接获取该数字。

否则,您可以使用 Lua 的 os.time() 函数将字符串转换回数字 - wireshark 的 Lua 也具有该功能。例如,使用 string.match() 解析字符串以获取月份、日期、年份等离散字段,将它们放在 Lua 表中,并使用该表调用 os.time()。麻烦的部分是处理时区,因为 os.time() 不会为您处理。因此,您可以创建自己的时区字符串->偏移映射表,以确定要应用于时间的偏移量/差异。

2014-06-24 13:45:40