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


Release history Release notifications | RSS feed

Download files

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

Source Distribution

nfstream-3.1.0.tar.gz (941.3 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

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

Uploaded CPython 3.8

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

Uploaded CPython 3.8macOS 10.13+ x86-64

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

Uploaded CPython 3.7m

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

Uploaded CPython 3.7mmacOS 10.13+ x86-64

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

Uploaded CPython 3.6m

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

Uploaded CPython 3.6mmacOS 10.13+ x86-64

File details

Details for the file nfstream-3.1.0.tar.gz.

File metadata

  • Download URL: nfstream-3.1.0.tar.gz
  • Upload date:
  • Size: 941.3 kB
  • Tags: Source
  • 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.0.tar.gz
Algorithm Hash digest
SHA256 85e4d7d16d2dd5b706a591c62a8a8b5da50883dfa23810841b9fe55c3a44ae5e
MD5 59d638b5cc214427d075f7ee9c53e00e
BLAKE2b-256 17105801bb50ffe3b3e1a73b95a0958e88693bb6ec48c3e9a066df55e1fcb337

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-3.1.0-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.0-pp372-pypy3_72-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 f5ae34ca210e8a04f3b155ebe21930e6b54e03574a9f65db9372db91f3b33260
MD5 1c4ac9f094d01cb84799ebf73014669f
BLAKE2b-256 8d953f7ebc50f3878febf7577ffd55f22eaef38c1267eaa065488cfe3978f43c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-3.1.0-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.0-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 3114626300eaa654bbd25b4165ec91e7260c6b23ff6188889bac3507201acc6b
MD5 a80652fd158ec3f752cd06c21b59ebcc
BLAKE2b-256 ffdec96e2328ec43ea248180dc29fcb2c78416c6ff6924134f61481a78062fa3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-3.1.0-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.0-cp38-cp38-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 ddda5d865ac707eb7bbf13370e4cd2f4c91df546b6b617d834be4a577256f0ef
MD5 73e8b54b26e11fd0d00bcd5bd85c4395
BLAKE2b-256 c80ec6a76edd0a8ad4ed17ba8bf9667f91153fb5941d0823f360fe9517ec47b1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-3.1.0-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.0-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 bc703889f5262953bb3dba0e3e7c5ab185d8ef0d3b14a5f1f961b0ecf49d8595
MD5 0f443a171160215cad7c455dac1cde0f
BLAKE2b-256 aa667f4016a55de14f3377d352d1baa4148b39b796aa769495b37fe2c033f071

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-3.1.0-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.0-cp37-cp37m-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 8816a91afc818f3f29df7ba97d75305584e003b881726a11e293bd1976949d7c
MD5 970b57959a4cc5976804e94ddc21cb7c
BLAKE2b-256 18f4c847febee5cfe3cf29a10f05a316d392386588d6732df7ee51fdc79bc78f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-3.1.0-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.0-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 1deea4c6cea253c8773e05a2609fbbb5cd4bde6c3bac8397f7cd7e7f5978bba4
MD5 7e9dee428f2792ce3cd1121e8f952cb1
BLAKE2b-256 29e9febf31cf001b042182882f4f3f69ca7b33e5e45a8d5854be592b0989a14f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-3.1.0-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.0-cp36-cp36m-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 577e5745b7df3133fdf85423a1794edf4df394e9736a6010740cdb0a972f60d1
MD5 ec64b4fceb25c5177a4a55471a95481e
BLAKE2b-256 47f4bd2bbc2c93b185be9224debeb0d8ad07e9841423e6949bb4d5e7fb12dd0f

See more details on using hashes here.

Supported by

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