如何在python中发送数据包?

时间:2013-12-13 15:36:24

标签: python scapy

我尝试使用这段代码在python中使用scapy发送数据包

data= "University of texas at San Antonio"
a=IP(dst="129.132.2.21")/TCP()/Raw(load=data)
sendp(a)

但我在第三行“sendp(a)”中说错误

Traceback (most recent call last):
   File "<pyshell#7>", line 1, in <module>
     sendp(a)
   File "C:\Python25\lib\site-packages\scapy\sendrecv.py", line 259, in sendp
     __gen_send(conf.L2socket(iface=iface, *args, **kargs), x, inter=inter, loop=loop, 
   count=count, verbose=verbose, realtime=realtime)
   File "C:\Python25\lib\site-packages\scapy\arch\pcapdnet.py", line 313, in __init__
     self.outs = dnet.eth(iface)
   File "dnet.pyx", line 112, in dnet.eth.__init__
   OSError: No such file or directory

请告诉我错误的地方。

1 个答案:

答案 0 :(得分:2)

您正在使用sendp()直接使用IP数据包,这是错误的。

使用sendp(Ether()/IP()/...)send(IP()/...)

顺便说一下,您无需添加Raw(load=...),因为Scapy会将str视为Raw

所以试试这个:

data = "University of texas at San Antonio"
a = IP(dst="129.132.2.21")/TCP()/data
send(a)