Skip to main content

A Flexible Network Data Analysis Framework

Project description

NFStream Logo


NFStream is a Python framework 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 analytics framework for researchers providing data reproducibility across experiments.

Live Notebook live notebook
Project Website website
Discussion Channel Gitter
Latest Release latest release
Supported Versions python3
Project License License
Build Status Github WorkFlows Travis CI
Code Quality Quality
Code Coverage Coverage

Main Features

  • Performance: NFStream is designed to be fast: parallel processing, native C (using CFFI) for critical computation and PyPy support.
  • Encrypted layer-7 visibility: NFStream deep packet inspection is based on nDPI. It allows NFStream to perform reliable encrypted applications identification and metadata fingerprinting (e.g. TLS, SSH, DHCP, HTTP).
  • Statistical features extraction: NFStream provides state of the art of flow-based statistical feature extraction. It includes both post-mortem statistical features (e.g. min, mean, stddev and max of packet size and inter arrival time) and early flow features (e.g. sequence of first n packets sizes, inter arrival times and directions).
  • Flexibility: NFStream is easily extensible using NFPlugins. It allows to create a new feature within a few lines of Python.
  • Machine Learning oriented: NFStream aims to make Machine Learning Approaches for network traffic management reproducible and deployable. By using NFStream as a common framework, researchers ensure that models are trained using the same feature computation logic and thus, a fair comparison is possible. Moreover, trained models can be deployed and evaluated on live network using NFPlugins.

How to get it?

Binary installers for the latest released version are available on Pypi.

pip install nfstream

How to use it?

Encrypted application identification and metadata extraction

Dealing with a big pcap file and just want to aggregate into labeled network flows? NFStream make this path easier in few lines:

from nfstream import NFStreamer
# We display all streamer parameters with their default values.
# See documentation for detailed information about each parameter.
# https://www.nfstream.org/docs/api#nfstreamer
my_streamer = NFStreamer(source="facebook.pcap", # or network interface
                         decode_tunnels=True,
                         bpf_filter=None,
                         promiscuous_mode=True,
                         snapshot_length=1500,
                         idle_timeout=30,
                         active_timeout=300,
                         accounting_mode=0,
                         udps=None,
                         n_dissections=20,
                         statistical_analysis=False,
                         splt_analysis=0,
                         n_meters=0,
                         performance_summary=False)

for flow in my_streamer:
    print(flow)  # print it.
# See documentation for each feature detailed description.
# https://www.nfstream.org/docs/api#nflow
NFlow(id=0,
      expiration_id=0,
      src_ip='192.168.43.18',
      src_ip_is_private=1,
      src_port=52066,
      dst_ip='66.220.156.68',
      dst_ip_is_private=0,
      dst_port=443,
      protocol=6,
      ip_version=4,
      vlan_id=0,
      bidirectional_first_seen_ms=1472393122365,
      bidirectional_last_seen_ms=1472393123665,
      bidirectional_duration_ms=1300,
      bidirectional_packets=19,
      bidirectional_bytes=5745,
      src2dst_first_seen_ms=1472393122365,
      src2dst_last_seen_ms=1472393123408,
      src2dst_duration_ms=1043,
      src2dst_packets=9,
      src2dst_bytes=1345,
      dst2src_first_seen_ms=1472393122668,
      dst2src_last_seen_ms=1472393123665,
      dst2src_duration_ms=997,
      dst2src_packets=10,
      dst2src_bytes=4400,
      application_name='TLS.Facebook',
      application_category_name='SocialNetwork',
      application_is_guessed=0,
      requested_server_name='facebook.com',
      client_fingerprint='bfcc1a3891601edb4f137ab7ab25b840',
      server_fingerprint='2d1eb5817ece335c24904f516ad5da12',
      http_user_agent='',
      http_content_type='')

Post-mortem statistical flow features extraction

NFStream performs 48 post mortem flow statistical features extraction which include detailed TCP flags analysis, minimum, mean, maximum and standard deviation of both packet size and interarrival time in each direction.

from nfstream import NFStreamer
my_streamer = NFStreamer(source="facebook.pcap",
                         # Disable L7 dissection for readability purpose.
                         n_dissections=0,  
                         statistical_analysis=True)
for flow in my_streamer:
    print(flow)
