
PcapPlusPlus v26.07
Bibliothèque C++ multiplateforme pour la capture, l'analyse, la création et l'analyse de paquets réseau haute performance. Prend en charge libpcap, DPDK, AF_XDP, PF_RING, et inclut le réassemblage TCP, l'empreinte digitale TLS et le décodage de protocole.
PcapPlusPlus est une bibliothèque C++ multiplateforme pour la capture, l'analyse et la création de paquets réseau. Elle est conçue pour être efficace, puissante et facile à utiliser.
PcapPlusPlus permet le décodage et la création d'une grande variété de protocoles réseau. Elle 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, WinDivert et PF_RING.
Traductions : Anglais · 正體中文 · 한국어 · 日本語 · Русский
Table des matières
- Table des matières
- Téléchargement
- Aperçu des fonctionnalités
- Pour commencer
- Documentation de l'API
- Support multiplateforme
- Protocoles réseau pris en charge
- Prise en charge de DPDK et PF_RING
- Benchmarks
- Donner votre avis
- Contribuer
- Licence
Téléchargement
Vous pouvez choisir de télécharger depuis la page de version GitHub, d'utiliser un gestionnaire de paquets ou de construire PcapPlusPlus vous-même. Pour plus de détails, veuillez consulter la page Téléchargement sur le site web de PcapPlusPlus.
Page de version GitHub
https://github.com/seladb/PcapPlusPlus/releases/latest
Homebrew
brew install pcapplusplus
Formule Homebrew : https://formulae.brew.sh/formula/pcapplusplus
Vcpkg
Windows :
.\vcpkg install pcapplusplus
MacOS/Linux :
vcpkg install pcapplusplus
Port Vcpkg : https://github.com/microsoft/vcpkg/tree/master/ports/pcapplusplus
Conan
conan install "pcapplusplus/[>0]@" -u
Le paquet dans ConanCenter : https://conan.io/center/pcapplusplus
Construire vous-même
Clonez le dépôt git :
git clone https://github.com/seladb/PcapPlusPlus.git
Suivez les instructions de construction selon votre plateforme sur la page Construire à partir des sources du site web de PcapPlusPlus.
Vérifier vos paquets
Les versions de PcapPlusPlus plus récentes que v23.09 sont signées avec une attestation GitHub. Toutes les attestations se trouvent ici. Vous pouvez vérifier l'attestation de ces paquets avec GitHub CLI. Pour vérifier les paquets, 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-vers-le-fichier-paquet> --repository seladb/PcapPlusPlus
et vous devriez voir la sortie suivante dans votre terminal :
✓ Verification succeeded!
Aperçu des fonctionnalités
- 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, WinDivert, PF_RING d'ntop et les sockets bruts [En savoir plus]
- Analyse et création de paquets incluant l'analyse détaillée des protocoles et des couches, la génération de paquets et l'édition de paquets pour une grande variété de protocoles réseau [En savoir plus]
- Lecture et écriture de paquets depuis/vers des fichiers aux formats PCAP et PCAPNG [En savoir plus]
- Traitement de paquets à vitesse ligne via un wrapper C++ efficace et facile à utiliser pour DPDK, eBPF AF_XDP et PF_RING [En savoir plus]
- Support 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 hors ordre et les données TCP manquantes, et Fragmentation et 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]
- Empreinte digitale TLS - une implémentation C++ de l'empreinte digitale TLS JA3 et JA3S [En savoir plus]
Pour commencer
Écrire des applications avec PcapPlusPlus est très facile et intuitif. Voici une application simple qui montre comment lire un paquet depuis un fichier PCAP et l'analyser :
#include <iostream>
#include "IPv4Layer.h"
#include "Packet.h"
#include "PcapFileDevice.h"
int main(int argc, char* argv[])
{
// open a pcap file for reading
pcpp::PcapFileReaderDevice reader("1_packet.pcap");
if (!reader.open())
{
std::cerr << "Error opening the pcap file" << std::endl;
return 1;
}
// read the first (and only) packet from the file
pcpp::RawPacket rawPacket;
if (!reader.getNextPacket(rawPacket))
{
std::cerr << "Couldn't read the first packet in the file" << std::endl;
return 1;
}
// parse the raw packet into a parsed packet
pcpp::Packet parsedPacket(&rawPacket);
// verify the packet is IPv4
if (parsedPacket.isPacketOfType(pcpp::IPv4))
{
// extract source and dest IPs
pcpp::IPv4Address srcIP = parsedPacket.getLayerOfType<pcpp::IPv4Layer>()->getSrcIPv4Address();
pcpp::IPv4Address destIP = parsedPacket.getLayerOfType<pcpp::IPv4Layer>()->getDstIPv4Address();
// print source and dest IPs
std::cout << "Source IP is '" << srcIP << "'; Dest IP is '" << destIP << "'" << std::endl;
}
// close the file
reader.close();
return 0;
}
Vous pouvez trouver beaucoup plus d'informations sur la page Pour commencer du site web de PcapPlusPlus. Cette page vous guidera à travers quelques étapes simples pour avoir une application opérationnelle.
Documentation de l'API
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, fournir des informations sur le réseau et la carte réseau, des statistiques, etc. C'est en fait un wrapper C++ pour les moteurs de capture de paquets tels que libpcap, WinPcap, Npcap, DPDK, AF_XDP, WinDivert et PF_RING
- Common++ - une bibliothèque avec des utilitaires de code commun utilisés à la fois par Packet++ et Pcap++
Vous pouvez trouver une documentation complète de l'API dans la section documentation de l'API du site web de PcapPlusPlus. Si vous voyez des données manquantes, veuillez nous contacter.
Support multiplateforme
PcapPlusPlus est actuellement pris en charge sur
Windows
Protocoles réseau pris en charge
PcapPlusPlus prend actuellement en charge l'analyse, l'édition et la création de paquets des protocoles suivants :
Couche de liaison de données (L2)
- Cisco HDLC
- Ethernet II
- IEEE 802.3 Ethernet
- LLC (Seulement BPDU pris en charge)
- Null/Loopback
- Trailer de paquet (a.k.a. footer ou padding)
- PPPoE
- SLL (Linux cooked capture)
- SLL2 (Linux cooked capture v2)
- STP
- VLAN
- VXLAN
- Wake on LAN (WoL)
- NFLOG (Linux Netfilter NFLOG) - analyse uniquement (pas de capacités d'édition)
Couche réseau (L3)
- ARP
- GRE
- ICMP
- ICMPv6
- IGMP (IGMPv1, IGMPv2 et IGMPv3 sont pris en charge)
- IPv4
- IPv6
- MPLS
- NDP
- Raw IP (IPv4 et IPv6)
- VRRP (IPv4 et IPv6)
- WireGuard
Couche de transport (L4)
- COTP
- GTP (v1 et v2)
- IPSec AH et ESP - analyse uniquement (pas de capacités d'édition)
- TCP
- TPKT
- UDP
Couche de session (L5)
- SDP
- SIP
Couche de présentation (L6)
- SSL/TLS - analyse uniquement (pas de capacités d'édition)
Couche d'application (L7)
- Décodeur et encodeur ASN.1
- BGP (v4)
- Décodeurs de clés cryptographiques
- DHCP
- DHCPv6
- DNS
- DoIP
- FTP
- En-têtes HTTP (requête et réponse)
- LDAP
- Modbus
- MySQL - analyse uniquement (pas de capacités d'édition)
- NTP (v3, v4)
- Décodeur et encodeur PEM
- Protocole fil PostgreSQL (PGWire) - analyse uniquement (pas de capacités d'édition)
- Radius
- Communication S7 (S7comm)
- SMTP
- SOME/IP
- SSH - analyse uniquement (pas de capacités d'édition)
- Telnet - analyse uniquement (pas de capacités d'édition)
- Certificats X509 - analyse uniquement (pas de capacités d'édition)
- Charge utile générique
Prise en charge de DPDK et PF_RING
Le Kit de développement du plan de données (DPDK) est un ensemble de bibliothèques du plan de données et de pilotes de contrôleur d'interface réseau pour le traitement rapide de paquets.
PF_RING™ est un nouveau type de socket réseau qui améliore considérablement la vitesse de capture de paquets.
Les deux frameworks offrent un traitement très rapide des paquets (jusqu'à la vitesse de la ligne) et sont utilisés dans de nombreuses applications réseau telles que les routeurs, les pare-feu, les répartiteurs de charge, etc. PcapPlusPlus fournit une couche d'abstraction C++ sur DPDK et PF_RING. Cette couche d'abstraction offre une interface facile à utiliser qui élimine une grande partie du code passe-partout impliqué dans l'utilisation de ces frameworks. Vous pouvez en savoir plus en visitant les pages de support DPDK et PF_RING sur le site web de PcapPlusPlus.
Benchmarks
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 de PcapPlusPlus.
Donner votre avis
Nous serions ravis de recevoir vos retours, n'hésitez pas à nous contacter par l'un des moyens suivants :
- Ouvrir un ticket GitHub
- Publier un message dans le groupe Google PcapPlusPlus : https://groups.google.com/d/forum/pcapplusplus-support
- Poser une question sur Stack Overflow : https://stackoverflow.com/questions/tagged/pcapplusplus
- Envoyer un e-mail à : [email protected]
- Suivez-nous sur X : https://x.com/seladb
Si vous aimez ce projet, merci de nous mettre une étoile sur GitHub — cela aide ! ⭐ ⭐
Veuillez visiter le site web de PcapPlusPlus pour en savoir plus.
Contribuer
Nous apprécierions grandement toute contribution à ce projet. Si vous êtes intéressé à contribuer, veuillez visiter la page de contribution sur le site web de PcapPlusPlus.
Licence
PcapPlusPlus est publié sous la licence Unlicense.
