2011-02-06 76 views
2

我使用Ruby來處理一些PCAP文件。我需要閱讀完整的文件並分析每個pcaket。Ruby PCAP讀取完整的捕獲文件

require 'pcap' 

inFile = Pcap::Capture.open_offline("1.pcap") 

inFile.loop(-1) do |pkt| 
#Process packet. 
end 

上面的代碼在讀完所有數據包後不會退出。根據Ruby pcap文檔'負數會永遠處理數據包或直到達到EOF'。這裏可能是什麼問題。

+2

我假設您的示例程序中缺少`do'並不是問題,所以我只是在那裏爲您編輯它。一旦修正了這個錯誤,我使用的轉儲工作得很好。所以我認爲問題取決於具體轉儲。在這種情況下,您可能需要聯繫libpcap開發人員以確定他們是否可以發現轉儲文件存在問題,但轉儲損壞是我的第一次猜測。 – sarnold 2011-02-06 09:18:21

回答

2

我正在使用下面的很多變體來進行ad-hoc數據包分析。適用於我。 Ruby 1.9.3-p125,pcaprub 0.11.2。

#!/opt/local/bin/ruby1.9 
require 'pcaprub' 

fn = ARGV[1] || "pcap-000" 
pc = Pcap.open_offline(ARGV[0]) 
pc.each do |pk| 
    fn1 = fn.succ! 
    File.binwrite(fn1, pk) 
end