Skip to main content

A Flexible Network Data Analysis Framework

Project description

NFStream Logo


NFStream is a multiplatform 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 pypy3
Project License License
Continuous Integration Linux WorkFlows MacOS WorkFlows Windows WorkFlows
Code Quality Quality Quality
Code Coverage Coverage

Table of Contents

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).
  • System visibility: NFStream probes the monitored system's kernel to obtain information on open Internet sockets and collects guaranteed ground-truth (process name, PID, etc.) at the application level.
  • 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

Windows Notes: NFStream does not include capture drivers on Windows. It is required to install Npcap drivers before installing NFStream. If Wireshark is already installed on Windows, then Npcap drivers are already installed.

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,
                         system_visibility_mode=0,
                         system_visibility_poll_ms=100,
                         system_visibility_extension_port=28314)
                         
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,
      tunnel_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='')

System visibility

NFStream probes the monitored system's kernel to obtain information on open Internet sockets and collects guaranteed ground-truth (process name, PID, etc.) at the application level.

from nfstream import NFStreamer
my_streamer = NFStreamer(source="Intel(R) Wi-Fi 6 AX200 160MHz", # Live capture mode. 
                         # Disable L7 dissection for readability purpose only.
                         n_dissections=0,
                         system_visibility_poll_ms=100,
                         system_visibility_mode=1)
                         
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=59339,
      dst_ip='184.73.244.37',
      dst_mac='98:0c:82:d3:3c:7c',
      dst_oui='98:0c:82',
      dst_port=443,
      protocol=6,
      ip_version=4,
      vlan_id=0,
      tunnel_id=0,
      bidirectional_first_seen_ms=1638966705265,
      bidirectional_last_seen_ms=1638966706999,
      bidirectional_duration_ms=1734,
      bidirectional_packets=98,
      bidirectional_bytes=424464,
      src2dst_first_seen_ms=1638966705265,
      src2dst_last_seen_ms=1638966706999,
      src2dst_duration_ms=1734,
      src2dst_packets=22,
      src2dst_bytes=2478,
      dst2src_first_seen_ms=1638966705345,
      dst2src_last_seen_ms=1638966706999,
      dst2src_duration_ms=1654,
      dst2src_packets=76,
      dst2src_bytes=421986,
      # The process that generated this reported flow. 
      system_process_pid=14596,
      system_process_name='FortniteClient-Win64-Shipping.exe')

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,
      tunnel_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 l7 dissection for readability purpose.
                         n_dissections=0,
                         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,
      tunnel_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 w

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

Citation

NFStream paper is published in Computer Networks (COMNET). If you use NFStream in a scientific publication, we would appreciate citations to the following paper:

@article{aouini2022nfstream,
  title={NFStream: A flexible network data analysis framework},
  author={Aouini, Zied and Pekar, Adrian},
  journal={Computer Networks},
  pages={108719},
  year={2022},
  publisher={Elsevier}
}

Authors

The following people contributed to NFStream:

Supporting organizations

The following organizations are supporting NFStream:

sah tuke ntop nmap

Publications that use NFStream

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.4.2-pp37-pypy37_pp73-macosx_10_14_x86_64.whl (1.2 MB view details)

Uploaded PyPy macOS 10.14+ x86-64

nfstream-6.4.2-pp36-pypy36_pp73-macosx_10_14_x86_64.whl (1.2 MB view details)

Uploaded PyPy macOS 10.14+ x86-64

nfstream-6.4.2-cp310-cp310-win_amd64.whl (3.9 MB view details)

Uploaded CPython 3.10 Windows x86-64

nfstream-6.4.2-cp310-cp310-manylinux1_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.10

nfstream-6.4.2-cp39-cp39-win_amd64.whl (3.9 MB view details)

Uploaded CPython 3.9 Windows x86-64

nfstream-6.4.2-cp39-cp39-manylinux1_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.9

nfstream-6.4.2-cp39-cp39-macosx_10_15_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.9 macOS 10.15+ x86-64

nfstream-6.4.2-cp38-cp38-win_amd64.whl (3.9 MB view details)

Uploaded CPython 3.8 Windows x86-64

nfstream-6.4.2-cp38-cp38-manylinux1_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.8

nfstream-6.4.2-cp38-cp38-macosx_10_14_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.8 macOS 10.14+ x86-64

nfstream-6.4.2-cp37-cp37m-win_amd64.whl (3.9 MB view details)

Uploaded CPython 3.7m Windows x86-64

nfstream-6.4.2-cp37-cp37m-manylinux1_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.7m

nfstream-6.4.2-cp37-cp37m-macosx_10_14_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.7m macOS 10.14+ x86-64

nfstream-6.4.2-cp36-cp36m-win_amd64.whl (3.9 MB view details)

Uploaded CPython 3.6m Windows x86-64

nfstream-6.4.2-cp36-cp36m-manylinux1_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.6m

