我无法弄清楚如何使用 PacketFu 时间戳结构。(PacketFu 文档-时间戳文档)我在做
packets = PcapFile.read_packets "myCapture.pcap"
...但我不知道如何从结果中获取时间戳信息。Unix 纪元格式就可以了。
我知道时间戳信息是实际数据包的一部分,libpcap
而不是实际数据包,并且我已经确认(在 Wireshark 中)存在有用的时间戳信息。我想以编程方式提取它。
这是我从Packetfu 测试代码中收集到的内容:
file = File.open("myCapture.pcap") {|f| f.read}
packets = PacketFu::PcapPackets.new.read file
packets.each { |p|
t = p.timestamp
puts t.sec.to_i.to_s + "." + t.usec.to_i.to_s
packet = PacketFu::Packet.parse(p.data)
# do stuff with packet...
}
可怕的无证,并且可能会降低性能,必须读取整个文件而不是像可以做的那样传递一个块,这比PcapFile.read_packets
PcapFile.read_packets
???具有惊人的性能。(这是一个轶事,而不是科学的结果。)
我会接受比上述更好的答案。
此外,如果有足够代表的人可以创建packetfu
标签,那就太好了。