2013-05-31 112 views
1

我在使用lua时很新颖。我的地区是在wireshark探索lua。我有一个捕获的pcap文件。我如何打开该文件并在不同的头文件中读取不同的内容(如tcp/udp头文件中的端口号,http头中的应用程序相关信息等)。
我很抱歉,这是一个直接的问题,但我没有任何可以参考的解决这个问题。我不能在哪里找到这些信息的例子。你们可以请一些方向/参考以利用。使用lua读取pcap文件

回答

4

wireshark中的Lua API非常强大。它可以用来编写解剖器,后解剖器和水龙头。您可以从Wireshark软件的帮助中的Lua Support in Wireshark Reference Manual开始。 wireshark官员Lua wiki也是有帮助的。请注意,一些代码示例已过时。

在你的情况下,只需要分析pcap文件。还有另一种方法可以这样做。 Wireshark命令工具Tshark可用于分析pcap文件,并将结果输出到文本文件(或者,如果需要,还可以使用xml格式的文件)。您可以使用Lua脚本调用tshark并处理结果,如处理任何文本文件。

这里有一个例子,我写在Windows中分析Megaco协议。如您所见,其他脚本语言也可以这种方式使用,特别是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() 

UPDATE: 的关键是使用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) 
+0

下面是其他一些环节: •Wireshark的用户指南:www.wireshark.org/docs/wsug_html_chunked/wsluarm.html •[Wireshark的维基:Lua中(HTTP ://wiki.wireshark.org/Lua) •[Wireshark Wiki:Lua - Examples](http://wiki.wireshark.org/Lua/Examples) •[Sharkfest09](http://sharkfest.wireshark。 org/sharkfest.09/index.html) - Developer Track演示文稿:由Stig Bjorlykke撰写关于Lua的脚本在Wireshark中 – joke

+0

@Yu Hao你能写出小的2-3行脚本来打开一个包和输出,可以说src地址, ip头中的目的地址和tcp src端口以及tcp目的端口我可以从那里开始。谢谢你 –

+0

@JustinCarrey查看更新部分。 –