Scapy --TypeError:必须使用UDP实例作为第一个参数来调用未绑定方法copy()

时间:2018-11-10 04:09:10

标签: python-2.7 udp typeerror scapy

我正在编写一个Python脚本,该脚本使用Scapy在第2层创建UDP数据包。

但是,当在数据包的定义中包含UDP()选项/属性时,我会不断收到“ TypeError”。

代码:

Return_Data = sendp( Ether(dst="ff:ff:ff:ff:ff:ff", type=0x800) \
/ IP(version=4L, ihl=5L, tos=0x0, len=64,                 \
id=0, flags=0, frag=0L, ttl=64, proto=UDP,              \
chksum = 30495, src="xxx.xxx.xx.xxx", dst="xxx.xxx.x.x") /  \
UDP(sport=31123, dport=31123, chksum=0x6f21, len=30) / Raw(load=Payload) )

回溯(最近通话最近一次):

文件“ EthCfgRx_Test_3.py”,第20行,在 UDP(sport = 31123,dport = 31123,chksum = 0x6f21,len = 30)/ Raw(load =有效载荷))

文件“ /home/watouser/.local/lib/python2.7/site-packages/scapy/packet.py”,第349行,位于 div 中     cloneB = other.copy()

文件“ /home/watouser/.local/lib/python2.7/site-packages/scapy/packet.py”,第200行,复制     clone.fields = self.copy_fields_dict(self.fields)

文件“ /home/watouser/.local/lib/python2.7/site-packages/scapy/packet.py”,行382,在copy_fields_dict中     表示fname,将fval替换为six.iteritems(fields)}

文件“ /home/watouser/.local/lib/python2.7/site-packages/scapy/packet.py”,行382,在     表示fname,将fval替换为six.iteritems(fields)}

文件“ /home/watouser/.local/lib/python2.7/site-packages/scapy/packet.py”,行377,在copy_field_value中     返回self.get_field(fieldname).do_copy(value)

文件“ /home/watouser/.local/lib/python2.7/site-packages/scapy/fields.py”,行86,在do_copy中     返回x.copy()

TypeError:必须以UDP实例作为第一个参数来调用未绑定方法copy()(而是什么也不要)

有什么建议吗?

预先感谢!

1 个答案:

答案 0 :(得分:0)

Scapy将自动绑定数据包。

错误的部分似乎是Proto=UDP。 Proto应该是数字,而不是课程。

进行/操作时,将自动提供Proto,因此您无需指定它