# See documentation for each feature detailed description.
# https://www.nfstream.org/docs/api#nflow
NFlow(id=0,
      expiration_id=0,
      src_ip='192.168.43.18',
      src_ip_is_private=1,
      src_port=52066,
      dst_ip='66.220.156.68',
      dst_ip_is_private=0,
      dst_port=443,
      protocol=6,
      ip_version=4,
      vlan_id=0,
      bidirectional_first_seen_ms=1472393122365,
      bidirectional_last_seen_ms=1472393123665,
      bidirectional_duration_ms=1300,
      bidirectional_packets=19,
      bidirectional_bytes=5745,
      src2dst_first_seen_ms=1472393122365,
      src2dst_last_seen_ms=1472393123408,
      src2dst_duration_ms=1043,
      src2dst_packets=9,
      src2dst_bytes=1345,
      dst2src_first_seen_ms=1472393122668,
      dst2src_last_seen_ms=1472393123665,
      dst2src_duration_ms=997,
      dst2src_packets=10,
      dst2src_bytes=4400,
      bidirectional_min_ps=66,
      bidirectional_mean_ps=302.36842105263156,
      bidirectional_stddev_ps=425.53315715259754,
      bidirectional_max_ps=1454,
      src2dst_min_ps=66,
      src2dst_mean_ps=149.44444444444446,
      src2dst_stddev_ps=132.20354676701294,
      src2dst_max_ps=449,
      dst2src_min_ps=66,
      dst2src_mean_ps=440.0,
      dst2src_stddev_ps=549.7164925870628,
      dst2src_max_ps=1454,
      bidirectional_min_piat_ms=0,
      bidirectional_mean_piat_ms=72.22222222222223,
      bidirectional_stddev_piat_ms=137.34994188549086,
      bidirectional_max_piat_ms=398,
      src2dst_min_piat_ms=0,
      src2dst_mean_piat_ms=130.375,
      src2dst_stddev_piat_ms=179.72036811192467,
      src2dst_max_piat_ms=415,
      dst2src_min_piat_ms=0,
      dst2src_mean_piat_ms=110.77777777777777,
      dst2src_stddev_piat_ms=169.51458475436397,
      dst2src_max_piat_ms=409,
      bidirectional_syn_packets=2,
      bidirectional_cwr_packets=0,
      bidirectional_ece_packets=0,
      bidirectional_urg_packets=0,
      bidirectional_ack_packets=18,
      bidirectional_psh_packets=9,
      bidirectional_rst_packets=0,
      bidirectional_fin_packets=0,
      src2dst_syn_packets=1,
      src2dst_cwr_packets=0,
      src2dst_ece_packets=0,
      src2dst_urg_packets=0,
      src2dst_ack_packets=8,
      src2dst_psh_packets=4,
      src2dst_rst_packets=0,
      src2dst_fin_packets=0,
      dst2src_syn_packets=1,
      dst2src_cwr_packets=0,
      dst2src_ece_packets=0,
      dst2src_urg_packets=0,
      dst2src_ack_packets=10,
      dst2src_psh_packets=5,
      dst2src_rst_packets=0,
      dst2src_fin_packets=0)

Early statistical flow features extraction

NFStream performs early (up to 255 packets) flow statistical features extraction (also referred as SPLT analysis in the literature). It is summarized as a sequence a these packets directions, sizes and interarrival times.

from nfstream import NFStreamer
my_streamer = NFStreamer(source="facebook.pcap",
                         # We disable both l7 dissection and statistical analysis
                         # for readability purpose.
                         n_dissections=0,
                         statistical_analysis=False,
                         splt_analysis=10)
for flow in my_streamer:
    print(flow)
