我需要腌制一个scapy
包。大多数时候这是有效的,但有时pickler会抱怨函数对象。根据经验:ARP 数据包可以很好地腌制。某些 UDP 数据包有问题。
我的解决方案(受到 scapy 邮件列表的启发)如下:
class PicklablePacket:
"""A container for scapy packets that can be pickled (in contrast
to scapy packets themselves)."""
def __init__(self, pkt):
self.contents = bytes(pkt)
self.time = pkt.time
def __call__(self):
"""Get the original scapy packet."""
pkt = scapy.Ether(self.contents)
pkt.time = self.time
return pkt
任何我想通过的地方scapy
Packet
通过一个Queue
我只是将它包裹在一个PicklablePacket
and __call__
之后它。我不知道没有以这种方式保留的数据。然而这种方法只适用于Ethernet
数据包。 (在常规 NIC(而非 WLAN)上嗅探的所有数据包都是以太网。)它也可能扩展到其他类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)