python考试题库 pcap_使用Python修改PCAP

我需要读取一个PCAP文件,修改一些字段(实际上是IPv4源和目标,以及以太网源和目标). PCAP已预先过滤,仅包括基于以太网的IPv4数据包.

到目前为止,我尝试使用Scapy进行此操作,但是Scapy存在严重的内存问题.读取〜350MB PCAP文件时,我的16GB RAM已满.实际上,只是阅读.我对此文件没有做任何其他事情.我也有found this answer,有了这些更改,阅读速度很快.一旦我开始修改数据包,内存就会再次膨胀. Scapy实际上在这种情况下不可用

我还考虑过使用其他工具,例如tcprewrite,但是它不能满足我的目的.每个数据包的源MAC始终相同,这也可以使用tcprewrite完成.源IP在给定的子网范围内应该是随机的,例如均匀分布在10.0.0.0/16中.不太容易.目的地IP甚至更加复杂,它需要根据给定的流量矩阵进行计算.

因此,问题是:如何读取PCAP文件,使用自定义功能修改四个基本字段(以太网src dst,IP src dst),然后将其写回到(另一个)PCAP文件中?

实际上,我框架的其余部分都是用Python编写的,因此我更喜欢基于python的解决方案.但是,由于我可以简单地调用其他脚本,所以这不是强制性的.谢谢!

解决方法:

我不知道是否有办法用scapy做到这一点,但您也可以使用非常简单的PcapFile.py库,该库允许您逐包读取/写入pcap文件(免责声明:我是其中的一位作者).如果您的需求不是太复杂(例如,您不需要重新生成校验和),则可以使用Python切片和Python的struct模块简单地修改帧的字节串.

但是我认为也有可能使Scapy使用p = Ether(packet_bytes)分析帧,并使用str(p)将其转换回PcapFile.py的字节流.这样,您就可以让scapy重新为您计算有效的校验和.

标签:pcap,python

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值