Skip to main content

A flexible and powerful network data analysis framework

Project description

release python pypy platform license

NFStream is a flexible and lightweight network data analysis framework.

Package

package

Build

build

Documentation

doc

Coverage

coverage

Quality

quality

Downloads

download

Discussions

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.

When 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 process(self, pkt, flow):
         if pkt.length >= 666:
             flow.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

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-2.0.1-cp38-cp38-manylinux1_x86_64.whl (784.1 kB view details)

Uploaded CPython 3.8

nfstream-2.0.1-cp37-cp37m-manylinux1_x86_64.whl (784.1 kB view details)

Uploaded CPython 3.7m

nfstream-2.0.1-cp36-cp36m-manylinux1_x86_64.whl (784.1 kB view details)

Uploaded CPython 3.6m

nfstream-2.0.1-cp36-cp36m-macosx_10_13_x86_64.whl (238.0 kB view details)

Uploaded CPython 3.6m macOS 10.13+ x86-64

File details

Details for the file nfstream-2.0.1-pp371-pypy3_71-manylinux1_x86_64.whl.

File metadata

  • Download URL: nfstream-2.0.1-pp371-pypy3_71-manylinux1_x86_64.whl
  • Upload date:
  • Size: 784.1 kB
  • Tags: PyPy
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.1 requests-toolbelt/0.9.1 tqdm/4.39.0 PyPy/7.1.1beta

File hashes

Hashes for nfstream-2.0.1-pp371-pypy3_71-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 159ffc963ee14cddd8d82a304c6fa140e745a803e39ee773cb9051ed4300309c
MD5 2b6ba8449593707aadc9bf544cde8d00
BLAKE2b-256 7e84d2e10dd61781c7f6a01bb0a330422afbd87279737398d949622e00e20e60

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-2.0.1-cp38-cp38-manylinux1_x86_64.whl
  • Upload date:
  • Size: 784.1 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/42.0.1 requests-toolbelt/0.9.1 tqdm/4.39.0 CPython/3.8.0

File hashes

Hashes for nfstream-2.0.1-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 04ab6a5bd2a71b405aa91e1af0c2a9aef71a3d18b2fd8fb7dfc64b16184d75c7
MD5 47f0ca034a9a60298cb5d66a0b7b718c
BLAKE2b-256 f2eec63881245321e9b464ba31c4de186226033debfe1814d1fe2fb7659424aa

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-2.0.1-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 784.1 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/42.0.1 requests-toolbelt/0.9.1 tqdm/4.39.0 CPython/3.7.1

File hashes

Hashes for nfstream-2.0.1-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 e7070f54c8574d7585c34f4e3a27d67d6ea69440abdc7d9c7f70dc30e9d03cc3
MD5 7483d1d0446116a0e1b7976ce42bf5d2
BLAKE2b-256 08f1146d4ef3c54388567777cf7cb215e3cadf1b225c969807753f0eff51e94c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-2.0.1-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 784.1 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/42.0.1 requests-toolbelt/0.9.1 tqdm/4.39.0 CPython/3.6.7

File hashes

Hashes for nfstream-2.0.1-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 dcd7f7557e3cfa6547895b84500155825e09397f246ddff8559975663a75bfb0
MD5 ff53c751dcc157fdd3b43d679c578c08
BLAKE2b-256 e8ecc8816daa20f59151bcff772361b901d67ca1c5cd1dc0657ca3d8c080115c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-2.0.1-cp36-cp36m-macosx_10_13_x86_64.whl
  • Upload date:
  • Size: 238.0 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/39.2.0 requests-toolbelt/0.9.1 tqdm/4.39.0 CPython/3.6.5

File hashes

Hashes for nfstream-2.0.1-cp36-cp36m-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 6d952ae49651c8d63a3d03d99c6cfbfe5d3a7de3d3f252c54f49618edea3648a
MD5 6f2ecf34f84055216eed1abda5f8ac47
BLAKE2b-256 5be2aec67247bffd7494329b077dc99a3a46dad41f241ac63f66dd48de348115

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