我在用scapy构造畸形icmp报文的时候遇到这么一个问题
Traceback (most recent call last):
File "icmp_abnormal.py", line 12, in <module>
send(pkt, inter=0.01, count=30)
File "/usr/lib/python2.6/site-packages/scapy/sendrecv.py", line 251, in send
__gen_send(conf.L3socket(*args, **kargs), x, inter=inter, loop=loop, count=count,verbose=verbose, realtime=realtime)
File "/usr/lib/python2.6/site-packages/scapy/sendrecv.py", line 234, in __gen_send
s.send(p)
File "/usr/lib/python2.6/site-packages/scapy/arch/linux.py", line 383, in send
iff,a,gw = x.route()
File "/usr/lib/python2.6/site-packages/scapy/layers/inet.py", line 369, in route
return conf.route.route(dst)
AttributeError: 'NoneType' object has no attribute 'route'
其中源码为
1 __author__ = 'ligengyong'
2
3 import struct
4
5 from scapy.layers.inet import IP, ICMP
6 from scapy.sendrecv import send
7
8
9
10 data = struct.pack('=BHI', 0x12, 20, 1000)
11 pkt = IP(src='10.6.2.2',dst = '33.33.33.102')/ICMP(chksum=1)/data
12 send(pkt, inter=0.01, count=30)
后来发现是conf的问你,需要把这个导入进来from scapy.all import conf
加上这句话就ok了
但是不能加from scapy.config import conf 虽然这两个引用的是同一个对象,经过查看源码
route = None # Filed by route.py
route6 = None # Filed by route6.py
个人认为应该是from scapy.all import conf涉及到route.py的一些初始化操作,而from scapy.config import conf
引用范围小,没有这个操作