我在使用lua时非常新。我的地区是在wireshark探索lua。我有一个捕获的pcap文件。如何打开该文件并在不同的标题中读取不同的内容(如tcp / udp标题中的端口号,http标题中的应用程序相关信息等)。
我很抱歉这是一个直接的问题,但我没有任何东西要提及解决这个问题。我无法在哪里找到这些信息的例子。你们可以在某个方向/参考方面至少取决于使用。
答案 0 :(得分:4)
wireshark中的Lua API功能非常强大。它可以用来编写解剖器,后解剖器和水龙头。您可以从Wireshark软件帮助中的Lua Support in Wireshark
开始,或Reference Manual。 wireshark官方Lua wiki也很有帮助。请注意,某些代码示例已过期。
在您的情况下,只需要分析pcap文件。还有另一种方法可以做到这一点。 Wireshark命令工具Tshark
可用于分析pcap文件,并将结果输出到文本文件(或者,如果需要,还可以输出xml格式的文件)。您可以使用Lua
脚本调用tshark
并处理结果,例如处理任何文本文件。
这是我在Windows中分析Megaco
protocal的一个例子。如您所见,其他脚本语言也可以这种方式使用,尤其是Perl
。但Lua
代码显然更优雅,而且在实践中更有效。
local XmlFile = io.popen('"C:\\Program Files\\Wireshark\\tshark" -nn -r 3gpp_mc.cap -d udp.port==1001,megaco -T pdml ')
--local XmlFile = io.open("xmlexample.xml", "r")
local RawXml = XmlFile:read("*all")
local Megaco = {}
for m in string.gmatch(RawXml, '<proto name="megaco".-</proto>') do
Megaco[#Megaco + 1] = m
end
local Item = {}
for i = 1, #Megaco do
for p in string.gmatch(Megaco[i], 'show=(".-")') do
print(p)
end
end
XmlFile:close()
更新:
关键是使用tshark
输出您需要的信息,让Lua
进行文本处理。 Tshark
有一组丰富的参数可供使用,有关详细信息,请参阅here。以下是根据您的需要致电tshark
的方法:
tshark -nn -r file.pcap -T fields -E separator=; -e frame.number -e ip.src -e ip.dst -e tcp.srcport -e tcp.dstport (tcp)