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=1536,
                         idle_timeout=120,
                         active_timeout=1800,
                         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_mac='30:52:cb:6c:9c:1b',
      src_oui='30:52:cb',
      src_port=52066,
      dst_ip='66.220.156.68',
      dst_mac='98:0c:82:d3:3c:7c',
      dst_oui='98:0c:82',
      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',
      user_agent='',
      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_mac='30:52:cb:6c:9c:1b',
      src_oui='30:52:cb',
      src_port=52066,
      dst_ip='66.220.156.68',
      dst_mac='98:0c:82:d3:3c:7c',
      dst_oui='98:0c:82',
      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_mac='30:52:cb:6c:9c:1b',
      src_oui='30:52:cb',
      src_port=52066,
      dst_ip='66.220.156.68',
      dst_mac='98:0c:82:d3:3c:7c',
      dst_oui='98:0c:82',
      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(columns_to_anonymize=[])
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,
                                                        columns_to_anonymize=[])

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

Uploaded PyPy macOS 10.14+ x86-64

nfstream-6.2.0-cp39-cp39-manylinux1_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.9

nfstream-6.2.0-cp39-cp39-macosx_10_14_x86_64.whl (938.7 kB view details)

Uploaded CPython 3.9 macOS 10.14+ x86-64

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

Uploaded CPython 3.8

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

Uploaded CPython 3.8

nfstream-6.2.0-cp38-cp38-macosx_10_14_x86_64.whl (938.7 kB view details)

Uploaded CPython 3.8 macOS 10.14+ x86-64

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

Uploaded CPython 3.7m

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

Uploaded CPython 3.7m

nfstream-6.2.0-cp37-cp37m-macosx_10_14_x86_64.whl (938.7 kB view details)

Uploaded CPython 3.7m macOS 10.14+ x86-64

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

Uploaded CPython 3.6m

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

Uploaded CPython 3.6m

nfstream-6.2.0-cp36-cp36m-macosx_10_14_x86_64.whl (938.7 kB view details)

Uploaded CPython 3.6m macOS 10.14+ x86-64

File details

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

File metadata

  • Download URL: nfstream-6.2.0-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.6.0 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.50.2 PyPy/7.3.2

File hashes

Hashes for nfstream-6.2.0-pp36-pypy36_pp73-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 a6e2be1ff007322114018cbdb65e66475458701e0f6dabbbf71e77cad3172734
MD5 cdf1e3076141cc19f63841bc47ba40c4
BLAKE2b-256 947ed1b53931bab055e648035a081b907cfbe5aad65f396a32b82666b21fbc8a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.2.0-pp36-pypy36_pp73-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 938.7 kB
  • Tags: PyPy, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.0 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.50.2 PyPy/7.3.2

File hashes

Hashes for nfstream-6.2.0-pp36-pypy36_pp73-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 2c9aee15eb3923ed717594ccbca59126e189b3b173df8fb2e9181ee875c9c673
MD5 bd26e5036667df43c9aaa92207e2c605
BLAKE2b-256 f04a88491b211a80444fd4168bc9dbc9d0b8ee03b5f5b9761ac1bba033fd3b05

See more details on using hashes here.

File details

Details for the file nfstream-6.2.0-cp39-cp39-manylinux1_x86_64.whl.

File metadata

  • Download URL: nfstream-6.2.0-cp39-cp39-manylinux1_x86_64.whl
  • Upload date:
  • Size: 3.1 MB
  • Tags: CPython 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.0 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.9.0

File hashes

Hashes for nfstream-6.2.0-cp39-cp39-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 1873c16023b1eed648d467f04db7ae70c4efcf357e3f5645bf8d8aa5beb8a496
MD5 f9183c3700669331f40b5377103594c7
BLAKE2b-256 077f9c5e0b0488a6ab5f18a2343d33e0ffaf893961745c59b36699f2700693bb

See more details on using hashes here.

File details

Details for the file nfstream-6.2.0-cp39-cp39-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: nfstream-6.2.0-cp39-cp39-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 938.7 kB
  • Tags: CPython 3.9, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.0 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.9.0

File hashes

