发送新数据包而无需等待先前的数据包回复

时间:2015-05-10 13:20:03

标签: python packet scapy reply

我有一个简单的网络服务器设置scapy,它等待回复这样:

connreq = sniff(filter=connfilter, prn=handshake)

在函数握手中执行握手,但我遇到了一个问题,这里是:

answer = sr1(ip/synack, timeout = 4)

发送一个synack并等待答案,如果在4秒内没有收到答复,则握手将被终止。但是,出于某种原因,如果我有多个客户端,我的函数握手将一次只执行一次,因为scapy 等待前一个客户端的答案

我不希望scapy sniff函数等待,我希望它在任何情况下处理数据包,即使之前的数据包尚未处理。

我熟悉线程功能,但如何将其应用于scapy? (或嗅觉功能?)

1 个答案:

答案 0 :(得分:1)

1。 您可以在timeout函数中尝试sniff参数。我记得有这样的参数。

connreq = sniff(filter=connfilter, prn=handshake, timeout=4)

2。 如果方法1不起作用,则必须使用多进程来处理此问题。

在服务器端,

import threading
def your_sniff_function():
    connreq = sniff(filter=connfilter, prn=handshake)
    # save sniff result to local file here

t = threading.Thread(target=your_sniff_function, args=[])
t.start()
t.join(timeout=4) # use timeout here to force termination
# you can start as many subthreads as you want here