有没有办法在后台捕获数据包并使用scapy发送数据包?

Is there a way to capture packets in background and send packets using scapy?

我正在尝试捕获传入的数据包,同时使用 scapy 在接口(间隔 - 1 pps)中发送连续的数据包。我尝试使用与之关联的不同参数的嗅探函数(例如 prn)。但它没有用,因为 sniff 没有完成操作 (sniffinf) 以继续发送数据包或不在后台捕获数据包。

我的要求:

  1. 开始使用scapy抓包
  2. 发送traffic/packets
  3. 停止使用 scapy 捕获

尝试过:

sniff(iface="eno2") <-- 侦听要捕获的数据包(实际上,一旦从该接口接收到数据包,Peer 就会发送数据包(控制数据包交换) sendp(pkt, iface="eno2") <--- 由于嗅探执行未完成,此命令未执行

谢谢。

使用AsyncSniffer

from scapy.sendrecv import AsyncSniffer, send
a = AsyncSniffer()
a.start()
send(IP(dst="www.google.com")/ICMP(), inter=1, count=30)
results = a.stop()

我用 count 有某种方法可以停止 sendp

您可以像 Cukic0d 所说的那样尝试 AsyncSniffer,或者您可以只创建一个针对您的嗅探功能的 Python 线程。

import threading
thread = threading.Thread(target=sniff_def, args=(arg1, arg2,))
thread.start()