# See documentation for each feature detailed description.
# https://www.nfstream.org/docs/api#nflow
NFlow(id=0,
      expiration_id=0,
      src_ip='192.168.43.18',
      src_ip_is_private=1,
      src_port=52066,
      dst_ip='66.220.156.68',
      dst_ip_is_private=0,
      dst_port=443,
      protocol=6,
      ip_version=4,
      vlan_id=0,
      bidirectional_first_seen_ms=1472393122365,
      bidirectional_last_seen_ms=1472393123665,
      bidirectional_duration_ms=1300,
      bidirectional_packets=19,
      bidirectional_bytes=5745,
      src2dst_first_seen_ms=1472393122365,
      src2dst_last_seen_ms=1472393123408,
      src2dst_duration_ms=1043,
      src2dst_packets=9,
      src2dst_bytes=1345,
      dst2src_first_seen_ms=1472393122668,
      dst2src_last_seen_ms=1472393123665,
      dst2src_duration_ms=997,
      dst2src_packets=10,
      dst2src_bytes=4400,
      # The sequence of 10 first packet direction, size and inter arrival time.
      splt_direction=[0, 1, 0, 0, 1, 1, 0, 1, 0, 1],
      splt_ps=[74, 74, 66, 262, 66, 1454, 66, 1454, 66, 463],
      splt_piat_ms=[0, 303, 0, 0, 313, 0, 0, 0, 0, 1])

Pandas export interface

NFStream natively supports Pandas as export interface.

# See documentation for more details.
# https://www.nfstream.org/docs/api#pandas-dataframe-conversion
my_dataframe = NFStreamer(source='facebook.pcap').to_pandas(ip_anonymization=False)
my_dataframe.head(5)

CSV export interface

NFStream natively supports CSV file format as export interface.

# See documentation for more details.
# https://www.nfstream.org/docs/api#csv-file-conversion
flows_count = NFStreamer(source='facebook.pcap').to_csv(path=None,
                                                        flows_per_file=0,
                                                        ip_anonymization=False)

Extending NFStream

Didn't find a specific flow feature? add a plugin to NFStream in few lines:

from nfstream import NFPlugin

class MyCustomFeature(NFPlugin):
    def on_init(self, packet, flow):
        # flow creation with the first packet
        if packet.raw_size == self.custom_size:
            flow.udps.packet_with_custom_size = 1
        else:
            flow.udps.packet_with_custom_size = 0

    def on_update(self, packet, flow):
        # flow update with each packet belonging to the flow 
        if packet.raw_size == self.custom_size:
            flow.udps.packet_with_custom_size += 1


extended_streamer = NFStreamer(source='facebook.pcap', 
                               udps=MyCustomFeature(custom_size=555))

for flow in extended_streamer:
    # see your dynamically created metric in generated flows
    print(flow.udps.packet_with_custom_size) 

Machine Learning models training and deployment

In the example following, we demonstrate a simplistic machine learning approach training and deployment. We suppose that we want to run a classification of Social Network category flows based on bidirectional_packets and bidirectional_bytes as features. For the sake of brevity, we decide to predict only at flow expiration stage.

Training the model

from nfstream import NFPlugin, NFStreamer
import numpy
from sklearn.ensemble import RandomForestClassifier

df = NFStreamer(source="training_traffic.pcap").to_pandas()
X = df[["bidirectional_packets", "bidirectional_bytes"]]
y = df["application_category_name"].apply(lambda x: 1 if 'SocialNetwork' in x else 0)
model = RandomForestClassifier()
model.fit(X, y)

ML powered streamer on live traffic

class ModelPrediction(NFPlugin):
    def on_init(self, packet, flow):
        flow.udps.model_prediction = 0
    def on_expire(self, flow):
        # You can do the same in on_update entrypoint and force expiration with custom id. 
        to_predict = numpy.array([flow.bidirectional_packets,
                                  flow.bidirectional_bytes]).reshape((1,-1))
        flow.udps.model_prediction = self.my_model.predict(to_predict)

ml_streamer = NFStreamer(source="eth0", udps=ModelPrediction(my_model=model))
for flow in ml_streamer:
    print(flow.udps.model_prediction)

More NFPlugin examples and details are provided on the official documentation. You can also test NFStream without installation using our live demo notebook.

Building from sources

If you want to build NFStream from sources on your local machine:

linux Linux

sudo apt-get update
sudo apt-get install autoconf automake libtool pkg-config libpcap-dev flex bison
sudo apt-get install libusb-1.0-0-dev libdbus-glib-1-dev libbluetooth-dev libnl-genl-3-dev
git clone https://github.com/nfstream/nfstream.git
cd nfstream
python3 -m pip install -r requirements.txt
python3 setup.py bdist_wheel

osx MacOS

