Skip to main content

A flexible and powerful network data analysis library

Project description

release build coverage quality doc python license

nfstream is a flexible and lightweight network data analysis library.

nfstream main features

  • Performance: nfstream was designed to be fast, CPU savvy and small memory fingerprint.

  • Layer-7 visibility: nfstream dissection is based on nDPI (~300 applications including Tor, Messenger, WhatsApp, etc.).

  • Flexibility: add a flow metric in 2 lines of code using nfstream plugins method.

  • Machine Learning oriented: add your trained model as an NFStreamClassifier.

examples of use

  • Dealing with a big pcap file and just want to see flow informations stored in as a csv file or pandas Dataframe? nfstream make this path easier in few lines:

from nfstream.streamer import Streamer
my_capture_streamer = Streamer(source="instagram.pcap",
                               capacity=128000,
                               active_timeout=120,
                               inactive_timeout=60,
                               user_metrics=None,
                               user_classifiers=None,
                               enable_ndpi=True)

my_live_streamer = Streamer(source="eth1")  # or capture from a network interface
for flow in my_capture_streamer:  # or for flow in my_live_streamer
    print(flow)  # print, append to pandas Dataframe or whatever you want :)!
{"ip_src": "192.168.122.121",
 "src_port": 43277,
 "ip_dst": "186.102.189.33",
 "dst_port": 443,
 "ip_protocol": 6,
 "src_to_dst_pkts": 6,
 "dst_to_src_pkts": 5,
 "src_to_dst_bytes": 1456,
 "dst_to_src_bytes": 477,
 "application_name": "TLS.Instagram",
 "category_name": "SocialNetwork",
 "start_time": 1555969081636,
 "end_time": 1555969082020,
 "export_reason": 2}
  • Didn’t find a specific flow feature? add it to Streamer as a plugin in few lines:

from nfstream.streamer import Streamer

def my_awesome_plugin(packet_information, flow):
 old_value = flow.metrics['count_pkts_gt_666']
 if packet_information.size > 999:
     old_value = flow.metrics['count_pkts_gt_666']
     new_value =  old_value + 1
     return new_value
 else:
     return old_value

streamer_awesome = Streamer(source='devil.pcap',
                            user_metrics={'count_pkts_gt_666': my_awesome_plugin})
for export in streamer_awesome:
   # now you will see your created metric in generated flows
   print(export.metrics['count_pkts_gt_666'])
  • More example and details are provided on the official Documentation.

Getting Started

Prerequisites

apt-get install python-dev libpcap-dev autogen

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 autogen
git clone https://github.com/aouinizied/nfstream.git
# move to nfstream directory and run
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.

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 Distribution

nfstream-0.5.0.tar.gz (673.0 kB view details)

Uploaded Source

Built Distribution

nfstream-0.5.0-py2.py3-none-any.whl (683.8 kB view details)

Uploaded Python 2 Python 3

File details

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

File metadata

  • Download URL: nfstream-0.5.0.tar.gz
  • Upload date:
  • Size: 673.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.4.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.6.7

File hashes

Hashes for nfstream-0.5.0.tar.gz
Algorithm Hash digest
SHA256 a90d63d94002b8dad08fd1c11aa122f019279057d08dc58a82f75ec879afc742
MD5 d9c897b8c2cea1c3611c4a3d18923c70
BLAKE2b-256 159f9d17738209b3feef356795eb1fbb03181157321b2974e661c39206c6dcfb

See more details on using hashes here.

File details

Details for the file nfstream-0.5.0-py2.py3-none-any.whl.

File metadata

  • Download URL: nfstream-0.5.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 683.8 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.4.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.6.7

File hashes

Hashes for nfstream-0.5.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 b4d7fa0ab9752a2a71ffc3300b6eed7f6f6147c8bf778ab60ff7ad550a46a0e6
MD5 87fc95217fc33e13215ad016e9776f13
BLAKE2b-256 7ae96449b38ff75cb4984f0f161961f134460460832d8ea3f24a1440ac849735

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