使用Lua脚本从Wireshark的.pcap跟踪文件中提取信息。

我想要获取第一个未在sosDIS端口进行通信且ip地址不是if语句中提到的那个的包的帧时间(相对时间)。但数据包应该利用端口24111。然而,下面的代码对此目的无效。它正常工作,直到我添加了udp_port~=24111。此后它就不会给我任何结果,这意味着它不会进入该条件语句。我尝试过以多种方式编写该条件,甚至将其分解为新的if语句,但都不起作用。我在这里做错了什么。提前感谢您的建议。

这是我目前拥有的代码片段

     local first_outpacket = 0
     local flag = 0
     function stats_first_packet()
         local udp_port
         local frame_time
         local ip_addr
         frame_time = time_relative_extractor()
         udp_port = udp_port_extractor()
         ip_addr = ip_addr_extractor()
         if ( udp_port ) then
             if (not (udp_port == 3000 or udp_port==3838 or flag==1 or ip_addr=="192.168.1.2" or udp_port~=24111)) then
                 first_outpacket = frame_time
                 print(frame_time)
                 flag = 1
             else
                 -- print("tcp_src_port already recorded")
             end
         else
             -- print("no tcp_src_port")
         end
     end
点赞
用户3167229
用户3167229

问题显然在于 extractor() 函数返回的数据类型。为了将其与if语句中的另一个值进行比较,它们必须使用 tostring() 函数转换为字符串。

例如:

if (not (tostring(udp_port) == "3000" or tostring(udp_port)=="3838" or flag==1))
2014-05-09 21:26:13