Skip to main content

create classes to (un)pack packets to/from objects with named fields

Project description

The packet module is a front-end to the struct module. It allows the user to define a packet format, and to create a Python class to represent those packets with named attributes for each packet field:

# demo: make an IP packet packer/unpacker

# IP Prototype
ipp = Prototype()
ipp.add_uint8('vhl')
ipp.add_uint8('tos')
ipp.add_uint16('len')
ipp.add_uint16('id')
ipp.add_uint16('off')
ipp.add_uint8('ttl')
ipp.add_uint8('p')
ipp.add_uint16('sum')
ipp.add_uint32('src')
ipp.add_uint32('dst')
IP = ipp.klass('IP', NETWORK)
del ipp

# ....

# create an IP packet instance from bytes
packet = IP(bytes)

# create an empty packet
packet = IP()

# access fields
print(packet.len)

# pack fields into bytes
bytes = packet.pack()

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page