首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于分组时间戳的Pcap文件重放

基于分组时间戳的Pcap文件重放
EN

Stack Overflow用户
提问于 2013-04-25 14:22:50
回答 2查看 8.5K关注 0票数 1

我有一个pcap (~90M),我想重放那个文件。我遇到了替罪羊,它提供了读取pcap并重放它的方法。我尝试了两种重放数据包的方法

代码语言:javascript
复制
sendp(rdpcap(<filename>)

代码语言:javascript
复制
pkts = PcapReader(<filename>);
for pkt in pkts:
     sendp(pkt)

第一个游戏我内存错误,内存消耗的python进程上升到3g,最后它死了。但是第二个选项对我来说很好,因为它没有将整个文件读入内存。我有三个问题

  1. 对于替罪羊来说,90M的pcap文件太大了,不能重播吗?
  2. 每当我们使用tcpdump/wireshark时,每个数据包都有与其相关的时间戳。假设数据包1在时间T,第2包在时间T+10,替罪羊会以类似的方式重放数据包吗?第一个包在时间T,第二个在T+10?或者它会继续循环地发送它们,我想稍后是PcapReader的情况。
  3. 如果答案是否定的(它只是在循环中重放,而不考虑数据包到达时间),那么我们还有其他的python库可以为我完成这个工作吗?即使是python也不是我的约束。
EN

回答 2

Stack Overflow用户

发布于 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中的每个包,都是一样的。这样,当您重播数据包时,它应该按照相同的顺序进行。

在这个答案中有很多受过教育的猜测,希望它能帮助你!

票数 1
EN

Stack Overflow用户

发布于 2015-04-21 23:57:55

  1. 不是的。它不应该占用3GB的内存。我经常在只有2GB内存的机器上打开更大的pcap。只需尝试做pkts = rdpcap(<filename>),看看需要多少内存,然后从那里开始。如果问题仍然存在,您可能希望尝试不同版本的替罪羊。
  2. 不,默认情况下,sendp()不会这样做。您可以尝试实时参数(在控制台上键入help(sendp) )。但总的来说,根据我的经验,替罪羊不太擅长保持准确的时间。
  3. 我使用的是tcpreplay (linux工具)。它有许多选择,包括各种时间保持机制。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16217337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档