Skip to main content

A flexible 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(
        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.2-cp38-cp38-manylinux1_x86_64.whl (955.4 kB view details)

Uploaded CPython 3.8

nfstream-3.1.2-cp38-cp38-macosx_10_13_x86_64.whl (320.4 kB view details)

Uploaded CPython 3.8 macOS 10.13+ x86-64

nfstream-3.1.2-cp37-cp37m-manylinux1_x86_64.whl (955.4 kB view details)

Uploaded CPython 3.7m

nfstream-3.1.2-cp37-cp37m-macosx_10_13_x86_64.whl (320.4 kB view details)

Uploaded CPython 3.7m macOS 10.13+ x86-64

nfstream-3.1.2-cp36-cp36m-manylinux1_x86_64.whl (955.4 kB view details)

Uploaded CPython 3.6m

nfstream-3.1.2-cp36-cp36m-macosx_10_13_x86_64.whl (320.4 kB view details)

Uploaded CPython 3.6m macOS 10.13+ x86-64

File details

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

File metadata

  • Download URL: nfstream-3.1.2-pp372-pypy3_72-manylinux1_x86_64.whl
  • Upload date:
  • Size: 955.4 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.1 PyPy/7.2.0

File hashes

Hashes for nfstream-3.1.2-pp372-pypy3_72-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 2097366c3bd59f21b0c34360ac531f65f8bf2ae67a66f7655243fec47c8e5365
MD5 4053677b58bcfb41c36e48c6cff665f7
BLAKE2b-256 9445c8b12425329bab8095425ad8af4bca58b987e2a17fc94927331ed8510e45

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-3.1.2-cp38-cp38-manylinux1_x86_64.whl
  • Upload date:
  • Size: 955.4 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.1 CPython/3.8.0

File hashes

Hashes for nfstream-3.1.2-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 57a33b644f62576610dde76a1f483543ddaf237de4105b58b0a2bc8a0c230cb9
MD5 151646027e394fcccb1f4739a0e87952
BLAKE2b-256 60f364b8bcce8f052941de0b44abc2d293966e9263aadc85793605aeb0e4b755

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-3.1.2-cp38-cp38-macosx_10_13_x86_64.whl
  • Upload date:
  • Size: 320.4 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.1 CPython/3.8.0

File hashes

Hashes for nfstream-3.1.2-cp38-cp38-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 20801b9a126f2fe03d02c08ebd7d9f3c1b7946000ffaf8e764d01bae6379385c
MD5 63eefeaa5477021db136e2218ca0d312
BLAKE2b-256 5f482393b589b81b268ff4e30b67c96cb663dd5e829b16f33c6dca356637452d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-3.1.2-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 955.4 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.1 CPython/3.7.5

File hashes

Hashes for nfstream-3.1.2-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 fe0b3528c685795107ece5de4171a797875480f473484faa9cf224550ef16f84
MD5 2ef58aba8b01386f386224f945687e25
BLAKE2b-256 2729ee84ff2fffca448c71e2c2889e76bd310afb3764d4ef5204b7cc5726f191

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-3.1.2-cp37-cp37m-macosx_10_13_x86_64.whl
  • Upload date:
  • Size: 320.4 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.1 CPython/3.7.5

File hashes

Hashes for nfstream-3.1.2-cp37-cp37m-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 b0c3e02ab4ec9aa5b96c5530ad382249a47487bf3a0a1b6fff58a02fded670c7
MD5 84f1d46e5e9abd5d153470d6ba80fd00
BLAKE2b-256 3d11c9a22166810458182f2ed0b54c0458d2780fdf4761deb6cce68e6b420e31

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-3.1.2-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 955.4 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.1 CPython/3.6.9

File hashes

Hashes for nfstream-3.1.2-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 60b169a064314fc48bfa2c936ed42ebeab099b4896be7863650e9b5f5cc444f8
MD5 dc509f2b3273b5c3287ebb5ed1f7f176
BLAKE2b-256 4a94379e00b630864fac278253f79f8d7e24cb534af0070fcc11903ecbd9e98c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-3.1.2-cp36-cp36m-macosx_10_13_x86_64.whl
  • Upload date:
  • Size: 320.4 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.1 CPython/3.6.9

File hashes

Hashes for nfstream-3.1.2-cp36-cp36m-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 b0214ff08361b6150e42337a539db8493b09e9de13f2ef9d6736fe86de0c88dd
MD5 363069341f157e1c53461dc12718eccd
BLAKE2b-256 9cca7ae7e66e26e2827baa4c045e8a849b089ddc1735209e3d49c61fe541ec98

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