Skip to main content

A flexible and powerful network data analysis framework

Project description

nfstream: a flexible network data analysis framework

nfstream is a Python package providing fast, flexible, and expressive data structures designed to make working with online or offline network data both easy and intuitive. It aims to be the fundamental high-level building block for doing practical, real world network data analysis in Python. Additionally, it has the broader goal of becoming a common network data processing framework for researchers providing data reproducibility across experiments.

Latest Release latest release
Supported Platforms Linux MacOS
Supported Versions python3 pypy3
Build Status Github WorkFlows
Documentation Status ReadTheDocs
Code Quality Quality
Code Coverage Coverage
Discussion Channel Gitter

Main Features

  • Performance: nfstream is designed to be fast (x10 faster with pypy3 support) with a small CPU and memory footprint.
  • Layer-7 visibility: nfstream deep packet inspection engine is based on nDPI. It allows nfstream to perform reliable encrypted applications identification and metadata extraction (e.g. TLS, QUIC, TOR, HTTP, SSH, DNS).
  • Flexibility: add a flow feature in 2 lines as an NFPlugin.
  • Machine Learning oriented: add your trained model as an NFPlugin.

How to use it?

  • Dealing with a big pcap file and just want to aggregate it as network flows? nfstream make this path easier in few lines:
   from nfstream import NFStreamer
   my_awesome_streamer = NFStreamer(source="facebook.pcap") # or network interface (source="eth0")
   for flow in my_awesome_streamer:
       print(flow)  # print it, append to pandas Dataframe or whatever you want :)!
    NFEntry(
        flow_id=0,
        first_seen=1472393122365,
        last_seen=1472393123665,
        version=4,
        src_port=52066,
        dst_port=443,
        protocol=6,
        vlan_id=0,
        src_ip='192.168.43.18',
        dst_ip='66.220.156.68',
        total_packets=19,
        total_bytes=5745,
        duration=1300,
        src2dst_packets=9,
        src2dst_bytes=1345,
        dst2src_packets=10,
        dst2src_bytes=4400,
        expiration_id=0,
        master_protocol=91,
        app_protocol=119,
        application_name='TLS.Facebook',
        category_name='SocialNetwork',
        client_info='facebook.com',
        server_info='*.facebook.com',
        j3a_client='bfcc1a3891601edb4f137ab7ab25b840',
        j3a_server='2d1eb5817ece335c24904f516ad5da12'
    )
  • From pcap to Pandas DataFrame?
    import pandas as pd	
    streamer_awesome = NFStreamer(source='devil.pcap')
    data = []
    for flow in streamer_awesome:
       data.append(flow.to_namedtuple())
    my_df = pd.DataFrame(data=data)
    my_df.head(5) # Enjoy!
  • Didn't find a specific flow feature? add a plugin to nfstream in few lines:
    from nfstream import NFPlugin

    class my_awesome_plugin(NFPlugin):
        def on_update(self, obs, entry):
            if obs.length >= 666:
                entry.my_awesome_plugin += 1

   streamer_awesome = NFStreamer(source='devil.pcap', plugins=[my_awesome_plugin()])
   for flow in streamer_awesome:
      print(flow.my_awesome_plugin) # see your dynamically created metric in generated flows
  • More example and details are provided on the official documentation.

Prerequisites

    apt-get install libpcap-dev

Installation

Using pip

Binary installers for the latest released version are available:

    pip3 install nfstream

Build from source

If you want to build nfstream on your local machine:

    git clone https://github.com/aouinizied/nfstream.git
    cd nfstream
    python3 setup.py install

Contributing

Please read Contributing for details on our code of conduct, and the process for submitting pull requests to us.

Authors

Zied Aouini created nfstream and these fine people have contributed.

Ethics

nfstream is intended for network data research and forensics. Researchers and network data scientists can use these framework to build reliable datasets, train and evaluate network applied machine learning models. As with any packet monitoring tool, nfstream could potentially be misused. Do not run it on any network of which you are not the owner or the administrator.

License

This project is licensed under the GPLv3 License - see the License file for details

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 Distributions

nfstream-3.1.1-cp38-cp38-manylinux1_x86_64.whl (960.0 kB view details)

Uploaded CPython 3.8

nfstream-3.1.1-cp38-cp38-macosx_10_13_x86_64.whl (322.1 kB view details)

Uploaded CPython 3.8 macOS 10.13+ x86-64

nfstream-3.1.1-cp37-cp37m-manylinux1_x86_64.whl (960.0 kB view details)

Uploaded CPython 3.7m

nfstream-3.1.1-cp37-cp37m-macosx_10_13_x86_64.whl (322.1 kB view details)

Uploaded CPython 3.7m macOS 10.13+ x86-64

nfstream-3.1.1-cp36-cp36m-manylinux1_x86_64.whl (960.0 kB view details)

Uploaded CPython 3.6m

nfstream-3.1.1-cp36-cp36m-macosx_10_13_x86_64.whl (322.1 kB view details)

