Scapy:接收然后发送L2数据包?

时间:2015-09-02 18:32:07

标签: scapy

Scapy很好,你有srp()函数发送并等待答案。

我正在寻找一种等待数据包的好方法,然后立即发送答案。

使用sniff(prn=callback),我在callback函数中发送数据包似乎无法正常工作,因为sniff()返回发送的数据包(可能与低级别套接字有关)

我还注意到,如果我使用sniff()进行count=1并在sniff()返回时发送答案,我会丢失一些数据包而sniff()未被调用。

例如,此代码:

from scapy.all import *
i = "eth3"

def cb(rx_pkt):
    rx_pkt.summary()
    dst_addr = rx_pkt[0].src
    answer = Ether(src="00:24:81:7f:cc:4f",dst=dst_addr)/IP()/ICMP()
    sendp(answer,iface=i)

  sniff(iface=i,timeout=1000,prn=cb)

第一次调用cb()时,会正确发送预期的数据包。但它似乎处理了自己发送的数据包。

有没有更好的方法来实现这个目标?

0 个答案:

没有答案