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 pypy3
Project License License
Build Status Github WorkFlows
Code Quality 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,
      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='')

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 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,
      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

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

Uploaded PyPy macOS 10.14+ x86-64

nfstream-6.3.4-pp36-pypy36_pp73-macosx_10_14_x86_64.whl (1.0 MB view details)

Uploaded PyPy macOS 10.14+ x86-64

nfstream-6.3.4-cp39-cp39-manylinux1_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.9

nfstream-6.3.4-cp39-cp39-macosx_10_14_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.9 macOS 10.14+ x86-64

nfstream-6.3.4-cp38-cp38-manylinux1_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.8

nfstream-6.3.4-cp38-cp38-macosx_10_14_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.8 macOS 10.14+ x86-64

nfstream-6.3.4-cp37-cp37m-manylinux1_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.7m

nfstream-6.3.4-cp37-cp37m-macosx_10_14_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.7m macOS 10.14+ x86-64

nfstream-6.3.4-cp36-cp36m-manylinux1_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.6m

nfstream-6.3.4-cp36-cp36m-macosx_10_14_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.6m macOS 10.14+ x86-64

File details

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

File metadata

  • Download URL: nfstream-6.3.4-pp37-pypy37_pp73-manylinux1_x86_64.whl
  • Upload date:
  • Size: 3.8 MB
  • Tags: PyPy
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 PyPy/7.3.5

File hashes

Hashes for nfstream-6.3.4-pp37-pypy37_pp73-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 8d914aa829cb345f5d976aaffc8d1c67ad0566cf0f39bc2839542a656b2c6db8
MD5 a00e625c8a8ff91b85557e75908f8e3b
BLAKE2b-256 7d421c3fefa074fb506f778ab007d35e323f3c5ebd587e9c7183a497ac830825

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.3.4-pp37-pypy37_pp73-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: PyPy, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 PyPy/7.3.5

File hashes

Hashes for nfstream-6.3.4-pp37-pypy37_pp73-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 c6707652bd8391ea426d2b783000739b9bc3d757854abd2674bdcb405b42db96
MD5 e4fda75ab9df8b11ed9ad9eebfa23c31
BLAKE2b-256 edf042ef34a220e860652338fa4d053379c0e852b78a2bccf641ce2b87ac3734

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.3.4-pp36-pypy36_pp73-manylinux1_x86_64.whl
  • Upload date:
  • Size: 3.8 MB
  • Tags: PyPy
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 PyPy/7.3.3

File hashes

Hashes for nfstream-6.3.4-pp36-pypy36_pp73-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 b99d1a46a8cb0306a324b3666985d06abfdcca022226a02377507251c9c60c0b
MD5 57426de7e8f3152995f26a1aae24b7a6
BLAKE2b-256 cc3ae0058dcdb991d9730b2c1054d601105b9c5abdff1090f477af295f0129d4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.3.4-pp36-pypy36_pp73-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: PyPy, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 PyPy/7.3.3

File hashes

Hashes for nfstream-6.3.4-pp36-pypy36_pp73-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 145ae8c758ac85d9c3a5a3b8e0b6de6b2fa5000860077968e6c19662b2d75053
MD5 6f01016f0b0971240a167bf80b04f992
BLAKE2b-256 f502ef3fb0aba8714caa32f7f7d4ec3fed1fbd4ded9861390b1443629fd9128e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.3.4-cp39-cp39-manylinux1_x86_64.whl
  • Upload date:
  • Size: 3.8 MB
  • Tags: CPython 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.6

File hashes

Hashes for nfstream-6.3.4-cp39-cp39-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 8aadb812b4460d7c35f557b730f262c3ae961a66f87eba1eb9f109248e82f024
MD5 19aabbdf68596eb524a7cff998c9652e
BLAKE2b-256 8726af51a361bf8fdbfaac8d1b2d16ba90e6518a4269f52661e69fc31873df12

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.3.4-cp39-cp39-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: CPython 3.9, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.6

File hashes

Hashes for nfstream-6.3.4-cp39-cp39-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 962768d6515f6ed8952383edde4108f0bc29c63adea770ce5a75195fdaa0f42d
MD5 789eae8c462c5b3d0db245a961dda81b
BLAKE2b-256 01cb0eec590390e0ae92410d0bad4aa4f99d09b4d2c3cd69392314c3157b4d0e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.3.4-cp38-cp38-manylinux1_x86_64.whl
  • Upload date:
  • Size: 3.8 MB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.8.11

File hashes

Hashes for nfstream-6.3.4-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 ebc6040095cdcbfe7475f820722cb55b781b1f24e91e245b5f95ea7ed9f4db02
MD5 bc4ec08d1d176b88f662448fe0a9ea91
BLAKE2b-256 84aaa585c0ff2727613acb38d248c64ba02308515d50c7bf873a42f755f87042

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.3.4-cp38-cp38-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: CPython 3.8, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.8.11

File hashes

Hashes for nfstream-6.3.4-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 3fa2c83e794097ab1ee60676f890b14b3c62bb059edd0d7a6b89c60067820aa0
MD5 8620bd4f619f56aadef37cf6756ef4c4
BLAKE2b-256 6cc13c7c8146916ce8e43e458053a3086ddca5fde674c019dc4673b273946a1a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.3.4-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 3.8 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.7.11

File hashes

Hashes for nfstream-6.3.4-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 a20c79a88c2c2a7ffccc23300385d2afbe0557210a7ee3acae1d817e79c31086
MD5 3cf116a3adc046c51f4a0d8606f59e10
BLAKE2b-256 6f15e18b9254694f4a2212c44a6cc99ebb88e730b14b4250e50a612a8767ed36

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.3.4-cp37-cp37m-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: CPython 3.7m, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.7.11

File hashes

Hashes for nfstream-6.3.4-cp37-cp37m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 9ed30d72cc75f3a7cea88ac89ea009a084587ee2e7dfa16914bf01c512fc07fa
MD5 a0dea498e994f3371c9b45b07794024c
BLAKE2b-256 142e2eab0728ded6763480cf4beb9385e78a1e7bdb733293f45e50bf48a0d2dd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.3.4-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 3.8 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.6.14

File hashes

Hashes for nfstream-6.3.4-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 d89eb30fa7be0818ca7aedbcd322fadcaac743e0d3281c8be3c5015e1d38a79f
MD5 5c637a11661ef9ee621eb03df71d47f0
BLAKE2b-256 c7d11eab0cfb62057685a9f8e346887316ec4730db4fb799bb5771684c1fddba

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nfstream-6.3.4-cp36-cp36m-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: CPython 3.6m, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.6.14

File hashes

Hashes for nfstream-6.3.4-cp36-cp36m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 8b3065ceb8a70ae9a0a780bd69df3de7179ff9dff85195066f4058f0fc16d1e8
MD5 11459f83c09260ac1b4880234c7510fd
BLAKE2b-256 cc25775f8aff1e3eef805f4e694ff228ee7a9d50caded201dca28cc9c27862e1

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