Skip to main content
Help the Python Software Foundation raise $60,000 USD by December 31st!  Building the PSF Q4 Fundraiser

Exploratory Python Chained Generator Project

Project description

Python Chained Generators for Network Packets: Read the Docs

travis Coverage Status landscape version downloads wheel supported-versions supported-implementations license

Install/Run Stuff

Want to see what’s happening on your network right now? Just install chains and run ‘netwatch’.

$ pip install chains
$ netwatch -s
2015-09-07 19:08:34 - UDP IP>
2015-09-07 19:08:34 - UDP IP6 fe80::6e40:8ff:fe89:fc08(internal) --> ff02::fb(multicast_dns)
2015-09-07 19:08:34 - UDP IP>
2015-09-07 19:08:34 - UDP IP6 fe80::8a0:4946:3c8a:e6a1(internal)--> ff02::fb(multicast_dns)
2015-09-07 19:08:34 - TCP IP>
2015-09-07 19:08:36 - TCP IP>
2015-09-07 19:08:36 - UDP IP>
2015-09-07 19:08:36 - TCP IP>

Want to go to coffee shop and see http(s) requests floating about?

$ urlwatch

URI: /j/p.js?d=hireme&ac=891012&tags=python;attributes&lw=5913&bw=1539
Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36

URI: /ajax/libs/jquery/1.7.1/jquery.min.js
Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36

HTTPS_REQUEST --> tls_records(5)
TLSRecord(length=512, version=769, type=22, data='\x01\x00\x01\xfc\x03\x03K\t\xf8_\x8...
TLSRecord(length=262, version=771, type=22, data='\x10\x00\x01\x02\x01\x00Vfd\x8f8a\x...
TLSRecord(length=1, version=771, type=20, data='\x01')
TLSRecord(length=64, version=771, type=22, data="l\xd0\xce\x96\xf5\x1a\xf8\xcf\xcc\x1...
TLSRecord(length=560, version=771, type=23, data='\x1d\x942K\xfb\x87\x19v\xba\x13\x14...



The Chains project is an exploration of python components that you ‘chain’ together to process streaming network packets. The use of native python generators means the code is extremely lightweight and efficient.


# Create the classes
streamer = packet_streamer.PacketStreamer(iface_name=data_path, max_packets=50)
meta = packet_meta.PacketMeta()
rdns = reverse_dns.ReverseDNS()
printer = packet_printer.PacketPrinter()

# Set up the chain

# Pull the chain

Example Output

Timestamp: 2015-05-27 01:17:07.919743
Ethernet Frame: 6c:40:08:89:fc:08 --> 01:00:5e:00:00:fb  (type: 2048)
Packet: IP --> (len:55 ttl:255) -- Frag(df:0 mf:0 offset:0)
Domains: LOCAL --> multicast_dns
Transport: UDP {'dport': 5353, 'sum': 59346, 'sport': 5353, 'data': '...', 'ulen': 35}
Application: None

Timestamp: 2015-05-27 01:17:07.919926
Ethernet Frame: 6c:40:08:89:fc:08 --> 33:33:00:00:00:fb  (type: 34525)
Packet: IP6 fe80::6e40:8ff:fe89:fc08 --> ff02::fb (len:35 ttl:255)
Domains: LOCAL --> multicast_dns
Transport: UDP {'dport': 5353, 'sum': 6703, 'sport': 5353, 'data': '...', 'ulen': 35}
Application: None


MIT Licensed

Project details

Download files

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

Files for chains, version 0.2.0
Filename, size File type Python version Upload date Hashes
Filename, size chains-0.2.0-py2.py3-none-any.whl (37.1 kB) File type Wheel Python version 2.7 Upload date Hashes View
Filename, size chains-0.2.0.tar.gz (60.0 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page