我有一个pcap (~90M),我想重放那个文件。我遇到了替罪羊,它提供了读取pcap并重放它的方法。我尝试了两种重放数据包的方法
sendp(rdpcap(<filename>)和
pkts = PcapReader(<filename>);
for pkt in pkts:
sendp(pkt)第一个游戏我内存错误,内存消耗的python进程上升到3g,最后它死了。但是第二个选项对我来说很好,因为它没有将整个文件读入内存。我有三个问题
发布于 2013-04-28 03:50:11
回答你的第一个问题,听起来好像你自己回答了!试着在另一个40到50 MB的pcap上再次运行第一个选项,看看是否出错。这样,您至少可以检查该文件--该文件对于您的系统来说太大了,需要Scapy来处理(您的系统中没有足够的RAM来处理Scapy如何运行其算法,因为它是为一次处理几个数据包而构建的,而不是一个90 if的pcap文件),或者如果它只是代码中的一些内容。
为了回答你的第二个问题,根据过去几周我在Scapy上读的“我一直在做的事情”,我坚信这是肯定的。然而,我不知道有什么来源从我的头顶支持这一验证。
忍者编辑-我在另一个StackOverflow问题- Specify timestamp on each packet in Scapy?上看到了这个
虽然这是针对单个数据包--如果每个数据包都在Scapy中被加盖了时间戳,那么我想,对于您在其中读取的一个大pcap中的每个包,都是一样的。这样,当您重播数据包时,它应该按照相同的顺序进行。
在这个答案中有很多受过教育的猜测,希望它能帮助你!
发布于 2015-04-21 23:57:55
pkts = rdpcap(<filename>),看看需要多少内存,然后从那里开始。如果问题仍然存在,您可能希望尝试不同版本的替罪羊。sendp()不会这样做。您可以尝试实时参数(在控制台上键入help(sendp) )。但总的来说,根据我的经验,替罪羊不太擅长保持准确的时间。https://stackoverflow.com/questions/16217337
复制相似问题