brew install autoconf automake libtool pkg-config
git clone https://github.com/nfstream/nfstream.git
cd nfstream
python3 -m pip install -r requirements.txt
python3 setup.py bdist_wheel

Contributing

Please read Contributing for details on our code of conduct, and the process for submitting pull requests to us.

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.

Credits

Authors

The following people contributed to NFStream:

Supporting organizations

The following organizations are supporting NFStream:

sah tuke ntop

License

This project is licensed under the LGPLv3 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-6.0.3-pp36-pypy36_pp73-macosx_10_15_x86_64.whl (425.9 kB view details)

Uploaded PyPy macOS 10.15+ x86-64

nfstream-6.0.3-cp38-cp38-manylinux2014_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.8

nfstream-6.0.3-cp38-cp38-manylinux1_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.8

nfstream-6.0.3-cp38-cp38-macosx_10_15_x86_64.whl (425.9 kB view details)

Uploaded CPython 3.8 macOS 10.15+ x86-64

nfstream-6.0.3-cp37-cp37m-manylinux2014_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.7m

nfstream-6.0.3-cp37-cp37m-manylinux1_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.7m

nfstream-6.0.3-cp37-cp37m-macosx_10_15_x86_64.whl (425.9 kB view details)

Uploaded CPython 3.7m macOS 10.15+ x86-64

nfstream-6.0.3-cp36-cp36m-manylinux2014_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.6m

nfstream-6.0.3-cp36-cp36m-manylinux1_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.6m

nfstream-6.0.3-cp36-cp36m-macosx_10_15_x86_64.whl (425.9 kB view details)

Uploaded CPython 3.6m macOS 10.15+ x86-64

File details

Details for the file nfstream-6.0.3-pp36-pypy36_pp73-manylinux1_x86_64.whl.

File metadata

  • Download URL: nfstream-6.0.3-pp36-pypy36_pp73-manylinux1_x86_64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: PyPy
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.48.2 PyPy/7.3.1

File hashes

Hashes for nfstream-6.0.3-pp36-pypy36_pp73-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 a909f25c482879d43022a15a4c16212d8a95c0f5e1a8bf1eb2699c46ec16b4ed
MD5 01f3616831eb532df59dc21cc0a8a114
BLAKE2b-256 332079e5b208cc2665bbd1794e59e9f877174e38ff1c2f3a046605875a13e140

See more details on using hashes here.

File details

Details for the file nfstream-6.0.3-pp36-pypy36_pp73-macosx_10_15_x86_64.whl.

File metadata

  • Download URL: nfstream-6.0.3-pp36-pypy36_pp73-macosx_10_15_x86_64.whl
  • Upload date:
  • Size: 425.9 kB
  • Tags: PyPy, macOS 10.15+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.48.2 PyPy/7.3.1

File hashes

Hashes for nfstream-6.0.3-pp36-pypy36_pp73-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 bb53e276f92819015a024ea273c9aa9b7699baba106205b22767dabf569f5f95
MD5 1ed726f8e85f9d0311dbe14f32f7b399
BLAKE2b-256 61f1fd4a679302bd3190349fd6e6351149ce7909feffeac8abe5eefacac1aec1

See more details on using hashes here.

File details

Details for the file nfstream-6.0.3-cp38-cp38-manylinux2014_aarch64.whl.

File metadata

  • Download URL: nfstream-6.0.3-cp38-cp38-manylinux2014_aarch64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.0

File hashes

Hashes for nfstream-6.0.3-cp38-cp38-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7175a9f2180bf0d8299238f66479cf2978be69f571e39c08fda269cdd15f0b09
MD5 49fc9a6dd7df2f93cf02b00f0abafce7
BLAKE2b-256 d136fe17aa87f3371245971ffe1e98b47d02693cfd11fc070739974aa464000d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.0.3-cp38-cp38-manylinux1_x86_64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

File hashes

Hashes for nfstream-6.0.3-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 4d9433300563068ec463bda7fb374ddc9989194201d70747cdec2e459ffe9a63
MD5 b78bdb810b5c9c92301ad7d072103c93
BLAKE2b-256 291dfece3c7f8557a531be7b97eae6bee03cd1452599184ef6997692918347a3

See more details on using hashes here.

File details

