Skip to main content

nfstream_logo

nfstream: a flexible and powerful network data analysis framework

Latest Release

release

Supported Versions

python

pypy

Supported Platforms

linux

macos

Build Status

build

Documentation Status

doc

Code Coverage

coverage

Code Quality

quality

Discussions Channel

gitter

Main Features

  • Performance: nfstream is designed to be fast (pypy3 support) with a small CPU and memory footprint.

  • Layer-7 visibility: nfstream deep packet inspection engine is based on nDPI library. It allows nfstream to perform reliable encrypted applications identification and metadata extraction (e.g. TLS, SSH, DNS, HTTP).

  • 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 capture from a network interface (source="eth0")
for flow in my_awesome_streamer:
    print(flow)  # print, append to pandas Dataframe or whatever you want :)!
NFFlow(
    flow_id=0,
    first_seen=1472393122365,
    last_seen=1472393123665,
    nfhash=1456034341,
    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'
)
  • 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) # now you will see your dynamically created metric in generated flows
  • More example and details are provided on the official Documentation.

Getting Started

Prerequisites

apt-get install libpcap-dev

Installation

using pip

Binary installers for the latest released version are available:

pip3 install nfstream
from source

If you want to build nfstream on your local machine:

apt-get install autogen
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 (aouinizied) 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

Metadata

Release files for nfstream 3.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for nfstream 3.0.0
File Actions
nfstream-3.0.0-pp371-pypy3_71-manylinux1_x86_64.whl PyPy 3.71 PyPy 3 Linux glibc 2.5+ x86-64 Details for nfstream-3.0.0-pp371-pypy3_71-manylinux1_x86_64.whl
nfstream-3.0.0-cp38-cp38-manylinux1_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.5+ x86-64 Details for nfstream-3.0.0-cp38-cp38-manylinux1_x86_64.whl
nfstream-3.0.0-cp37-cp37m-manylinux1_x86_64.whl CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.5+ x86-64 Details for nfstream-3.0.0-cp37-cp37m-manylinux1_x86_64.whl
nfstream-3.0.0-cp37-cp37m-macosx_10_13_x86_64.whl CPython 3.7 CPython 3.7 pymalloc macOS 10.13+ x86-64 Details for nfstream-3.0.0-cp37-cp37m-macosx_10_13_x86_64.whl
nfstream-3.0.0-cp36-cp36m-manylinux1_x86_64.whl CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.5+ x86-64 Details for nfstream-3.0.0-cp36-cp36m-manylinux1_x86_64.whl

Total release size: 3.4 MB

Release files / nfstream-3.0.0-pp371-pypy3_71-manylinux1_x86_64.whl

Download URL nfstream-3.0.0-pp371-pypy3_71-manylinux1_x86_64.whl
Size 783.6 kB
Tags Linux glibc 2.5+ x86-64 PyPy 3 PyPy 3.71
SHA-256 checksum
How to use checksums
b22d7e22b38d36bd4172979c116bbd0f825654e7479e439ecb7f85f7e25c6e71
BLAKE2b-256 checksum
How to use checksums
ef1bbcce25dbb93df486fd5299f17b6c2be5bc8b026fcc7daf305537ed6b9ad2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.40.0 PyPy/7.1.1beta

Release files / nfstream-3.0.0-cp38-cp38-manylinux1_x86_64.whl

Download URL nfstream-3.0.0-cp38-cp38-manylinux1_x86_64.whl
Size 783.6 kB
Tags CPython 3.8 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
7d5ab74c2482de05bee9c64c774ff5eca5bf882e9edc566d191349f7a73ae3d2
BLAKE2b-256 checksum
How to use checksums
77870084442313bef4d2a177b9d28927bd088f9139fbab4102cf4dbb1ccb645f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.8.0

Release files / nfstream-3.0.0-cp37-cp37m-manylinux1_x86_64.whl

Download URL nfstream-3.0.0-cp37-cp37m-manylinux1_x86_64.whl
Size 783.6 kB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
b3758c6fc0fd3d2d488f5990da4a12c0f41a5eec3258a432d16e1104af57cf6b
BLAKE2b-256 checksum
How to use checksums
a5fb82885f88d4d470eca777825e1b5ef21edbb9d6967a4b081932264de0e8fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.7.1

Release files / nfstream-3.0.0-cp37-cp37m-macosx_10_13_x86_64.whl

Download URL nfstream-3.0.0-cp37-cp37m-macosx_10_13_x86_64.whl
Size 251.7 kB
Tags CPython 3.7 CPython 3.7 pymalloc macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
0c9e1dbfe2a7139cf42b2e9cc8de4c930476791ba2ceb7bc8a9a0651f417d872
BLAKE2b-256 checksum
How to use checksums
e6ecb3c920b6c787b6556c464126bd454386d151bbf583a99ef69fb6b4a724a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.7.5

Release files / nfstream-3.0.0-cp36-cp36m-manylinux1_x86_64.whl

Download URL nfstream-3.0.0-cp36-cp36m-manylinux1_x86_64.whl
Size 783.6 kB
Tags CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
dd25b850f5fe880e365941e0bf0c6c23947d4c0c3d6b62a45ec6001d54e16f0c
BLAKE2b-256 checksum
How to use checksums
ce05f22b26d24ff70bffd0cf20a08daeb95a2531c3856b8fac3f242b241c9053
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.6.7

Security for nfstream 3.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

3.0.0 This release

5 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page