Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于Diameter 3GPP统计的Lua脚本_Lua_Wireshark_Wireshark Dissector_Diameter Protocol - Fatal编程技术网

用于Diameter 3GPP统计的Lua脚本

用于Diameter 3GPP统计的Lua脚本,lua,wireshark,wireshark-dissector,diameter-protocol,Lua,Wireshark,Wireshark Dissector,Diameter Protocol,我正在尝试创建一个lua脚本来遍历Diameter pcap,收集我感兴趣的信息并生成统计数据 这是部分成功,工作脚本可以在中找到,但我仍然有一些疑问 Field.new()和AVP的多次出现 我正在使用Field.new()检索AVP,例如: local rrField = Field.new("diameter.3GPP-Reporting-Reason") local toField = Field.new("diameter.CC-Total-Octets") 但是在一个数据包中,AV

我正在尝试创建一个lua脚本来遍历Diameter pcap,收集我感兴趣的信息并生成统计数据

这是部分成功,工作脚本可以在中找到,但我仍然有一些疑问

Field.new()和AVP的多次出现 我正在使用
Field.new()
检索AVP,例如:

local rrField = Field.new("diameter.3GPP-Reporting-Reason")
local toField = Field.new("diameter.CC-Total-Octets")
但是在一个数据包中,AVP可能会多次出现。当然,我可以从中以数组的形式访问它们

local rrFields = {rrField()}
local toFields = {toField()}
但我丢失了一个从AVP检索到的参考资料。一个很好的例子是
结果代码AVP

这是一条直径为1的信息,它出现了三次,但结果我只得到了三个2001的数组,没有很好地理解它出现在哪个级别

当单个包包含多个Diameter消息时,情况变得更加混乱。然后我甚至不知道AVP是从哪条消息来的

功能tap。数据包(pinfo、tvb、tapdata)不填充tapdata 另一个想法是深入挖掘
tapdata
。如果我理解正确的话,
tapdata
(aka
tapinfo
)应该用解析数据填充,对吗?因此,我应该能够解析消息

但是,无论我如何努力,
tapdata
始终未设置(即,零)。在GitHub代码中

       tap = Listener.new("diameter", filter)
但我也尝试了第三个参数,将其设置为
true
(希望生成所有字段,即使是性能代价)。不走运

[更新2020/03/20]

自动应答功能点击。数据包(pinfo、tvb、tapdata)不填充tapdata

在检查Wireshark(tshark)的源代码后,发现Diameter并没有填充这个变量,因为tapdata并没有对Diameter的引用。我已经尝试将它添加到
taps
definition中,并且变量(表)已经填充,甚至哈希的名称也可以。但是散列中的变量不是。。。不管怎样,这里是变化:

MBP:wireshark jhartman$ git diff epan/wslua/taps
diff --git a/epan/wslua/taps b/epan/wslua/taps
index 11b1132171..ea28865109 100644
--- a/epan/wslua/taps
+++ b/epan/wslua/taps
@@ -62,4 +62,5 @@ tcp ../dissectors/packet-tcp.h tcp_info_t
 #tls ../dissectors/packet-tls.h ssl_info_t
 #tr ../dissectors/packet-tr.h tr_info_t
 wlan ../dissectors/packet-ieee80211.h wlan_hdr_t
+diameter ../dissectors/packet-diameter.h diam_sub_dis_t
 #wsp ../dissectors/packet-wsp.h wsp_info_t
问题:
  • 这种方法正确吗?或者我应该使用其他方法,比如链式解剖器或后解剖器?但我不清楚我是否可以访问到我需要的水平的解剖数据
任何帮助都将不胜感激

提前向您表示感谢并致以最良好的问候, 贾勒克