Details for the file nfstream-6.0.3-cp38-cp38-macosx_10_15_x86_64.whl.

File metadata

  • Download URL: nfstream-6.0.3-cp38-cp38-macosx_10_15_x86_64.whl
  • Upload date:
  • Size: 425.9 kB
  • Tags: CPython 3.8, macOS 10.15+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

File hashes

Hashes for nfstream-6.0.3-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 35ba168dbc7e1e0062008d6badeb992a946c2519605b99b026db7a1fcf979268
MD5 35427718919827e19faeba6c929e90e1
BLAKE2b-256 8279da3f5ca1b82cb4e0a34bcb5245936c49d109bc0cb94beea6b6051b670b01

See more details on using hashes here.

File details

Details for the file nfstream-6.0.3-cp37-cp37m-manylinux2014_aarch64.whl.

File metadata

  • Download URL: nfstream-6.0.3-cp37-cp37m-manylinux2014_aarch64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.5

File hashes

Hashes for nfstream-6.0.3-cp37-cp37m-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 19b4421ed8e0ecf5e1524e0b33ab77c5ef00250f83cca18aaa9c348598daf4f0
MD5 b6cf410230bd9791468b915e07d51052
BLAKE2b-256 117d6000f971bc917838876030f9335b8683aee2ca6c09a8b23242a67b518e64

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.0.3-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.9

File hashes

Hashes for nfstream-6.0.3-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 e913dcb2e63af7f7eb7d0af6927ce91ad208b9f2bdbab562d464d7dc3bfa5d08
MD5 01715c6ee04305bb02eb11f7d74ec00d
BLAKE2b-256 1c47886db8cca1faa855410a08a628e9d854c896e6e922a01769d8fe9de84bff

See more details on using hashes here.

File details

Details for the file nfstream-6.0.3-cp37-cp37m-macosx_10_15_x86_64.whl.

File metadata

  • Download URL: nfstream-6.0.3-cp37-cp37m-macosx_10_15_x86_64.whl
  • Upload date:
  • Size: 425.9 kB
  • Tags: CPython 3.7m, macOS 10.15+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.9

File hashes

Hashes for nfstream-6.0.3-cp37-cp37m-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 009c9c577a8eb7b3a72cff291fec73e257522117b82996bca81f8459055e6565
MD5 5c7220051427171f0690d4c7f7a1bcf6
BLAKE2b-256 76805834d9e5d835f3574c71ca98954698002b41b69f9fc09bf03fb42a4afa6b

See more details on using hashes here.

File details

Details for the file nfstream-6.0.3-cp36-cp36m-manylinux2014_aarch64.whl.

File metadata

  • Download URL: nfstream-6.0.3-cp36-cp36m-manylinux2014_aarch64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.6.9

File hashes

Hashes for nfstream-6.0.3-cp36-cp36m-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2837619e317b42e5c033e290f6ded7324114165167ece7b5ef6c465827efd70a
MD5 1aaad1c3a993bbbdc13b849d6f36ece5
BLAKE2b-256 33f4503260b16b225ab70fa6f340acfb11765f9a835a57a0d8282b6b3a82bfdb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.0.3-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.12

File hashes

Hashes for nfstream-6.0.3-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 e3ca048aa926af604684ee6d5a8b4ecb8cfe54e5beed3a019bd9349ef981c1bf
MD5 c72f7b8e28528e19b0a2032788524e43
BLAKE2b-256 96e4abfe55e9e2c3418f4bb00375155521cdec863bdd4d5296c2665bbb7df420

See more details on using hashes here.

File details

Details for the file nfstream-6.0.3-cp36-cp36m-macosx_10_15_x86_64.whl.

File metadata

  • Download URL: nfstream-6.0.3-cp36-cp36m-macosx_10_15_x86_64.whl
  • Upload date:
  • Size: 425.9 kB
  • Tags: CPython 3.6m, macOS 10.15+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.12

File hashes

Hashes for nfstream-6.0.3-cp36-cp36m-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 4d15cbfd464bf06d837a08b518d8b08c18b9719455a0caa870a825cedb5425ed
MD5 dab6777e33b9957869979016162ddaca
BLAKE2b-256 1c9a509bf792068131e391b721632a91e25a920af606202d1040ccc6301929ab

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