nfstream-6.4.2-cp36-cp36m-macosx_10_14_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.6m macOS 10.14+ x86-64

File details

Details for the file nfstream-6.4.2-pp37-pypy37_pp73-manylinux1_x86_64.whl.

File metadata

  • Download URL: nfstream-6.4.2-pp37-pypy37_pp73-manylinux1_x86_64.whl
  • Upload date:
  • Size: 3.9 MB
  • Tags: PyPy
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.0 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 PyPy/7.3.7

File hashes

Hashes for nfstream-6.4.2-pp37-pypy37_pp73-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 17bcd972528a9b15e3e77cdfc61e9af209d4014498ac5f7c27d54a9b7d672e78
MD5 5d612f817d37e8c2da90ee13102d2680
BLAKE2b-256 a496a7e06ec3110e28686a623d48c310bd4635c8deb8382c9864eff955aaf125

See more details on using hashes here.

File details

Details for the file nfstream-6.4.2-pp37-pypy37_pp73-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: nfstream-6.4.2-pp37-pypy37_pp73-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: PyPy, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.0 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 PyPy/7.3.7

File hashes

Hashes for nfstream-6.4.2-pp37-pypy37_pp73-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 2e4b81567cdd2af43e37869fb52109a2e2ec7ad04a8f661664225d03b71eed1e
MD5 6523a566fa7e9ca047bf4ac5e8334dbe
BLAKE2b-256 8d85a46545949e86fee414b598a4f620eff57edae178fa57c3b028f2e88d689a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.4.2-pp36-pypy36_pp73-manylinux1_x86_64.whl
  • Upload date:
  • Size: 3.9 MB
  • Tags: PyPy
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.4 PyPy/7.3.3

File hashes

Hashes for nfstream-6.4.2-pp36-pypy36_pp73-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 0f2be3723eaaf5f333e3fde94354a7764f3d9246a9c3244c418dcd7ed83caec1
MD5 4f2f9203654dbb1fee5692582fe7ee6c
BLAKE2b-256 df6321e4e4adc38576e741ffb4e01219c859e630281ff6285837123bb083ea65

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.4.2-pp36-pypy36_pp73-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: PyPy, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.4 PyPy/7.3.3

File hashes

Hashes for nfstream-6.4.2-pp36-pypy36_pp73-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 44adeb2ad7905582e6ada970937f7a88eb97eea6cb7d6a13f3aabdd92b187378
MD5 6439a4855ef08ec33a9ac7c6e394c71b
BLAKE2b-256 06f0211c37c134dad8dccf6598c6412a863818cab8ba49f386921517052acaaa

See more details on using hashes here.

File details

Details for the file nfstream-6.4.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: nfstream-6.4.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 3.9 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.0 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.1

File hashes

Hashes for nfstream-6.4.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 49b2de4404e83891bc8fc797b5521ec117131def42104b6e92f7eb597b526423
MD5 f5b29d4c10040b3e93566d02b928758c
BLAKE2b-256 eeea03c19f7432de6d28a42e49e819845e80dd1b7b870376da94d38c14bbd73e

See more details on using hashes here.

File details

Details for the file nfstream-6.4.2-cp310-cp310-manylinux1_x86_64.whl.

File metadata

  • Download URL: nfstream-6.4.2-cp310-cp310-manylinux1_x86_64.whl
  • Upload date:
  • Size: 3.9 MB
  • Tags: CPython 3.10
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.0 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.2

File hashes

Hashes for nfstream-6.4.2-cp310-cp310-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 8f895a5e32cf28c3d4f3f05d01944776756c0f87419b24e16aa16ac9ee85f4ae
MD5 dbec63ff6fd8df2d427eeba36035fc1a
BLAKE2b-256 e21721f8a8de3c8488e34e4389886b050179bf3f3736e97345485209c9738d8b

See more details on using hashes here.

File details

Details for the file nfstream-6.4.2-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: nfstream-6.4.2-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 3.9 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.0 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.9

File hashes

Hashes for nfstream-6.4.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 f33105c04703e2117793aa1703c3123e39abfe1f4712c0e84736b610d2f1e4f8
MD5 2488bb48ade199be28835a9f957ad56e
BLAKE2b-256 88a32c4c13e0c6a3cc2ec24eae6f2d24d25b23144c897872ce4770769fe635b7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.4.2-cp39-cp39-manylinux1_x86_64.whl
  • Upload date:
  • Size: 3.9 MB
  • Tags: CPython 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.0 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.10

File hashes

Hashes for nfstream-6.4.2-cp39-cp39-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 de133e7b1c87755a9fe8857d82da25c39a275db954c7f4c6d8ed65daec702fda
MD5 ffc79ab497b9f2d3e9e43530939f26d6
BLAKE2b-256 3f3b2d7c5c471da50734e50ae5a34ebca06d561b98d6e59732342dd6064c6d3c

