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
from nfstream import NFStreamer
my_dataframe = NFStreamer(source='teams.pcap').to_pandas()[["src_ip",
                                                            "src_port",
                                                            "dst_ip", 
                                                            "dst_port", 
                                                            "protocol",
                                                            "bidirectional_packets",
                                                            "bidirectional_bytes",
                                                            "application_name"]]
my_dataframe.head(5)

Pandas

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

Uploaded PyPy macOS 10.14+ x86-64

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

Uploaded CPython 3.9

nfstream-6.2.1-cp39-cp39-macosx_10_14_x86_64.whl (947.4 kB view details)

Uploaded CPython 3.9 macOS 10.14+ x86-64

nfstream-6.2.1-cp38-cp38-manylinux2014_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.8

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

Uploaded CPython 3.8

nfstream-6.2.1-cp38-cp38-macosx_10_14_x86_64.whl (947.4 kB view details)

Uploaded CPython 3.8 macOS 10.14+ x86-64

nfstream-6.2.1-cp37-cp37m-manylinux2014_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.7m

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

Uploaded CPython 3.7m

nfstream-6.2.1-cp37-cp37m-macosx_10_14_x86_64.whl (947.4 kB view details)

Uploaded CPython 3.7m macOS 10.14+ x86-64

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

Uploaded CPython 3.6m

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

Uploaded CPython 3.6m

nfstream-6.2.1-cp36-cp36m-macosx_10_14_x86_64.whl (947.4 kB view details)

Uploaded CPython 3.6m macOS 10.14+ x86-64

File details

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

File metadata

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

File hashes

Hashes for nfstream-6.2.1-pp36-pypy36_pp73-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 fcb8505b80b7acfdf4fab7d420627fd2542ff6a3d439b05c84ef1bdc7497088e
MD5 71b07942bfb58e0cdfaddca4da8fe649
BLAKE2b-256 406f6f3f899c88d20a28b17efc6d1c601e12b2ea0c9bac183276d9c4bbeb48cd

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for nfstream-6.2.1-pp36-pypy36_pp73-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 d2760f9e94239a97d2a3e4c52d5eeee8d39eb87e8bda0c75f055d94fc4e6e2b2
MD5 1840244bc53e581c59571020a04569e1
BLAKE2b-256 efbc81d2ab3659648d56135c8c1a3244ac9553cfe891b6de8cb4f67a5513914f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.2.1-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.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.9.0

File hashes

Hashes for nfstream-6.2.1-cp39-cp39-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 8d740e8f69dc47334b09943572248aa78a3611db94a9ebd55f78052718a53006
MD5 2f907d83c96631106044d214b45775bb
BLAKE2b-256 c0c2bf67054a12604efa51fcdbe3f7ce9bf2f4b45ff939ae0bac0203955e88cc

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for nfstream-6.2.1-cp39-cp39-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 1c70f3f554778acc481fa1695ca4e2a91ea08a4aabecda6e2897d9ebd2829368
MD5 78f31abe278f7d3814d431b4d3e7957b
BLAKE2b-256 b5e614486978cec16259da5573d99891406281e800841bf4900b0ae6eb14ece8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.2.1-cp38-cp38-manylinux2014_aarch64.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.2 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.0

File hashes

Hashes for nfstream-6.2.1-cp38-cp38-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 afe8744630df7da00cb5af5641d23c29f8a2a4f0f3abb644877fe5b6166727bd
MD5 b6d50e5a4035c824fbcff7167e8546fa
BLAKE2b-256 efeca55155ecfa393f91fe702eed82c0959841fe16d708550bee65faaf38187a

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for nfstream-6.2.1-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 b3011a051e338dd09357fdbc7d367d6505e90374778702a8a4b40e4c528db1ec
MD5 f99a6cab741f2c65757503d557e54552
BLAKE2b-256 947f1cc8853dfb5d3e5ac5e2552f18dde2ebd1aaa1845c5206772bcb170af2e7

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for nfstream-6.2.1-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 2f96301c222e5fc5f4b4a4484ecc83e7a2126f4f45939a1270bbe6812fe9b0e0
MD5 71688e6ba273c6bc74d5bb5eb3a3e567
BLAKE2b-256 bcc83bdba3981bf2303bf244fa40cdb2d649184b0ffa9bacd0e939edec6ea4ed

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.2.1-cp37-cp37m-manylinux2014_aarch64.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.2 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.7.5

File hashes

Hashes for nfstream-6.2.1-cp37-cp37m-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0fe2fed8e95f4b39a23524c1da1b7b691da443b5d3ec52d8e1d10fc4098cf39d
MD5 f6dc90b3136d19c4b6eee37604940094
BLAKE2b-256 7cc5d2ded8d047eeacdefa7a6bec4c9859725d009ed2e2ea5d45b33c3061c608

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for nfstream-6.2.1-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 4f3b0bbf4b0ed7f84d6e8ed15ceafb935503474646e7b6b3ab9b550959d855bd
MD5 c1537b2570b37b3419a9dba353bfd9b5
BLAKE2b-256 e42d8b3df52e64429acb795b23841b514178908649769772c4130b6d8780fa01

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for nfstream-6.2.1-cp37-cp37m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 32f8d54bf8dfb8e72d2b6f1b2956e2763e4d2742eb899284dde85be276fda868
MD5 96c38705ef4775ed6720d1ec2763fc3e
BLAKE2b-256 946e6548caf29e61514bd150c01c6c95d9fb8a93e22f8773784586a3517cd182

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.2.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.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.1-cp36-cp36m-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0ee9887fd76a96ea276f53dbeb0c1a03d635c18b058c64025727894838568e53
MD5 1200ec3f5d1af85e5743edf160cb2c86
BLAKE2b-256 59a921eed95c2064ef13cc95201fbe1ddedfef72a0c91e27a6777cc092f093f3

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for nfstream-6.2.1-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 48aaf0cf587685a89ae10e3b80e887cb78fa36c358b3436596c7ee6a81b04bce
MD5 0fe7df78d3bb706613f56d51591c6db6
BLAKE2b-256 d0481d1cce103d553fb88597b71bba310f7ca947631d7ab5590c355d4968dfd7

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for nfstream-6.2.1-cp36-cp36m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 fa744cb3b53728cf60de0796e6a2695f22de73950cd7e4fc556c6a3d6949ff9d
MD5 3ce1c9b5c1eaf10cfe8c383f167a4e0f
BLAKE2b-256 86a2c5fd74afefa9d6108fb0505c60aa99b855dc9d36ff93028d93da346dfe4c

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