Last updated:
0 purchases
pnet 0.0.1
A fast and simple packet creation and parsing lib for Python, currently nothing
more then a proof of concept. Inspired by both the python pypacker library and Rust’s pnet,
Design
Built around trying to minimize copying data by taking advantage of
memoryviews
for fast slicing and zero copy memory operations.
This library takes either a bytes or bytearray object and parses out
various protocols in a similar fashion to the Rust library. The resulting
packet objects can be inspected, or, in the case its backed by a bytearray,
also written to. In this case, the backing memory is immediately updated.
Instead of mapping packet fields to attributes, I expose them instead with a
collection-like API. This is my personal taste, as I don’t like how
autogenerated attributes end up with akward names that can overlap with Python
keywords.
Performance
Initial testing on my machine has shown that this library is about twice as
fast at parsing packets, but I haven’t determined yet if this can be attributed
to design differences, or if I’m just simply doing less.
TODO
This is one part of a slew of network inspecting code I’m releasing.
rich BPF support and mini-language
asyncio support for raw sockets and packet capturing
asyncio based dhcp server and client library
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.