使用Scapy和Gevent构建数据包

时间:2013-07-26 06:20:24

标签: python gevent scapy

我正在尝试编写一个使用gevent工作多线程的程序。

程序将生成一个数据包,用scapy构建它,然后使用raw_socket发送它。像这样:

def worker(...):
    s = socket.socket(socket.AF_PACKET, socket.SOCK_RAW)
    s.bind((iface, socket.htons(0x0800)))
    packet = fragment(Ether()/IP(dst=dst, src=str(src))/TCP(dport=dport, sport=sport)/pay_load, fragsize=100)
    data = [piece.build() for piece in packet]
    for packet in data:
        s.send(packet)

代码在序列中运行得很好,但是当我使用gevent生成线程时,它会在[piece.build() for piece in packet] "WARNING: Child died unexpectedly. Packets may have not been sent 30405"处失败。

我能做的最好的猜测是Scapy中的Packet.build不能在线程下工作。任何人都可以帮助解决方法或其他方式来生成数据包吗?

0 个答案:

没有答案