
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 · 正體中文 · 한국어 · 日本語 · Русский
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.
https://github.com/seladb/PcapPlusPlus/releases/latest
brew install pcapplusplus
Formule Homebrew : https://formulae.brew.sh/formula/pcapplusplus
Windows :
.\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 paquet dans ConanCenter : https://conan.io/center/pcapplusplus
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.
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!
É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.
PcapPlusPlus se compose de 3 bibliothèques :
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.
PcapPlusPlus est actuellement pris en charge sur
Windows
PcapPlusPlus prend actuellement en charge l'analyse, l'édition et la création de paquets des protocoles suivants :
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.
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.
Nous serions ravis de recevoir vos retours, n'hésitez pas à nous contacter par l'un des moyens suivants :
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.
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.
PcapPlusPlus est publié sous la licence Unlicense.