2013-05-31 111 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查看更新部分。 –