python - 如何控制 Scapy 发送数据包的速度?
问题描述
我正在使用Scapy
伪造随机 tcp 和 udp 流来测试我的 SDN 实验中的数据包泛滥。但我不知道如何控制Scapy
发送数据包的速度。例如,如果我想设置Scapy
发送数据包 1000 pkt/s,我应该怎么做?
解决方案
最有效的方法是将 scapysendpfast
与tcpreplay
(必须安装)一起使用:
>>> pkt = Ether()/IP()/TCP()/"blobofdata". # must be layer 2
# let’s send 10000 packets at 1000 packets per seconds
>>> sendpfast(pkt, pps=1000, loop=10000, parse_results=1)
{'packets': 10000,
'bytes': 660000,
'time': 9.99,
'bps': 66006.1,
'mbps': 0.528,
'pps': 1000.09,
'flows': 1,
'fps': 0.1,
'flow_packets': 100000000,
'non_flow': 0,
'successful': 10000,
'failed': 0,
'truncated': 0,
'retried_enobufs': 0,
'retried_eagain': 0,
'command': 'tcpreplay --intf1=enp0s3 --pps=1000 --loop=10000 /tmp/scapyo6ilzjdk',
'warnings': []}
>>>
你甚至可以得到一些统计数据。这允许解决不允许如此高的数据包速率的 Python 限制。
如果您的目标是较低的费率,您可以使用inter
fromsend
>>> sendp(pkt, count=10000, inter=1./20) # 20 packets per second
推荐阅读
- asp.net - 如何获得在 ashx 文件中编写不安全代码的权限?
- javascript - 单选按钮的 disabled 属性在反应式表单中不起作用
- python - 如何从 np.genfromtxt 添加的 ndarray 中删除“b”字符
- reporting-services - 如何限定使用 First 以仅获取组中的第一个值?
- android - 将项目迁移到 AndroidX 后出现 FileNotFoundException
- javascript - 使用 .keypress() 更新 chartjs 饼图不起作用
- python - Django rest - 将字段转换为列表?
- selenium-webdriver - 切换到 webdrivers gem 后的弃用警告
- django - 当您将项目上传到托管服务时,mysql 如何与 django 一起工作?
- android - 分页库 + 房间未获取 @relation