Как сериализовать объект Pkthdr (заголовок пакета), предоставляемый из pcapy - PullRequest
0 голосов
/ 01 ноября 2018

В настоящее время я слежу за пакетами, используя pcapy

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

и для каждого пакета pcapy возвращает Pkthdr (объект) и буфер (str) для каждого пакета.

Моя главная цель - отправить эту информацию через сокет и реконструировать объект в другом месте, но я не могу отправить объект без сериализации / десериализации. Поэтому я попытался сериализовать объект 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, это может объяснить мою трудность сериализации объекта, но это по моим сведениям.

Что мне здесь не хватает?

Спасибо

...