Skip to main content

Community ID flow hashing

Project description

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+.

example foobar

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

communityid-1.5.0-py3-none-any.whl (18.9 kB view details)

Uploaded Python 3

File details

Details for the file communityid-1.5.0-py3-none-any.whl.

File metadata

  • Download URL: communityid-1.5.0-py3-none-any.whl
  • Upload date:
  • Size: 18.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for communityid-1.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 aa74ddd554f8f012d2dd3bc0008eadd5e1c4bc0c6c7728f2080c637016eade6d
MD5 4646f1f45f260e3d214f9777e36da49c
BLAKE2b-256 39bb84dfd98be7ffe11af287f1c7482e73f68d6f3268a197d70113289db6276e

See more details on using hashes here.

Supported by

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