diff --git a/README.md b/README.md index 959734ceee..3985cc1b55 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,88 @@ -
[![PcapPlusPlus Logo](https://pcapplusplus.github.io/img/logo/logo_color.png)](https://pcapplusplus.github.io) -[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/seladb/PcapPlusPlus/build_and_test.yml?branch=master&label=Actions&logo=github&style=flat)](https://github.com/seladb/PcapPlusPlus/actions?query=workflow%3A%22Build+and+test%22) -[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/seladb/PcapPlusPlus/codeql.yml?branch=master&label=CodeQL&logo=github&style=flat)](https://github.com/seladb/PcapPlusPlus/actions?query=workflow%3A%22CodeQL%22) -[![Codecov](https://img.shields.io/codecov/c/github/seladb/PcapPlusPlus?logo=codecov&logoColor=white)](https://app.codecov.io/github/seladb/PcapPlusPlus) -[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/seladb/PcapPlusPlus/badge)](https://scorecard.dev/viewer/?uri=github.com/seladb/PcapPlusPlus) -[![GitHub contributors](https://img.shields.io/github/contributors/seladb/PcapPlusPlus?style=flat&label=Contributors&logo=github)](https://github.com/seladb/PcapPlusPlus/graphs/contributors) +

⚑ High-Performance Network Packet Processing Library for C++ ⚑

+ +--- + +
+ +[![πŸ”§ Build Status](https://img.shields.io/github/actions/workflow/status/seladb/PcapPlusPlus/build_and_test.yml?branch=master&label=Build&logo=github&style=for-the-badge&color=brightgreen)](https://github.com/seladb/PcapPlusPlus/actions?query=workflow%3A%22Build+and+test%22) +[![πŸ” CodeQL](https://img.shields.io/github/actions/workflow/status/seladb/PcapPlusPlus/codeql.yml?branch=master&label=Security&logo=github&style=for-the-badge&color=blue)](https://github.com/seladb/PcapPlusPlus/actions?query=workflow%3A%22CodeQL%22) +[![πŸ“Š Coverage](https://img.shields.io/codecov/c/github/seladb/PcapPlusPlus?logo=codecov&logoColor=white&style=for-the-badge&color=purple)](https://app.codecov.io/github/seladb/PcapPlusPlus) + +
+ +
+ +[![πŸ† Quality Score](https://img.shields.io/ossf-scorecard/github.com/seladb/PcapPlusPlus?label=Security%20Score&style=for-the-badge&color=orange)](https://scorecard.dev/viewer/?uri=github.com/seladb/PcapPlusPlus) +[![πŸ‘₯ Contributors](https://img.shields.io/github/contributors/seladb/PcapPlusPlus?style=for-the-badge&label=Contributors&logo=github&color=red)](https://github.com/seladb/PcapPlusPlus/graphs/contributors) +[![πŸ“₯ Downloads](https://img.shields.io/github/downloads/seladb/PcapPlusPlus/total?style=for-the-badge&label=Downloads&logo=github&color=teal)](https://tooomm.github.io/github-release-stats/?username=seladb&repository=PcapPlusPlus) + +
+ +
-[![X Follow](https://img.shields.io/badge/follow-%40seladb-1DA1F2?logo=x&style=social)](https://x.com/intent/follow?screen_name=seladb) -[![GitHub Repo stars](https://img.shields.io/github/stars/seladb/PcapPlusPlus?style=social)]() +[![🐦 Follow](https://img.shields.io/badge/follow-%40seladb-1DA1F2?logo=x&style=for-the-badge)](https://x.com/intent/follow?screen_name=seladb) +[![⭐ Stars](https://img.shields.io/github/stars/seladb/PcapPlusPlus?style=for-the-badge&logo=github&color=yellow)](https://github.com/seladb/PcapPlusPlus/stargazers) +[![🍴 Forks](https://img.shields.io/github/forks/seladb/PcapPlusPlus?style=for-the-badge&logo=github&color=lightgrey)](https://github.com/seladb/PcapPlusPlus/network/members)
-[PcapPlusPlus](https://pcapplusplus.github.io/) is a multiplatform C++ library for capturing, parsing and crafting of network packets. It is designed to be efficient, powerful and easy to use. +
+ +
+ +
+ + + + + + +
+ +**🌐 Multiplatform**
+Linux β€’ Windows β€’ macOS
+Android β€’ FreeBSD + +
+ +**⚑ High Performance**
+DPDK β€’ PF_RING β€’ eBPF
+Line-rate Processing -PcapPlusPlus enables decoding and forging capabilities for a large variety of network protocols. It also provides easy to use C++ wrappers for the most popular packet processing engines such as [libpcap](https://www.tcpdump.org/), [WinPcap](https://www.winpcap.org/), [Npcap](https://nmap.org/npcap/), [DPDK](https://www.dpdk.org/), [eBPF AF_XDP](https://www.kernel.org/doc/html/next/networking/af_xdp.html) and [PF_RING](https://www.ntop.org/products/packet-capture/pf_ring/). +
-Translations: English Β· [ζ­£ι«”δΈ­ζ–‡](./translation/README-zh-tw.md) Β· [ν•œκ΅­μ–΄](./translation/README-kor.md) +**πŸ”§ Easy to Use**
+Modern C++ API
+Extensive Documentation + +
+
+ +--- + +## About PcapPlusPlus + +[**PcapPlusPlus**](https://pcapplusplus.github.io/) is a **multiplatform C++ library** for capturing, parsing and crafting of network packets. It is designed to be **efficient**, **powerful** and **easy to use**. + +> πŸ’‘ **What makes PcapPlusPlus special?** +> +> PcapPlusPlus enables decoding and forging capabilities for a **large variety of network protocols**. It also provides easy to use C++ wrappers for the most popular packet processing engines such as [**libpcap**](https://www.tcpdump.org/), [**WinPcap**](https://www.winpcap.org/), [**Npcap**](https://nmap.org/npcap/), [**DPDK**](https://www.dpdk.org/), [**eBPF AF_XDP**](https://www.kernel.org/doc/html/next/networking/af_xdp.html) and [**PF_RING**](https://www.ntop.org/products/packet-capture/pf_ring/). + +
+ +**🌍 Translations Available** + +[**πŸ‡ΊπŸ‡Έ English**]() Β· [**πŸ‡ΉπŸ‡Ό ζ­£ι«”δΈ­ζ–‡**](./translation/README-zh-tw.md) Β· [**πŸ‡°πŸ‡· ν•œκ΅­μ–΄**](./translation/README-kor.md) + +
## Table Of Contents +- [About PcapPlusPlus](#about-pcapplusplus) - [Table Of Contents](#table-of-contents) - [Download](#download) - [GitHub Release Page](#github-release-page) @@ -31,8 +92,22 @@ Translations: English Β· [ζ­£ι«”δΈ­ζ–‡](./translation/README-zh-tw.md) Β· [ν•œ - [Build It Yourself](#build-it-yourself) - [Verify your packages](#verify-your-packages) - [Feature Overview](#feature-overview) + - [**Packet Capture**](#packet-capture) + - [**Packet Parsing \& Crafting**](#packet-parsing--crafting) + - [**File I/O Operations**](#file-io-operations) + - [**Line-Rate Processing**](#line-rate-processing) + - [**Packet Reassembly**](#packet-reassembly) + - [**Advanced Features**](#advanced-features) - [Getting Started](#getting-started) +- [Packet Capture Backends](#packet-capture-backends) + - [**libpcap**](#libpcap) + - [**WinPcap / Npcap**](#winpcap--npcap) + - [**Remote Capture (rpcapd)**](#remote-capture-rpcapd) + - [**DPDK KNI**](#dpdk-kni) - [API Documentation](#api-documentation) + - [**Packet++**](#packet) + - [**Pcap++**](#pcap) + - [**Common++**](#common) - [Multi Platform Support](#multi-platform-support) - [Supported Network Protocols](#supported-network-protocols) - [Data Link Layer (L2)](#data-link-layer-l2) @@ -41,7 +116,10 @@ Translations: English Β· [ζ­£ι«”δΈ­ζ–‡](./translation/README-zh-tw.md) Β· [ν•œ - [Session Layer (L5)](#session-layer-l5) - [Presentation Layer (L6)](#presentation-layer-l6) - [Application Layer (L7)](#application-layer-l7) -- [DPDK And PF_RING Support](#dpdk-and-pf_ring-support) +- [High-Performance Packet Processing Support](#high-performance-packet-processing-support) + - [**DPDK**](#dpdk) + - [**PF\_RINGβ„’**](#pf_ring) + - [**eBPF XDP**](#ebpf-xdp) - [Benchmarks](#benchmarks) - [Provide Feedback](#provide-feedback) - [Contributing](#contributing) @@ -49,13 +127,19 @@ Translations: English Β· [ζ­£ι«”δΈ­ζ–‡](./translation/README-zh-tw.md) Β· [ν•œ ## Download -You can choose between downloading from GitHub release page, use a package manager or build PcapPlusPlus yourself. For more details please visit the [Download](https://pcapplusplus.github.io/docs/install) page in PcapPlusPlus web-site. +
+ +**Choose Your Preferred Installation Method** + +
-[![GitHub all releases](https://img.shields.io/github/downloads/seladb/PcapPlusPlus/total?style=flat&label=Downloads&logo=github)](https://tooomm.github.io/github-release-stats/?username=seladb&repository=PcapPlusPlus) +You can choose between downloading from GitHub release page, use a package manager or build PcapPlusPlus yourself. For more details please visit the [**πŸ“– Download**](https://pcapplusplus.github.io/docs/install) page in PcapPlusPlus web-site. ### GitHub Release Page - +``` +https://github.com/seladb/PcapPlusPlus/releases/latest +``` ### Homebrew @@ -63,45 +147,42 @@ You can choose between downloading from GitHub release page, use a package manag brew install pcapplusplus ``` -Homebrew formulae: +**πŸ“Ž Homebrew formulae:** ### Vcpkg -Windows: - -```text +**Windows:** +```cmd .\vcpkg install pcapplusplus ``` -MacOS/Linux: - -```text +**MacOS/Linux:** +```bash vcpkg install pcapplusplus ``` -Vcpkg port: +**πŸ“Ž Vcpkg port:** ### Conan -```text +```bash conan install "pcapplusplus/[>0]@" -u ``` -The package in ConanCenter: +**πŸ“Ž The package in ConanCenter:** ### Build It Yourself -Clone the git repository: - +**Clone the repository:** ```shell git clone https://github.com/seladb/PcapPlusPlus.git ``` -Follow the build instructions according to your platform in the [Build From Source](https://pcapplusplus.github.io/docs/install#build-from-source) page in PcapPlusPlus web-site. +Follow the build instructions according to your platform in the [**πŸ› οΈ Build From Source**](https://pcapplusplus.github.io/docs/install#build-from-source) page in PcapPlusPlus web-site. ### Verify your packages -PcapPlusPlus releases which newer than v23.09 are signed with GitHub attestation. All of the attestations can be found [here](https://github.com/seladb/PcapPlusPlus/attestations). You can verify the attestation of these packages with GitHub CLI. To verify packages you can follow the most recent instructions from [gh attestation verify](https://cli.github.com/manual/gh_attestation_verify). For simple instructions you can use the following command: +PcapPlusPlus releases which newer than **v23.09** are signed with **GitHub attestation**. All of the attestations can be found [**here**](https://github.com/seladb/PcapPlusPlus/attestations). You can verify the attestation of these packages with GitHub CLI. To verify packages you can follow the most recent instructions from [**gh attestation verify**](https://cli.github.com/manual/gh_attestation_verify). For simple instructions you can use the following command: ```shell gh attestation verify --repository seladb/PcapPlusPlus @@ -115,18 +196,106 @@ and you should see the following output in your terminal: ## Feature Overview -- __Packet capture__ through an easy to use C++ wrapper for popular packet capture engines such as [libpcap](https://www.tcpdump.org/), [WinPcap](https://www.winpcap.org/), [Npcap](https://nmap.org/npcap/), [Intel DPDK](https://www.dpdk.org/), [eBPF AF_XDP](https://www.kernel.org/doc/html/next/networking/af_xdp.html), [ntop’s PF_RING](https://www.ntop.org/products/packet-capture/pf_ring/) and [raw sockets](https://en.wikipedia.org/wiki/Network_socket#Raw_socket) [[Learn more](https://pcapplusplus.github.io/docs/features#packet-capture)] -- __Packet parsing and crafting__ including detailed analysis of protocols and layers, packet generation and packet edit for a large variety of [network protocols](https://pcapplusplus.github.io/docs/features#supported-network-protocols) [[Learn more](https://pcapplusplus.github.io/docs/features#packet-parsing-and-crafting)] -- __Read and write packets from/to files__ in both __PCAP__ and __PCAPNG__ formats [[Learn more](https://pcapplusplus.github.io/docs/features#read-and-write-packets-fromto-files)] -- __Packet processing in line rate__ through an efficient and easy to use C++ wrapper for [DPDK](https://www.dpdk.org/), [eBPF AF_XDP](https://www.kernel.org/doc/html/next/networking/af_xdp.html) and [PF_RING](https://www.ntop.org/products/packet-capture/pf_ring/) [[Learn more](https://pcapplusplus.github.io/docs/features#dpdk-support)] -- __Multiplatform support__ - PcapPlusPlus is fully supported on Linux, MacOS, Windows, Android and FreeBSD -- __Packet reassembly__ - unique implementation of __TCP Reassembly__ which includes TCP retransmission, out-of-order TCP packets and missing TCP data, and __IP Fragmentation and Defragmentation__ to create and reassemble IPv4 and IPv6 fragments [[Learn more](https://pcapplusplus.github.io/docs/features#packet-reassembly)] -- __Packet filtering__ that makes libpcap's BPF filters a lot more user-friendly [[Learn more](https://pcapplusplus.github.io/docs/features#packet-filtering)] -- __TLS Fingerprinting__ - a C++ implementation of [JA3 and JA3S](https://github.com/salesforce/ja3) TLS fingerprinting [[Learn more](https://pcapplusplus.github.io/docs/features#tls-fingerprinting)] +
+ +**Everything You Need for Network Packet Processing** + +
+ + + + + + + + + + + + + + +
+ +### **Packet Capture** +Easy-to-use C++ wrapper for popular engines: +- **libpcap** - Universal packet capture +- **WinPcap/Npcap** - Windows packet capture +- **Intel DPDK** - High-performance processing +- **eBPF AF_XDP** - Kernel bypass networking +- **PF_RING** - High-speed packet processing +- **Raw sockets** - Low-level network access + +[**πŸ“– Learn more**](https://pcapplusplus.github.io/docs/features#packet-capture) + + + +### **Packet Parsing & Crafting** +Detailed protocol analysis and packet generation: +- **Deep packet inspection** +- **Packet creation and modification** +- **Layer-by-layer analysis** +- **50+ supported protocols** +- **Protocol-specific handling** + +[**πŸ“– Learn more**](https://pcapplusplus.github.io/docs/features#packet-parsing-and-crafting) + +
+ +### **File I/O Operations** +Read and write packets from/to files: +- **PCAP format support** +- **PCAPNG format support** +- **Format conversion** +- **Efficient file handling** + +[**πŸ“– Learn more**](https://pcapplusplus.github.io/docs/features#read-and-write-packets-fromto-files) + + + +### **Line-Rate Processing** +High-performance packet processing: +- **DPDK integration** +- **eBPF AF_XDP support** +- **PF_RING optimization** +- **Scalable architecture** +- **Zero-copy processing** + +[**πŸ“– Learn more**](https://pcapplusplus.github.io/docs/features#dpdk-support) + +
+ +### **Packet Reassembly** +Advanced reconstruction capabilities: +- **TCP Reassembly** - Handle retransmissions & out-of-order +- **IP Fragmentation/Defragmentation** - IPv4 & IPv6 +- **Missing data handling** +- **State management** + +[**πŸ“– Learn more**](https://pcapplusplus.github.io/docs/features#packet-reassembly) + + + +### **Advanced Features** +Specialized networking capabilities: +- **BPF filters made easy** +- **TLS Fingerprinting (JA3/JA3S)** +- **Multi-platform support** +- **User-friendly packet filtering** + +[**πŸ“– Learn more**](https://pcapplusplus.github.io/docs/features#packet-filtering) + +
## Getting Started -Writing applications with PcapPlusPlus is very easy and intuitive. Here is a simple application that shows how to read a packet from a PCAP file and parse it: +
+ +**✨ Writing applications with PcapPlusPlus is very easy and intuitive! ✨** + +
+ +Here's a **simple application** that shows how to read a packet from a PCAP file and parse it: ```cpp #include @@ -173,154 +342,572 @@ int main(int argc, char* argv[]) } ``` -You can find much more information in the [Getting Started](https://pcapplusplus.github.io/docs/quickstart) page in PcapPlusPlus web-site. This page will walk you through few easy steps to have an app up and running. +
+ +**Want to learn more?** + +Visit our comprehensive [**πŸ“š Getting Started**](https://pcapplusplus.github.io/docs/quickstart) guide! This page will walk you through **few easy steps** to have an app up and running. + +
+ +## Packet Capture Backends + +
+ +**Multiple Capture Engines Supported!** + +
+ +PcapPlusPlus provides a **unified C++ interface** for multiple packet capture backends, making it easy to switch between different capture engines based on your platform and requirements. + + + + + + + + +
+ +### **libpcap** +libpcap + +**🐧 Universal Packet Capture** + +The standard packet capture library for **Unix-like systems**. Cross-platform support for Linux, macOS, and BSD. + + + +### **WinPcap / Npcap** +WinPcap/Npcap + +**πŸ–₯️ Windows Packet Capture** + +**WinPcap** and **Npcap** provide packet capture capabilities on Windows systems with advanced filtering. + + + +### **Remote Capture (rpcapd)** +rpcapd + +**πŸ“‘ Network-Based Capture** + +**Remote packet capture** using rpcapd daemon for capturing packets from remote machines over the network. + + + +### **DPDK KNI** +KNI + +**πŸŒ‰ Kernel Network Interface** + +DPDK's **Kernel Network Interface** for seamless integration between kernel space and DPDK userspace applications. + +
+ +> πŸ’‘ **Why multiple backends?** +> +> Different capture backends are optimized for different use cases. **libpcap** provides broad compatibility, **WinPcap/Npcap** offers Windows integration, **rpcapd** enables remote monitoring, and **DPDK KNI** bridges high-performance DPDK with kernel networking. +> +> **PcapPlusPlus** abstracts these differences, providing a **consistent API** regardless of the underlying capture engine! ## API Documentation -PcapPlusPlus consists of 3 libraries: +
+ +**PcapPlusPlus Architecture Overview** + +
+ +PcapPlusPlus consists of **3 powerful libraries**: + + + + + + + +
+ +### **Packet++** +Packet++ + +**πŸ” Packet Processing Engine** + +A library for **parsing**, **creating** and **editing** network packets with support for 50+ protocols. -1. __Packet++__ - a library for parsing, creating and editing network packets -2. __Pcap++__ - a library for intercepting and sending packets, providing network and NIC info, stats, etc. It is actually a C++ wrapper for packet capturing engines such as libpcap, WinPcap, Npcap, DPDK and PF_RING -3. __Common++__ - a library with some common code utilities used by both Packet++ and Pcap++ + -You can find an extensive API documentation in the [API documentation section](https://pcapplusplus.github.io/docs/api) in PcapPlusPlus web-site. -If you see any missing data please [contact us](#provide-feedback). +### **Pcap++** +Pcap++ + +**πŸ“‘ Capture & Send Engine** + +C++ wrapper for packet engines like **libpcap**, **WinPcap**, **Npcap**, **DPDK** and **PF_RING**. + + + +### **Common++** +Common++ + +**βš™οΈ Utilities Library** + +Common utilities and helper functions used by both **Packet++** and **Pcap++**. + +
+ +
+ +**πŸ“š Comprehensive Documentation Available** + +You can find extensive API documentation in the [**πŸ“– API Documentation**](https://pcapplusplus.github.io/docs/api) section. + +
## Multi Platform Support -PcapPlusPlus is currently supported on -__Windows__ +
+ +**Runs Everywhere You Need It!** + +
+ +
+ + + + + + + + +
+ - -, -__Linux__ + Windows + + +**πŸͺŸ Windows** + +
+ +*Visual Studio 16+*
+*MinGW 32*
+*MinGW 64* + +
+ +
+ - -, -__MacOS__ - - -, -__Android__ + Linux + + +**🐧 Linux** + +
+ +*Ubuntu 20.04+*
+*Alpine 3.20*
+*Fedora 42*
+*Red Hat EL 9.4* + +
+ +
+ - - and -__FreeBSD__ + + macOS + + +**🍎 macOS** + +
+ +*MacOS 13+ x86*
+*MacOS 13+ arm64*
+* * + +
+ +
+ - -. -Please visit PcapPlusPlus web-site to see all of the [supported platforms](https://pcapplusplus.github.io/docs/platforms) and refer to the [Download](#download) section to start using PcapPlusPlus on your platform. + Android + + +**πŸ€– Android** + +
+ +*API version 35+*
+* *
+* *
+* * + +
+ +
+ + + FreeBSD + + +**😈 FreeBSD** + +
+ +*FreeBSD 13.4*
+*FreeBSD 14.1*
+* *
+* * + +
+ +
+
+ +
+ +
## Supported Network Protocols -PcapPlusPlus currently supports parsing, editing and creation of packets of the following protocols: +
+ +**50+ Network Protocols Supported!** + +*PcapPlusPlus supports **parsing**, **editing** and **creation** of packets for the following protocols:* + +
### Data Link Layer (L2) -1. Cisco HDLC -2. Ethernet II -3. IEEE 802.3 Ethernet -4. LLC (Only BPDU supported) -5. Null/Loopback -6. Packet trailer (a.k.a footer or padding) -7. PPPoE -8. SLL (Linux cooked capture) -9. SLL2 (Linux cooked capture v2) -10. STP -11. VLAN -12. VXLAN -13. Wake on LAN (WoL) -14. NFLOG (Linux Netfilter NFLOG) - parsing only (no editing capabilities) +
+ +- **Cisco HDLC** +- **Ethernet II** +- **IEEE 802.3 Ethernet** +- **LLC** (BPDU supported) +- **Null/Loopback** +- **Packet trailer** (footer/padding) +- **PPPoE** +- **SLL** (Linux cooked capture) +- **SLL2** (Linux cooked capture v2) +- **STP** +- **VLAN** +- **VXLAN** +- **Wake on LAN (WoL)** +- **NFLOG** *(parsing only)* +
### Network Layer (L3) -15. ARP -16. GRE -17. ICMP -18. ICMPv6 -19. IGMP (IGMPv1, IGMPv2 and IGMPv3 are supported) -20. IPv4 -21. IPv6 -22. MPLS -23. NDP -24. Raw IP (IPv4 & IPv6) -25. VRRP (IPv4 & IPv6) -26. WireGuard +
+ +- **ARP** +- **GRE** +- **ICMP** +- **ICMPv6** +- **IGMP** (v1, v2, v3) +- **IPv4** +- **IPv6** +- **MPLS** +- **NDP** +- **Raw IP** (IPv4 & IPv6) +- **VRRP** (IPv4 & IPv6) +- **WireGuard** + +
### Transport Layer (L4) -27. COTP -28. GTP (v1 & v2) -29. IPSec AH & ESP - parsing only (no editing capabilities) -30. TCP -31. TPKT -32. UDP +
+ +- **COTP** +- **GTP** (v1 & v2) +- **IPSec AH & ESP** *(parsing only)* +- **TCP** +- **TPKT** +- **UDP** + +
### Session Layer (L5) -33. SDP -34. SIP +
+ +- **SDP** +- **SIP** + +
### Presentation Layer (L6) -35. SSL/TLS - parsing only (no editing capabilities) +
+ +- **SSL/TLS** *(parsing only)* + +
### Application Layer (L7) -36. ASN.1 decoder and encoder -37. BGP (v4) -38. DHCP -39. DHCPv6 -40. DNS -41. FTP -42. HTTP headers (request & response) -43. LDAP -44. NTP (v3, v4) -45. Radius -46. S7 Communication (S7comm) -47. SMTP -48. SOME/IP -49. SSH - parsing only (no editing capabilities) -50. Telnet - parsing only (no editing capabilities) -51. X509 certificates - parsing only (no editing capabilities) -52. Generic payload - -## DPDK And PF_RING Support - -[The Data Plane Development Kit (DPDK)](https://www.dpdk.org/) is a set of data plane libraries and network interface controller drivers for fast packet processing. - -[PF_RINGβ„’](https://www.ntop.org/products/packet-capture/pf_ring/) is a new type of network socket that dramatically improves the packet capture speed. - -Both frameworks provide very fast packets processing (up to line speed) and are used in many network applications such as routers, firewalls, load balancers, etc. -PcapPlusPLus provides a C++ abstraction layer over DPDK & PF_RING. This abstraction layer provides an easy to use interface that removes a lot of the boilerplate involved in using these frameworks. You can learn more by visiting the [DPDK](https://pcapplusplus.github.io/docs/dpdk) & [PF_RING](https://pcapplusplus.github.io/docs/features#pf_ring-support) support pages in PcapPlusPlus web-site. +
+ +- **ASN.1** decoder/encoder +- **BGP** (v4) +- **DHCP** +- **DHCPv6** +- **DNS** +- **FTP** +- **HTTP** headers +- **LDAP** +- **NTP** (v3, v4) +- **Radius** +- **S7 Communication** +- **SMTP** +- **SOME/IP** +- **SSH** *(parsing only)* +- **Telnet** *(parsing only)* +- **X509 certificates** *(parsing only)* +- **Generic payload** + +
+ +## High-Performance Packet Processing Support + +
+ +**Unleash Line-Rate Performance!** + +
+ + + + + + + +
+ +### **DPDK** +DPDK + +**⚑ Data Plane Development Kit** + +Set of data plane libraries and drivers for **ultra-fast packet processing**. Perfect for routers, firewalls, and load balancers. + +[**πŸ“– Learn more**](https://pcapplusplus.github.io/docs/dpdk) + + + +### **PF_RINGβ„’** +PF_RING + +**⚑ High-Speed Network Socket** + +Revolutionary network socket that **dramatically improves** packet capture speed for real-time processing. + +[**πŸ“– Learn more**](https://pcapplusplus.github.io/docs/features#pf_ring-support) + + + +### **eBPF XDP** +XDP + +**⚑ eXpress Data Path** + +Linux kernel's **ultra-fast** packet processing framework using eBPF for **zero-copy** performance. + +[**πŸ“– Learn more**](https://pcapplusplus.github.io/docs/features#af_xdp-support) + +
+ +> πŸ’‘ **Why use these high-performance frameworks?** +> +> All these frameworks provide **very fast packet processing** (up to **line speed**) and are used in many network applications such as **routers**, **firewalls**, **load balancers**, etc. +> +> **PcapPlusPlus** provides a **C++ abstraction layer** over DPDK, PF_RING & XDP that removes the boilerplate and makes these powerful frameworks **easy to use**! ## Benchmarks -We used Matias Fontanini's [packet-capture-benchmarks](https://github.com/mfontanini/packet-capture-benchmarks) project to compare the performance of PcapPlusPlus with other similar C++ libraries (such as `libtins` and `libcrafter`). +
+ +**Performance Matters!** -You can see the results in the [Benchmarks](https://pcapplusplus.github.io/docs/benchmark) page in PcapPlusPlus web-site. +
+ +We used **Matias Fontanini's** [**packet-capture-benchmarks**](https://github.com/mfontanini/packet-capture-benchmarks) project to compare the performance of **PcapPlusPlus** with other similar C++ libraries (such as `libtins` and `libcrafter`). + +
+ +**See The Results** + +Check out our comprehensive [**πŸ“Š Benchmarks**](https://pcapplusplus.github.io/docs/benchmark) page to see how **PcapPlusPlus** performs! + +
## Provide Feedback -We'd be more than happy to get feedback, please feel free to reach out to us in any of the following ways: +
+ +**We'd Love to Hear From You!** + +
+ +
+ + + + + + + + +
+ +**πŸ› Issues** + +[GitHub Issues](https://github.com/seladb/PcapPlusPlus/issues) + +*Bug reports & feature requests* + + -- Open a GitHub ticket -- Post a message in PcapPlusPlus Google group: -- Ask a question on Stack Overflow: -- Send an email to: -- Follow us on X: +**πŸ’¬ Discussion** -If you like this project please __Star us on GitHub β€” it helps!__ :star: :star: +[Google Groups](https://groups.google.com/d/forum/pcapplusplus-support) -Please visit the [PcapPlusPlus web-site](https://pcapplusplus.github.io/community) to learn more. +*Community support* + + + +**❓ Q&A** + +[Stack Overflow](https://stackoverflow.com/questions/tagged/pcapplusplus) + +*Technical questions* + + + +**πŸ“§ Email** + +[pcapplusplus@gmail.com](mailto:pcapplusplus@gmail.com) + +*Direct contact* + + + +**🐦 Social** + +[Follow @seladb](https://x.com/seladb) + +*Updates & news* + +
+
+ +
+ +**⭐ Show Your Support ⭐** + +If you like this project please **Star us on GitHub** β€” it helps! 🌟 + +[![GitHub stars](https://img.shields.io/github/stars/seladb/PcapPlusPlus?style=for-the-badge&logo=github&color=yellow)](https://github.com/seladb/PcapPlusPlus/stargazers) + +
+ +
+ +**🌐 Learn More** + +Visit the [**PcapPlusPlus Community**](https://pcapplusplus.github.io/community) page to learn more. + +
## Contributing -We would very much appreciate any contribution to this project. If you're interested in contributing please visit the [contribution page](https://pcapplusplus.github.io/community#contribute) in PcapPlusPlus web-site. +
+ +**Join Our Community of Contributors!** + +
+ +We would **very much appreciate** any contribution to this project! Whether you're: + +
+ + + + + + + +
+ +**πŸ› Bug Hunter** + +Found a bug?
+*Help us fix it!* + +
+ +**✨ Feature Developer** + +Got a cool idea?
+*Let's build it together!* + +
+ +**πŸ“š Documentation Writer** + +Love clear docs?
+*Help us improve them!* + +
+ +**πŸ§ͺ Tester** + +Testing enthusiast?
+*Help us ensure quality!* + +
+
+ +
+ +**Get Started Contributing** + +Visit our [**🀝 Contributing Guide**](https://pcapplusplus.github.io/community#contribute) to learn how you can help make PcapPlusPlus even better! + +
## License -PcapPlusPlus is released under the [Unlicense license](https://choosealicense.com/licenses/unlicense/). +
+ +**Free and Open Source** + +
+ +PcapPlusPlus is released under the [**Unlicense**](https://choosealicense.com/licenses/unlicense/) - meaning it's completely **free** for any use! + +
+ +[![License: Unlicense](https://img.shields.io/github/license/seladb/PcapPlusPlus?style=for-the-badge&color=brightgreen&logo=unlicense)](https://choosealicense.com/licenses/unlicense/) + +**βœ… Commercial Use** β€’ **βœ… Modification** β€’ **βœ… Distribution** β€’ **βœ… Private Use** -[![GitHub](https://img.shields.io/github/license/seladb/PcapPlusPlus?style=flat&color=blue&logo=unlicense)](https://choosealicense.com/licenses/unlicense/) +
+ +--- + +
+ +**πŸŽ‰ Thank you for using PcapPlusPlus! πŸŽ‰** + +Made with Love + +