PcapPlusPlus est une bibliothèque C++ multiplateforme pour la capture, l'analyse et la création de paquets réseau. Il est conçu pour être efficace, puissant et facile à utiliser.
PcapPlusPlus permet des capacités de décodage et de forgeage pour une grande variété de protocoles réseau. Il fournit également des wrappers C++ faciles à utiliser pour les moteurs de traitement de paquets les plus populaires tels que libpcap, WinPcap, Npcap, DPDK, eBPF AF_XDP et PF_RING.
Table des matières
Télécharger
Page de publication de GitHub
Homebrew
Vcpkg
Conan
Construisez-le vous-même
Vérifiez vos colis
Présentation des fonctionnalités
Commencer
Documentation API
Prise en charge multi-plateforme
Protocoles réseau pris en charge
Couche liaison de données (L2)
Couche réseau (L3)
Couche de transport (L4)
Couche de session (L5)
Couche de présentation (L6)
Couche d'application (L7)
Prise en charge DPDK et PF_RING
Repères
Fournir des commentaires
Contribuer
Licence
Vous pouvez choisir entre le téléchargement à partir de la page de version de GitHub, utiliser un gestionnaire de packages ou créer vous-même PcapPlusPlus. Pour plus de détails, veuillez visiter la page de téléchargement du site Web PcapPlusPlus.
https://github.com/seladb/PcapPlusPlus/releases/latest
infuser installer pcapplusplus
Formules homebrew : https://formulae.brew.sh/formula/pcapplusplus
Fenêtres :
.vcpkg install pcapplusplus
MacOS/Linux :
vcpkg install pcapplusplus
Port Vcpkg : https://github.com/microsoft/vcpkg/tree/master/ports/pcapplusplus
conan install "pcapplusplus/[>0]@" -u
Le package dans ConanCenter : https://conan.io/center/pcapplusplus
Clonez le dépôt git :
clone git https://github.com/seladb/PcapPlusPlus.git
Suivez les instructions de construction en fonction de votre plate-forme dans la page Build From Source du site Web PcapPlusPlus.
Les versions PcapPlusPlus plus récentes que la v23.09 sont signées avec l'attestation GitHub. Toutes les attestations peuvent être trouvées ici. Vous pouvez vérifier l'attestation de ces packages avec GitHub CLI. Pour vérifier les packages, vous pouvez suivre les instructions les plus récentes de gh attestation verify. Pour des instructions simples, vous pouvez utiliser la commande suivante :
gh attestation verify <chemin d'accès au fichier-package> --repository seladb/PcapPlusPlus
et vous devriez voir la sortie suivante dans votre terminal :
✓ Vérification réussie !
Capture de paquets via un wrapper C++ facile à utiliser pour les moteurs de capture de paquets populaires tels que libpcap, WinPcap, Npcap, Intel DPDK, eBPF AF_XDP, PF_RING de ntop et raw sockets [En savoir plus]
Analyse et création de paquets, y compris l'analyse détaillée des protocoles et des couches, la génération et l'édition de paquets pour une grande variété de protocoles réseau [En savoir plus]
Lire et écrire des paquets depuis/vers des fichiers aux formats PCAP et PCAPNG [En savoir plus]
Traitement des paquets au débit de ligne grâce à un wrapper C++ efficace et facile à utiliser pour DPDK, eBPF AF_XDP et PF_RING [En savoir plus]
Prise en charge multiplateforme - PcapPlusPlus est entièrement pris en charge sur Linux, MacOS, Windows, Android et FreeBSD
Réassemblage de paquets - implémentation unique du réassemblage TCP qui inclut la retransmission TCP, les paquets TCP dans le désordre et les données TCP manquantes, ainsi que la fragmentation et la défragmentation IP pour créer et réassembler des fragments IPv4 et IPv6 [En savoir plus]
Filtrage de paquets qui rend les filtres BPF de libpcap beaucoup plus conviviaux [En savoir plus]
TLS Fingerprinting - une implémentation C++ des empreintes digitales TLS JA3 et JA3S [En savoir plus]
L'écriture d'applications avec PcapPlusPlus est très simple et intuitive. Voici une application simple qui montre comment lire un paquet à partir d'un fichier PCAP et l'analyser :
#include <iostream>#include "IPv4Layer.h"#include "Packet.h"#include "PcapFileDevice.h"int main(int argc, char* argv[]) {// ouvre un fichier pcap pour lire pcpp::PcapFileReaderDevice reader("1_packet.pcap");if (!reader.open()) { std::cerr << "Erreur d'ouverture du fichier pcap" << std::endl;return 1; }// lit le premier (et unique) paquet du fichier pcpp::RawPacket rawPacket;if (!reader.getNextPacket(rawPacket)) { std::cerr << "Impossible de lire le premier paquet du fichier" << std::endl;return 1; }// analyser le paquet brut en un paquet analysépcpp::Packet parsedPacket(&rawPacket);// vérifier que le paquet est IPv4if (parsedPacket.isPacketOfType(pcpp::IPv4)) {// extraire la source et la destination IPspcpp::IPv4Address srcIP = parsedPacket.getLayerOfType<pcpp::IPv4Layer>()->getSrcIPv4Address(); pcpp::IPv4Address destIP = parsedPacket.getLayerOfType<pcpp::IPv4Layer>()->getDstIPv4Address();// imprimer la source et la destination IPsstd::cout << "L'adresse IP source est '" << srcIP << "'; Dest L'adresse IP est '" << destIP << "'" << std::endl; }// ferme le filereader.close();return 0; }
Vous pouvez trouver beaucoup plus d'informations sur la page Mise en route du site Web de PcapPlusPlus. Cette page vous guidera à travers quelques étapes simples pour qu'une application soit opérationnelle.
PcapPlusPlus se compose de 3 bibliothèques :
Packet++ - une bibliothèque pour analyser, créer et éditer des paquets réseau
Pcap++ - une bibliothèque pour intercepter et envoyer des paquets, fournissant des informations sur le réseau et la carte réseau, des statistiques, etc. Il s'agit en fait d'un wrapper C++ pour les moteurs de capture de paquets tels que libpcap, WinPcap, Npcap, DPDK et PF_RING
Common++ - une bibliothèque avec quelques utilitaires de code courants utilisés à la fois par Packet++ et Pcap++
Vous pouvez trouver une documentation API complète dans la section Documentation API du site Web PcapPlusPlus. Si vous constatez des données manquantes, veuillez nous contacter.
PcapPlusPlus est actuellement pris en charge sous Windows
PcapPlusPlus prend actuellement en charge l'analyse, l'édition et la création de paquets des protocoles suivants :
EthernetII
Ethernet IEEE 802.3
LLC (uniquement BPDU pris en charge)
Null/bouclage
Remorque de paquet (alias pied de page ou remplissage)
PPPoE
SLL (capture cuite Linux)
SLL2 (Capture cuite Linux v2)
STP
VLAN
VXLAN
Réveil sur LAN (WoL)
NFLOG (Linux Netfilter NFLOG) - analyse uniquement (aucune capacité d'édition)
ARP
GRE
ICMP
ICMPv6
IGMP (IGMPv1, IGMPv2 et IGMPv3 sont pris en charge)
IPv4
IPv6
MPLS
NPD
IP brute (IPv4 et IPv6)
VRRP (IPv4 et IPv6)
WireGuard
COTP
GTP (v1)
IPSec AH & ESP - analyse uniquement (aucune capacité d'édition)
TCP
TPKT
UDP
SDP
SIROTER
SSL/TLS - analyse uniquement (aucune capacité d'édition)
Décodeur et encodeur ASN.1
BGP (v4)
DHCP
DHCPv6
DNS
FTP
En-têtes HTTP (requête et réponse)
LDAP
NTP (v3, v4)
Rayon
Communication S7 (S7comm)
SMTP
CERTAINS/IP
SSH - analyse uniquement (aucune capacité d'édition)
Telnet - analyse uniquement (aucune capacité d'édition)
Charge utile générique
Le kit de développement de plan de données (DPDK) est un ensemble de bibliothèques de plans de données et de pilotes de contrôleur d'interface réseau pour un traitement rapide des paquets.
PF_RING™ est un nouveau type de socket réseau qui améliore considérablement la vitesse de capture des paquets.
Les deux frameworks fournissent un traitement des paquets très rapide (jusqu'à la vitesse de ligne) et sont utilisés dans de nombreuses applications réseau telles que les routeurs, les pare-feu, les équilibreurs de charge, etc. PcapPlusPLus fournit une couche d'abstraction C++ sur DPDK et PF_RING. Cette couche d'abstraction fournit une interface facile à utiliser qui supprime une grande partie du passe-partout impliqué dans l'utilisation de ces frameworks. Vous pouvez en savoir plus en visitant les pages d'assistance DPDK et PF_RING sur le site Web PcapPlusPlus.
Nous avons utilisé le projet packet-capture-benchmarks de Matias Fontanini pour comparer les performances de PcapPlusPlus avec d'autres bibliothèques C++ similaires (telles que libtins
et libcrafter
).
Vous pouvez voir les résultats sur la page Benchmarks du site Web PcapPlusPlus.
Nous serions plus qu'heureux de recevoir vos commentaires, n'hésitez pas à nous contacter de l'une des manières suivantes :
Ouvrir un ticket GitHub
Postez un message dans le groupe Google PcapPlusPlus : https://groups.google.com/d/forum/pcapplusplus-support
Posez une question sur Stack Overflow : https://stackoverflow.com/questions/tagged/pcapplusplus
Envoyez un e-mail à : [email protected]
Suivez-nous sur X : https://x.com/seladb
Si vous aimez ce projet, veuillez nous mettre en vedette sur GitHub — ça aide ! ⭐ ⭐
Veuillez visiter le site Web PcapPlusPlus pour en savoir plus.
Nous apprécierions beaucoup toute contribution à ce projet. Si vous souhaitez contribuer, veuillez visiter la page de contribution sur le site Web de PcapPlusPlus.
PcapPlusPlus est publié sous la licence Unlicense.