pycommunityid
This package provides a Python implementation of the open Community ID flow hashing standard.
It supports Python versions 2.7+ (for not much longer) and 3+.
Installation
This package is available on PyPI, therefore:
pip install communityid
To install locally from a git clone, you can use also use pip, e.g. by saying
pip install -U .
Usage
The API breaks the computation into two steps: (1) creation of a flow tuple object, (2) computation of the Community ID string on this object. It supports various input types in order to accommodate network byte order representations of flow endpoints, high-level ASCII, and ipaddress objects.
Here's what it looks like:
import communityid
cid = communityid.CommunityID()
tpl = communityid.FlowTuple.make_tcp('127.0.0.1', '10.0.0.1', 1234, 80)
print(cid.calc(tpl))
This will print "1:mgRgpIZSu0KHDp/QrtcWZpkJpMU=".
The package includes three sample applications:
-
community-id, which calculates the ID directly for given flow tuples. It supports a small but growing list of parsers. Example:
$ community-id tcp 10.0.0.1 10.0.0.2 10 20 1:9j2Dzwrw7T9E+IZi4b4IVT66HBI= -
community-id-pcap, which iterates over a pcap via dpkt and renders Community ID values for each suitable packet in the trace. This exercices the package's "low-level" API, using flow tuple values as you'd encounter them in a typical network monitor.
-
community-id-pcapfilter, which iterates over a pcap via dpkt and produces a pcap of only those packets whose Community IDs have a specific value, filtering out all others.
-
community-id-tcpdump, which takes tcpdump output on stdin and augments it with Community ID values on stdout. This exercices the package's "high-level" API, using ASCII representations of tuple values.
Testing
The package includes a unittest testsuite in the tests directory
that runs without installation of the module. After changing into that
folder you can invoke it e.g. via
python -m unittest communityid_test
or
nose2 -C --coverage ../communityid --coverage-report term-missing communityid_test
or by running ./communityid_test.py directly.
Metadata
Release files for communityid 1.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| communityid-1.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Release files / communityid-1.5.0-py3-none-any.whl
| Download URL | communityid-1.5.0-py3-none-any.whl |
|---|---|
| Size | 18.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
aa74ddd554f8f012d2dd3bc0008eadd5e1c4bc0c6c7728f2080c637016eade6d
|
|
BLAKE2b-256 checksum How to use checksums |
39bb84dfd98be7ffe11af287f1c7482e73f68d6f3268a197d70113289db6276e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.6
|