See more details on using hashes here.

File details

Details for the file nfstream-6.4.2-cp39-cp39-macosx_10_15_x86_64.whl.

File metadata

  • Download URL: nfstream-6.4.2-cp39-cp39-macosx_10_15_x86_64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.9, macOS 10.15+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.0 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.10

File hashes

Hashes for nfstream-6.4.2-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 2166cc30b124342c5a9f36db967ac650194e5a83d4465e32877050cfe57dddc8
MD5 bd5b804b5c194a9a3a2f61120ef6b579
BLAKE2b-256 7b3801a3039faee0347b9d233a40cd2666052664d51b3b63a81126338e9d037d

See more details on using hashes here.

File details

Details for the file nfstream-6.4.2-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: nfstream-6.4.2-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 3.9 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.0 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.10

File hashes

Hashes for nfstream-6.4.2-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 c4ee30c3a0381ee8a28619681e5deae18da3a75afceb6a052ba464e270055f6d
MD5 ea1529a156fcd426974bf9e97b4b2ffd
BLAKE2b-256 44674ec41a25bd7a60d105d0e6cf90f02793daf2bf7c81dac6e25f4e4229248c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.4.2-cp38-cp38-manylinux1_x86_64.whl
  • Upload date:
  • Size: 3.9 MB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.0 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.12

File hashes

Hashes for nfstream-6.4.2-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 a12c80943c319fff1282e8516a726aae5151bdd418c9a0a172626be0ab11051b
MD5 00d8db870b44e24a5507a6c8df7fbf8f
BLAKE2b-256 e4b2c870d42d769bb8413ba450fce2ad5264d70567820328625d122579032861

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.4.2-cp38-cp38-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.8, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.0 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.12

File hashes

Hashes for nfstream-6.4.2-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 91bdd099024b9263ebddd5ebff49c1cb2c601cd36c07aaaab97537ba9a8a238b
MD5 d9b516cfaf07a6b040d5a4877e410821
BLAKE2b-256 399ea0308ea6488fd5e42513c993299fca2bd1739652a11593b6bd251e0ec7f5

See more details on using hashes here.

File details

Details for the file nfstream-6.4.2-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: nfstream-6.4.2-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 3.9 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.10.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.7.9

File hashes

Hashes for nfstream-6.4.2-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 1baf4cf27fcaa500c51cd7cd984e3372f9b005bb087c237838e6d7945a1bbe76
MD5 a1324addddb5759f85e5265dc06cb70a
BLAKE2b-256 7da3c20fcc5df686ae4cffa4ce325649efabeacb433644a0f1c154544be22a06

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.4.2-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 3.9 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.0 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.7.12

File hashes

Hashes for nfstream-6.4.2-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 07cd62a51eb9a6cbb49b05d4d8f241b0f80a21ebf92c12198bd471407900a17a
MD5 012fb22132d62f71f486d748f8a5a69e
BLAKE2b-256 e84f12a37cb33e551f58f44d46e7267032abd7355da2366f9e81ec7337f13b39

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.4.2-cp37-cp37m-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.7m, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.0 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.7.12

File hashes

Hashes for nfstream-6.4.2-cp37-cp37m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 dffc1842d8e62e8db66891916fdaa374eb47b9393ccca00d276585a208193936
MD5 137b0a493eec2c9179481ad3168c1c74
BLAKE2b-256 aa20c2dbc1c7f2148985cf17cb60f3b53cff201464ec92d5ff247d85f58fe6d8

See more details on using hashes here.

File details

Details for the file nfstream-6.4.2-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: nfstream-6.4.2-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 3.9 MB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.4 CPython/3.6.8

File hashes

Hashes for nfstream-6.4.2-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 0bac52627ee5428a8e40af47a954be499c33a53d35c294a32d6322d231af311a
MD5 61a697dc12d05d532552e89c143bc060
BLAKE2b-256 fc6f48e2646e0a1b7385c26083867c8f35ea2cea3ca61303de6447e29a314f2d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.4.2-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 3.9 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.4 CPython/3.6.15

File hashes

Hashes for nfstream-6.4.2-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 02777e704455040a4ae5ec1994bf2400806d5e9a359276d9de3d31ff0b7b1e0e
MD5 c4c235c74d08793781c69852773cffbd
BLAKE2b-256 637d35b75ada41c5527cd97c8609447b0fbefa2aa1a41aec5a33c1e643cc4503

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.4.2-cp36-cp36m-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.6m, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.4 CPython/3.6.15

File hashes

Hashes for nfstream-6.4.2-cp36-cp36m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 2e081a28543538bcbb57064b8cc911dacffc238e06cb0615f2931d1d4a6ea304
MD5 b1f8b233a3dfd522af0d6084c7f2184a
BLAKE2b-256 e3bbc6e4cf445005f7763401003cd0efbf545b65a2201e561315b0148130046d

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