如何从特定套接字发送Scapy中的数据包?

时间:2019-08-08 11:13:21

标签: python scapy

我正在尝试通过创建套接字来通过scapy发送一些数据包。我想通过创建的套接字发送数据包。我该怎么做

这是我尝试过的一些代码

pkt = "\x00\x1c\x7fb\xb5\xfd\x00PV\xb8\x08\x9f\x08\x00E\x00\x000/t\x00\x00\x80\x11\x00\x00\n\xe7\xa0\xc6\n\xe7\x922\xd2\xb4\x05\xdc\x00\x1cH\xf4\t\x8d\x01\x00\x01\x01\x00\x10\xff\xff\xfe\xd4\x00\x00\x00\x00\xb2\x1a=\x0f"
Socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)                   
Socket.bind(('',udp_sport))
S = Socket.connect_ex(("10.146.144.51",1803))    
Socket.settimeout(10)        
sendp(pkt,socket=S)

我在scapy库中看到,有一个选项可以在sendp中使用Socket。我该如何使用它发送?请帮忙。

1 个答案:

答案 0 :(得分:0)

您可以将StreamSocket用作套接字的包装器。参见https://scapy.readthedocs.io/en/latest/layers/tcp.html?highlight=streamsocket#using-the-kernel-s-tcp-stack

在您的情况下:

ss=StreamSocket(s,Raw)
ss.send(...)

注意:在您的示例中,您正在使用sendp()。这意味着第2层数据包。这不适用于您创建的第3层套接字:确保要发送的数据包是L3。