【发布时间】:2012-02-23 04:08:48
【问题描述】:
我正在使用 Ruby 来处理一些 PCAP 文件。我需要阅读完整的文件并分析每个 pcaket。
require 'pcap'
inFile = Pcap::Capture.open_offline("1.pcap")
inFile.loop(-1) do |pkt|
#Process packet.
end
上述代码在读取所有数据包后不会退出。根据 Ruby pcap 文档“负计数永远处理数据包或直到达到 EOF”。这可能是什么问题。
【问题讨论】:
-
我认为您的示例程序中缺少的
do不是问题,所以我只是在其中为您编辑了它。一旦修复了该错误,我使用的转储就可以正常工作。所以我认为问题取决于相关的特定转储。在这种情况下,您可能需要联系 libpcap 开发人员,看看他们是否可以发现您的转储文件存在问题,但我的第一个猜测是转储损坏。 -
您使用的是哪个 PCAP 库?你看过任何替代宝石吗? rubygems.org/search?query=pcap
-
@sarnold:这将是一个很好的答案
-
@andomar,我对将模糊的猜测发布为 answers 感到不安——如果@Indika 报告转储文件太无效而无法解析,我会很乐意将其移至一个答案:) 但与此同时我不相信我是对的。
-
感谢所有 cmets 并对程序中的错误表示歉意。我在 [link] wiki.wireshark.org/… 尝试了 PCAP 文件。我在 Wireshark 示例捕获中尝试了几个捕获文件。但是得到了同样的结果。我在 Ruby 1.9.2 中使用 gem pcap (0.7.3)。