我对使用 lua 很陌生。我的领域是在wireshark中探索lua。我有一个捕获的 pcap 文件。我如何打开该文件并在不同的标头中读取不同的内容(例如 tcp/udp 标头中的端口号、http 标头中的应用程序相关信息等)。
很抱歉,这是一个直接的问题,但我没有任何可以解决的问题。我无法在哪里找到有关此信息的示例。你们能不能请至少指出一些方向/参考来使用。
问问题
3002 次
1 回答
4
Wireshark 中的 Lua API 非常强大。它可用于编写解剖器、解剖器后和水龙头。您可以从Lua Support in Wireshark
Wireshark 软件的帮助或参考手册中开始。wireshark 官方Lua wiki也很有帮助。请注意,某些代码示例已过时。
在您的情况下,只需要分析 pcap 文件。还有另一种方法。Tshark
,Wireshark 命令工具,可用于分析 pcap 文件,并将结果输出到文本文件(或,如果需要,xml 格式的文件)。您可以使用Lua
脚本来调用tshark
和处理结果,就像处理任何文本文件一样。
Megaco
这是我为分析Windows 中的协议而编写的一个示例。如您所见,其他脚本语言也可以通过这种方式使用,尤其是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
有丰富的参数可供使用,详见这里。以下是如何调用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)
于 2013-06-01T14:04:48.663 回答