Skip to main content

A flexible and powerful network data analysis framework

Project description

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

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

Uploaded CPython 3.8

nfstream-3.0.1-cp37-cp37m-manylinux1_x86_64.whl (783.6 kB view details)

Uploaded CPython 3.7m

nfstream-3.0.1-cp37-cp37m-macosx_10_14_x86_64.whl (249.4 kB view details)

Uploaded CPython 3.7m macOS 10.14+ x86-64

nfstream-3.0.1-cp37-cp37m-macosx_10_13_x86_64.whl (251.6 kB view details)

Uploaded CPython 3.7m macOS 10.13+ x86-64

nfstream-3.0.1-cp36-cp36m-manylinux1_x86_64.whl (783.6 kB view details)

Uploaded CPython 3.6m

File details

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

File metadata

  • Download URL: nfstream-3.0.1-pp371-pypy3_71-manylinux1_x86_64.whl
  • Upload date:
  • Size: 783.6 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.2 requests-toolbelt/0.9.1 tqdm/4.40.0 PyPy/7.1.1beta

File hashes

Hashes for nfstream-3.0.1-pp371-pypy3_71-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 15136d196ea61b0a4ec52caa47da3891a065cbbe072caca17a09277615f9ff40
MD5 dd39f70bc10416ae3a5298586751c539
BLAKE2b-256 21e27f42faa8533ba2a14c82dc5a46cfd666c2dd8af9f267837713e879992ab4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-3.0.1-cp38-cp38-manylinux1_x86_64.whl
  • Upload date:
  • Size: 783.6 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.2 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.8.0

File hashes

Hashes for nfstream-3.0.1-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 fae8ba70317f551b858fe7798da616230af0f14ea3b7dec99f28e08df28d1e81
MD5 cc9e0b2c5e76618844aaec2406985fbc
BLAKE2b-256 adc472b85bf3364017246c12d8d1dd5f09ddb6ac85616b756b4a1c39307b9e81

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-3.0.1-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 783.6 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.2 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.7.1

File hashes

Hashes for nfstream-3.0.1-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 ec5c7d383f153d6763b8f18c58972bf6cb40dccf35a953d3d01e1c91044fb0d6
MD5 eabe57730c82c960493df803957f5bbf
BLAKE2b-256 e0b5d8fb0f3dd1d2f98edc47d9c1500586f7ec1b69dc206c4ae0a67440a96188

See more details on using hashes here.

File details

Details for the file nfstream-3.0.1-cp37-cp37m-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: nfstream-3.0.1-cp37-cp37m-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 249.4 kB
  • Tags: CPython 3.7m, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.7.4

File hashes

Hashes for nfstream-3.0.1-cp37-cp37m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 0ae79fb3ba5f407a421297f7dbfd89cb8599b9eceef181994574e2158fb3b30a
MD5 209642f278a0dfccbe55ef030fec6c4f
BLAKE2b-256 f1683dc2e9b16fb4eb214bb3516b452392c6f179e7fee76e2d56af5897c482d2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-3.0.1-cp37-cp37m-macosx_10_13_x86_64.whl
  • Upload date:
  • Size: 251.6 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.6.0 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.7.5

File hashes

Hashes for nfstream-3.0.1-cp37-cp37m-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 abfa2b2c0772e72046f3e2892ca568ff0a75997e47ced0c80b9a98610cdbdec1
MD5 fc5891abd171cc9b9e827de8fe2764fc
BLAKE2b-256 23c68ad3ebd1d225d0b8f61b074ed0da1561c1c8f644f8c357aedf471839df78

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-3.0.1-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 783.6 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.2 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.6.7

File hashes

Hashes for nfstream-3.0.1-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 f66dacc5a7cef2e2efb5d79fa9b32e28adf9763f24a068a8288709300f58bdf7
MD5 092a81639191dac3eb06d6e768a490d2
BLAKE2b-256 fa68175da34582f223096df71044bc33401f2bd51c3157c3a36299367638bc13

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