Hashes for nfstream-6.2.0-cp39-cp39-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 a1ae6e426a24099ac4890ec8beeb275641dd5ebcb30f8d285c304906208ab1b2
MD5 969cf8b787645a77282ddf0ec18277dc
BLAKE2b-256 9d94604bcd7543fb6cb47102b46b0eb3a008d06d0e3f6f2c97aaa6ab68106042

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.2.0-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.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.0

File hashes

Hashes for nfstream-6.2.0-cp38-cp38-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e1277ca2511597e904c8b1cc50f7e86e48a5f6a9ddc1e17e9a6a0faf7b3b2f1d
MD5 407e24c4b0cf40cfdbac05d039780750
BLAKE2b-256 61a1dd0a843220dcfb110b12f628ce8dc1d04d9a8e0923808681f211bb37a414

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.2.0-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.6.0 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.6

File hashes

Hashes for nfstream-6.2.0-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 5af1a2f442994b0209db1f9b42456465471c7a1b5c4c70ccc753d6945fbfe342
MD5 e714fab3a4fa3cf6cba0ae3d520b8509
BLAKE2b-256 fb3d1fd677057c2228441c7c5e9b7d53efbb0c2584b55aed29c28a342ea321df

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.2.0-cp38-cp38-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 938.7 kB
  • Tags: CPython 3.8, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.0 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.6

File hashes

Hashes for nfstream-6.2.0-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 e881c251702658e11c1552bf8960bcfcdbdbcb329ccda47b779288fce8e90090
MD5 dc5c43a15cb060aedba57d98c632b9d1
BLAKE2b-256 a4eb9659569349682a9830be9600dbc6a66021bfd418a1fc45ce27fc554cb50b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.2.0-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.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.7.5

File hashes

Hashes for nfstream-6.2.0-cp37-cp37m-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bbb8e7c067cffc1c18a15f1901d1935374b1e919ebfc264b19f5fed30b7db799
MD5 9d0592d5ce6c5d3df801386d8f7a7a04
BLAKE2b-256 988673ed13d4c2cd49ddba802cba750a527ae6e0ba760b5610b6965146b21901

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.2.0-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.6.0 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.7.9

File hashes

Hashes for nfstream-6.2.0-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 f0b2fa2abbb25311c261c81b555b292e11553fdf615a325b4813fac271dba49e
MD5 cb56efbe8273fc1eeb3b841dda1feca5
BLAKE2b-256 b8ab2110b50f05694b0a8bb5e0a432dc8f17e8d0cf5e4ef68eb9541aef27c46d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.2.0-cp37-cp37m-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 938.7 kB
  • Tags: CPython 3.7m, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.0 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.7.9

File hashes

Hashes for nfstream-6.2.0-cp37-cp37m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 8418bf7390ef5412dca986d99a6a16421eff3e419b6ff826909cb75cd49402a1
MD5 04499d27ae047957fe44158dc703c7b7
BLAKE2b-256 47a37c6d784b79d91486982328474fb8880adccec555658459623bb9b6e8e3a0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.2.0-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.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.6.9

File hashes

Hashes for nfstream-6.2.0-cp36-cp36m-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f708df8dfa9e0469ab1d02ef26f2a12a5fcce1e08630f6e2ad3651accf9a5e1f
MD5 3a016cded0d831222f7fa8547c8b6376
BLAKE2b-256 3a1c8829c50e25d3894876164afa3816d68b97f4f3e06feeb19e2cf0959e1835

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.2.0-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.6.0 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.6.12

File hashes

Hashes for nfstream-6.2.0-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 204de4cd7f12c35930c074ebfbb2cb39ab4c68bf167dc15d102b633b41f7bd33
MD5 c2e84f4607867bbba12823f999d02361
BLAKE2b-256 a1d2837e0dc7c95c48d1fb61a3fd5a923011f077039fd952019f758ca7a15944

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.2.0-cp36-cp36m-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 938.7 kB
  • Tags: CPython 3.6m, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.0 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.6.12

File hashes

Hashes for nfstream-6.2.0-cp36-cp36m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 2dc16991ee1094b2316513c4e082a5dd5dbe6afbd872a4144acca5e106886d7f
MD5 23d95e944cd50737882ea0e72f626e75
BLAKE2b-256 8308a9d04a74b538f90b51c035077c0096b62506198be87190cc4aef5bd5045b

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