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: AF_PACKETV3/FANOUT on Linux, 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_report=0)

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 following example, 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 l m

If you want to build NFStream from sources. Please read the installation guide.

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.1.1-pp36-pypy36_pp73-macosx_10_14_x86_64.whl (938.4 kB view details)

Uploaded PyPy macOS 10.14+ x86-64

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

Uploaded CPython 3.8

nfstream-6.1.1-cp38-cp38-manylinux1_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.8

nfstream-6.1.1-cp38-cp38-macosx_10_14_x86_64.whl (938.4 kB view details)

Uploaded CPython 3.8 macOS 10.14+ x86-64

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

Uploaded CPython 3.7m

nfstream-6.1.1-cp37-cp37m-manylinux1_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.7m

nfstream-6.1.1-cp37-cp37m-macosx_10_14_x86_64.whl (938.4 kB view details)

Uploaded CPython 3.7m macOS 10.14+ x86-64

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

Uploaded CPython 3.6m

nfstream-6.1.1-cp36-cp36m-manylinux1_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.6m

nfstream-6.1.1-cp36-cp36m-macosx_10_14_x86_64.whl (938.4 kB view details)

Uploaded CPython 3.6m macOS 10.14+ x86-64

File details

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

File metadata

  • Download URL: nfstream-6.1.1-pp36-pypy36_pp73-manylinux1_x86_64.whl
  • Upload date:
  • Size: 3.1 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.49.0 PyPy/7.3.1

File hashes

Hashes for nfstream-6.1.1-pp36-pypy36_pp73-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 efa59967a057fcc3c57537c77e647971a586013bdd28e3b7b243a93095754efc
MD5 b269a53be63d38d5395273e41804ff3a
BLAKE2b-256 f2d317b61ccacec5925eeb169b7498ab2f9d38c066d5d77143c21410c48f2492

See more details on using hashes here.

File details

Details for the file nfstream-6.1.1-pp36-pypy36_pp73-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: nfstream-6.1.1-pp36-pypy36_pp73-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 938.4 kB
  • Tags: PyPy, macOS 10.14+ 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.49.0 PyPy/7.3.1

File hashes

Hashes for nfstream-6.1.1-pp36-pypy36_pp73-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 7ea8e22c1b5db65ef597ace273c6d84a7e8b6eb9fea3d1cc5f0bb81deec8879d
MD5 7f3a061b64663659876a4c237efb084b
BLAKE2b-256 1f0225305b180a2cea089dc35507e7777beb54c9f09e402657f40e450eeaf9b9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.1.1-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.1.1-cp38-cp38-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bfb3c7397badd19cb8a8d96b0c9357170e58f4f64fd29ce2de34cd00aea1470f
MD5 b8c5cbcfde246827fe3c53173f5258aa
BLAKE2b-256 efb6939786fdb5509a6636e7c8185f8af1a3cd758edeb2fa50702bee933762a8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.1.1-cp38-cp38-manylinux1_x86_64.whl
  • Upload date:
  • Size: 3.1 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.49.0 CPython/3.8.5

File hashes

Hashes for nfstream-6.1.1-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 79e2d64c6d3db6f89e731ec5f3106d5f0831f5a7d0637ac4419ae96c8513083b
MD5 300763e0fb84960b705b58af1db01eb0
BLAKE2b-256 a6dc83e1181d90d738fc0dd775dd5c5a60b983060eaa3abf3a8334364825ca09

See more details on using hashes here.

File details

Details for the file nfstream-6.1.1-cp38-cp38-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: nfstream-6.1.1-cp38-cp38-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 938.4 kB
  • Tags: CPython 3.8, macOS 10.14+ 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.49.0 CPython/3.8.5

File hashes

Hashes for nfstream-6.1.1-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 7d9311ddc653aec7d4fe51a950338b6be2028951c094441a72e370b5412e864c
MD5 3f4e90737163b415139c8a41f125ceb8
BLAKE2b-256 9fd7b6210aadb5d283447bb3fa83e1e4f1ca3ad46e23d6b88e2c16424fe24399

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.1.1-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.1.1-cp37-cp37m-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 41a0a9c177c168705f3af371c384fab8b593aa991d1f2ebaf2cc45c0cda41a86
MD5 d9cd91247bc5e07e0a1276ce8bee014a
BLAKE2b-256 2e30a5e5870691b03ade2c77bcadc6a4f42ee27e2a1679577bbcca92865f3c02

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.1.1-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 3.1 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.49.0 CPython/3.7.9

File hashes

Hashes for nfstream-6.1.1-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 c1cc1d192ed54975f175c7534a1226b875f5168dc2f2848a667b2c4bc43151ca
MD5 d3f5aa0ff26d1e3d47c774fcd89316d5
BLAKE2b-256 6c9677b239225a5ae2ba15dd0c85f135bb835d8d47c6aedfde4172d9ba46fda2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.1.1-cp37-cp37m-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 938.4 kB
  • Tags: CPython 3.7m, macOS 10.14+ 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.49.0 CPython/3.7.9

File hashes

Hashes for nfstream-6.1.1-cp37-cp37m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 0b38bc2a000d3391f9f9a990f2614de17eea424dfd185eca4d9dd8cb62a180f8
MD5 a3c036efd72df1de182615c03b9d8702
BLAKE2b-256 265642e85b3315ee56815951a099a4232007126c77bdd4d8701abf076978b38e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.1.1-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.1.1-cp36-cp36m-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 fcac550bc8de085d6255b33bfae75b2f078a0fb58dd9419498b4eaa09bbd01b8
MD5 35770aea6350827f886b87ec061274c2
BLAKE2b-256 2cfecbec972fcc402c75f4a244dc2790e0fdf6ec8782ee0b8454bd0fb48c7ac8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.1.1-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 3.1 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.49.0 CPython/3.6.12

File hashes

Hashes for nfstream-6.1.1-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 c3d51d3e973d2dac28237322d907f0f11c6270295c7640723abc4d1d9ab535c8
MD5 e10e2e27369753e0235fc6597492559f
BLAKE2b-256 da1f1ec71df71879b80cd9d9570236f9d574643e51f2ed2e5872593793f3bd0b

See more details on using hashes here.

File details

Details for the file nfstream-6.1.1-cp36-cp36m-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: nfstream-6.1.1-cp36-cp36m-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 938.4 kB
  • Tags: CPython 3.6m, macOS 10.14+ 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.49.0 CPython/3.6.12

File hashes

Hashes for nfstream-6.1.1-cp36-cp36m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 f03f65a31a8e369aef21de4e399c5745de1db56af9eaa332ff7a004233d16467
MD5 3a26e63a360d4a3080990f7f3c22e873
BLAKE2b-256 20b10c6e2a34ddeb78477949cf89beb83d0afc024d07d598137bd66445d9fbaf

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