要使用原始套接字发送scapy数据包,必须先将数据包转换为原始字节。例如,使用scapy制作的数据包如下:p = IP(dst="192.168.1.254")/TCP(flags="S", sport=RandShort(),dport=80)
应使用bytes(p)转换为原始字节。
这会给你类似的东西:'E\x00\x00(\x00\x01\x00\x00@\x06\xf6w\xc0\xa8\x01\t\xc0\xa8\x01\xfe\x97%\x00P\x00\x00\x00\x00\x00\x00\x00\x00P\x02 \x00t\x15\x00\x00'
然后可以使用原始套接字发送它。因此,对于您的示例,您可以修改一些代码,例如:from scapy.all import *
import socket
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
p = IP(dst="192.168.1.254")/TCP(flags="S", sport=RandShort(),dport=80)/Raw("Hallo world!")
s.connect(("192.168.1.254",80))
s.send(bytes(p))
print "[+] Request Sent!"
except Exception, e:
raise e
这应该管用!
注意!!!