From 140e40fe6b4bbfea04ea723fe8bf8069ffe9ab3d Mon Sep 17 00:00:00 2001 From: aouinizied Date: Sun, 20 Oct 2019 06:49:19 +0200 Subject: [PATCH] Add example. --- README.rst | 21 +++++++++++++++++++++ docs/streamer_example.png | Bin 0 -> 29497 bytes 2 files changed, 21 insertions(+) create mode 100644 docs/streamer_example.png diff --git a/README.rst b/README.rst index 57b19cf..0cf7d2f 100644 --- a/README.rst +++ b/README.rst @@ -6,6 +6,27 @@ nfstream is a flexible and lightweight network data analysis library. +**nfstream main features** + +* **Performance:** nfstream was designed to be fast, CPU savvy and small memory fingerprint. +* **Layer-7 visibility:** (250+ applications including Tor, Messenger, WhatsApp, etc.). +* **Flexibility:** Missing metric? You can add a metric in 2 lines of code using nfstream User Defined Metrics. + +**examples of use** + +Dealing with a big pcap file and just want to see flow informations stored in as a csv file or +pandas Dataframe? nfstream make this path easier in few lines: + +.. image:: docs/source/streamer_example.png + :scale: 80% + :align: center + + +.. code-block:: json + + {"ip_src": "192.168.43.18", "src_port": 52066, "ip_dst": "66.220.156.68", "dst_port": 443, "ip_protocol": 6, "src_to_dst_pkts": 9, "dst_to_src_pkts": 10, "src_to_dst_bytes": 1345, "dst_to_src_bytes": 4400, "application_name": "TLS.Facebook", "start_time": 1472393122365, "end_time": 1472393123665, "export_reason": 2} + + Getting Started =============== diff --git a/docs/streamer_example.png b/docs/streamer_example.png new file mode 100644 index 0000000000000000000000000000000000000000..cd7a4867b4b58ea44b682192bdc9e0b679eb2442 GIT binary patch literal 29497 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