Scapy --TypeError: unbound 方法 copy() 必须以 UDP 实例作为第一个参数调用
Posted
技术标签:
【中文标题】Scapy --TypeError: unbound 方法 copy() 必须以 UDP 实例作为第一个参数调用【英文标题】:Scapy --TypeError: unbound method copy() must be called with UDP instance as first argument 【发布时间】:2019-04-13 14:59:34 【问题描述】:我正在编写一个 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) )
Traceback(最近一次调用最后一次):
文件“EthCfgRx_Test_3.py”,第 20 行,在 UDP(sport=31123, dport=31123, chksum=0x6f21, len=30) / Raw(load=Payload) )
文件“/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 in Six.iteritems(fields)
文件“/home/watouser/.local/lib/python2.7/site-packages/scapy/packet.py”,第 382 行,在 对于 fname, fval in Six.iteritems(fields)
文件“/home/watouser/.local/lib/python2.7/site-packages/scapy/packet.py”,第 377 行,位于 copy_field_value return self.get_field(fieldname).do_copy(value)
文件“/home/watouser/.local/lib/python2.7/site-packages/scapy/fields.py”,第 86 行,在 do_copy 返回 x.copy()
TypeError: unbound 方法 copy() 必须以 UDP 实例作为第一个参数调用(什么都没有)
有什么建议吗?
提前致谢!
【问题讨论】:
【参考方案1】:Scapy 会自动绑定数据包。
错误的部分似乎是Proto=UDP
。 Proto 应该是一个数字,而不是一个类。
/
操作时会自动提供Proto,无需指定
【讨论】:
以上是关于Scapy --TypeError: unbound 方法 copy() 必须以 UDP 实例作为第一个参数调用的主要内容,如果未能解决你的问题,请参考以下文章