【问题标题】:Traffic generation at higher data rate以更高的数据速率生成流量
【发布时间】:2014-03-18 15:12:25
【问题描述】:
from scapy.all import *
import socket 

s = socket.socket(socket.AF_INET, socket.SOCK_RAW,socket.IPPROTO_RAW)
s.bind(("127.0.0.1", 0))
pe=Ether()/IP(src="10.0.0.1",dst="10.0.0.2")/ICMP()
data = pe.build()
while True:
     s.send(data)

虽然我提到了目标地址,但仍然使用这个脚本我得到了这个错误

WARNING: No route found for IPv6 destination :: (no default route?)

Traceback (most recent call last):

File "testing.py", line 12, in

s.send(data)

socket.error: [Errno 89] Destination address required

【问题讨论】:

    标签: python network-protocols packet scapy traffic


    【解决方案1】:
    1. 使用AF_PACKET 而不是AF_INET

      s = socket.socket(socket.AF_PACKET, socket.SOCK_RAW,socket.IPPROTO_RAW)
      
    2. 绑定到设备名称而不是地址。

      s.bind(("lo", 0))
      

      lo是环回设备名,如果你想将数据包发送到机器外,请替换为实际设备名。)

    【讨论】:

    • 在我运行脚本时执行此操作后,它在打印此警告后停止:没有找到 IPv6 目的地的路由 ::(没有默认路由?)并且在键盘中断时它再次给出错误 Traceback (最近一次通话最后):文件“testing.py”,第 12 行,在 s.send(data) KeyboardInterrupt
    • 我正在尝试使用 scapy 在 Python 中生成尝试。生成数据包很好,但是当涉及到以足够快的速率发送流量时(根据我的需要,在每秒 500-700 个数据包的范围内),我似乎在 20-30 pps 左右碰壁了。这就是我使用套接字或尝试使用的原因。
    • @M.HarisAzfar,如果我按照答案中的描述更改了您的代码,该代码将按预期工作。请看我刚刚录制的这个截屏视频:asciinema.org/a/8277
    • 代码现在可以工作,但wireshark 没有捕获数据包。我不知道原因,因为它在我不使用套接字时被捕获 -
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2022-01-12
    • 1970-01-01
    • 2016-08-10
    • 1970-01-01
    • 2021-12-31
    • 2018-10-22
    相关资源
    最近更新 更多