Uploaded CPython 3.6m macOS 10.13+ x86-64

File details

Details for the file nfstream-3.1.1-pp372-pypy3_72-manylinux1_x86_64.whl.

File metadata

  • Download URL: nfstream-3.1.1-pp372-pypy3_72-manylinux1_x86_64.whl
  • Upload date:
  • Size: 960.0 kB
  • Tags: PyPy
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.41.0 PyPy/7.2.0

File hashes

Hashes for nfstream-3.1.1-pp372-pypy3_72-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 7c08362a3c7948bf7ea39d140c5964bc7ff5dd8e86d97cb4e71f2a87c79afc4b
MD5 9f7d1f8aeb600898e229442498a530fc
BLAKE2b-256 2c0693101d02e18e9ed74565c74d615e33f083ace76c6661ee8c84f8504c06db

See more details on using hashes here.

File details

Details for the file nfstream-3.1.1-cp38-cp38-manylinux1_x86_64.whl.

File metadata

  • Download URL: nfstream-3.1.1-cp38-cp38-manylinux1_x86_64.whl
  • Upload date:
  • Size: 960.0 kB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.8.0

File hashes

Hashes for nfstream-3.1.1-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 068aeeb418a5f2056452c571dad97ebc5767a27d0acf64f3cefbf91a25d4b9d6
MD5 412c11b0896034328c2e0fe29f05c1eb
BLAKE2b-256 e3cd42528745b690cb05c868b1a80b01760402565f5372baebb4055f3c7e9191

See more details on using hashes here.

File details

Details for the file nfstream-3.1.1-cp38-cp38-macosx_10_13_x86_64.whl.

File metadata

  • Download URL: nfstream-3.1.1-cp38-cp38-macosx_10_13_x86_64.whl
  • Upload date:
  • Size: 322.1 kB
  • Tags: CPython 3.8, macOS 10.13+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.8.0

File hashes

Hashes for nfstream-3.1.1-cp38-cp38-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 96d8aa595895e99c824e2e234bb2a46e2981244b08d8ced8c55137366f373840
MD5 1845c34c3ff5e0d3df8acf20008ba903
BLAKE2b-256 455e0f81aa109d762be586e6313015d4e54e0754742ea2667dd948b89c5e59ff

See more details on using hashes here.

File details

Details for the file nfstream-3.1.1-cp37-cp37m-manylinux1_x86_64.whl.

File metadata

  • Download URL: nfstream-3.1.1-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 960.0 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.7.5

File hashes

Hashes for nfstream-3.1.1-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 0e343c769cfdbc6e0bafe74474a50c58bce58038b881f31a63c761b2a09abb29
MD5 de3aae4394e32b0c249d1de01949cbfd
BLAKE2b-256 393e2fda4dcb73ee2b98fcc9b85f9461c7a4198761be958ceb447970ee184c4c

See more details on using hashes here.

File details

Details for the file nfstream-3.1.1-cp37-cp37m-macosx_10_13_x86_64.whl.

File metadata

  • Download URL: nfstream-3.1.1-cp37-cp37m-macosx_10_13_x86_64.whl
  • Upload date:
  • Size: 322.1 kB
  • Tags: CPython 3.7m, macOS 10.13+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.7.5

File hashes

Hashes for nfstream-3.1.1-cp37-cp37m-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 96a46c09ac923dfc34dfc9b931caaae1d322bd05af13cb0efe07c9d31cfff9ca
MD5 ee5e40ce710c261d1b89b3e21e564793
BLAKE2b-256 ee030615b537efc62b82ea1778578558f6dbad5e3b87054d5bfde04ee61edbee

See more details on using hashes here.

File details

Details for the file nfstream-3.1.1-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

  • Download URL: nfstream-3.1.1-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 960.0 kB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.6.9

File hashes

Hashes for nfstream-3.1.1-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 93e95f51572ff22c8fcafb7a753a29ae3a44b78c91d47ccd0dbbd07b64f91cf5
MD5 d9b7df17065e82e85a68221613c25a1f
BLAKE2b-256 837b5898b86fdd14d168c82c382ad171bd2b4086f7a2a351e259d85a9e5f2a0e

See more details on using hashes here.

File details

Details for the file nfstream-3.1.1-cp36-cp36m-macosx_10_13_x86_64.whl.

File metadata

  • Download URL: nfstream-3.1.1-cp36-cp36m-macosx_10_13_x86_64.whl
  • Upload date:
  • Size: 322.1 kB
  • Tags: CPython 3.6m, macOS 10.13+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.6.9

File hashes

Hashes for nfstream-3.1.1-cp36-cp36m-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 d0dc44aa1d66c0cdff0988daa0ad3f45a50940a8402ebae998b205706e394e74
MD5 9ebf9e145b44ff7872ebedbf4aeaaacd
BLAKE2b-256 9d8c860653fc59823554710243210ce7e8fa960997ef27c31a6b42e1220fae81

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