如何序列化pcapy提供的Pkthdr对象(数据包头)

时间:2018-11-01 20:53:44

标签: python sockets serialization pickle libpcap

我目前正在使用pcapy嗅探数据包

self.pcap=pcapy.open_live(dev, 65535, 1, 100)

对于每个数据包,pcapy会为每个数据包返回 Pkthdr (对象)和 buffer (str)。

我的主要目标是通过套接字发送该信息并在其他地方重建该对象,但是如果没有序列化/反序列化,就无法发送该对象。因此,我尝试用pickle和dill序列化PKTHDR对象,但不幸的是它无法正常工作。

pkthdr_serialized = pickle.dumps(pkthdr)
Can't pickle 'Pkthdr' object: <Pkthdr object at 0x7f6498676f30>

以下是有关Pkthdr对象的一些信息:

inspect.isclass(object)
True


inspect.getmembers(pkthdr)
[('getcaplen', <built-in method getcaplen of Pkthdr object at 
0x7faa81714f80>), ('getlen', <built-in method getlen of Pkthdr object at 
0x7faa81714f80>), ('getts', <built-in method getts of Pkthdr object at 
0x7faa81714f80>)]

type(pkthdr)
<type 'Pkthdr'>

callable(pkthdr)
False


pkthdr.getts()
(1541105084, 174388)

pkthdr.getcaplen()
106

pkthdr.getlen()
106

Pcapy用C编码,可能解释了我序列化对象的困难,但这超出了我的了解。

我在这里想念什么?

谢谢

0 个答案:

没有答案