
Libreria C++ multipiattaforma per cattura, parsing, creazione e analisi di pacchetti di rete ad alte prestazioni. Supporta libpcap, DPDK, AF_XDP, PF_RING e include riassemblaggio TCP, fingerprinting TLS e decodifica di protocolli.
PcapPlusPlus è una libreria C++ multipiattaforma per la cattura, l'analisi e la creazione di pacchetti di rete. È progettata per essere efficiente, potente e facile da usare.
PcapPlusPlus consente capacità di decodifica e forgiatura per un'ampia varietà di protocolli di rete. Fornisce inoltre wrapper C++ facili da usare per i motori di elaborazione dei pacchetti più popolari come libpcap, WinPcap, Npcap, DPDK, eBPF AF_XDP, WinDivert e PF_RING.
Traduzioni: Inglese · 正體中文 · 한국어 · 日本語 · Русский
Puoi scegliere tra scaricare dalla pagina delle release di GitHub, utilizzare un gestore di pacchetti o compilare PcapPlusPlus da solo. Per maggiori dettagli visita la pagina Scarica sul sito web di PcapPlusPlus.
https://github.com/seladb/PcapPlusPlus/releases/latest
brew install pcapplusplus
Formula 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
Il pacchetto in ConanCenter: https://conan.io/center/pcapplusplus
Clona il repository git:
git clone https://github.com/seladb/PcapPlusPlus.git
Segui le istruzioni di compilazione in base alla tua piattaforma nella pagina Compila dal Sorgente sul sito web di PcapPlusPlus.
Le release di PcapPlusPlus successive alla v23.09 sono firmate con attestazione GitHub. Tutte le attestazioni si trovano qui. Puoi verificare l'attestazione di questi pacchetti con GitHub CLI. Per verificare i pacchetti, puoi seguire le istruzioni più recenti da gh attestation verify. Per istruzioni semplici, puoi utilizzare il seguente comando:
gh attestation verify <path-to-package-file> --repository seladb/PcapPlusPlus
e dovresti vedere il seguente output nel tuo terminale:
✓ Verification succeeded!
Scrivere applicazioni con PcapPlusPlus è molto facile e intuitivo. Ecco una semplice applicazione che mostra come leggere un pacchetto da un file PCAP e analizzarlo:
#include <iostream>
#include "IPv4Layer.h"
#include "Packet.h"
#include "PcapFileDevice.h"
int main(int argc, char* argv[])
{
// apre un file pcap per la lettura
pcpp::PcapFileReaderDevice reader("1_packet.pcap");
if (!reader.open())
{
std::cerr << "Errore nell'apertura del file pcap" << std::endl;
return 1;
}
// legge il primo (e unico) pacchetto dal file
pcpp::RawPacket rawPacket;
if (!reader.getNextPacket(rawPacket))
{
std::cerr << "Impossibile leggere il primo pacchetto nel file" << std::endl;
return 1;
}
// analizza il pacchetto grezzo in un pacchetto analizzato
pcpp::Packet parsedPacket(&rawPacket);
// verifica che il pacchetto sia IPv4
if (parsedPacket.isPacketOfType(pcpp::IPv4))
{
// estrae IP sorgente e destinazione
pcpp::IPv4Address srcIP = parsedPacket.getLayerOfType<pcpp::IPv4Layer>()->getSrcIPv4Address();
pcpp::IPv4Address destIP = parsedPacket.getLayerOfType<pcpp::IPv4Layer>()->getDstIPv4Address();
// stampa IP sorgente e destinazione
std::cout << "L'IP sorgente è '" << srcIP << "'; L'IP destinazione è '" << destIP << "'" << std::endl;
}
// chiude il file
reader.close();
return 0;
}
Puoi trovare molte più informazioni nella pagina Per Iniziare sul sito web di PcapPlusPlus. Questa pagina ti guiderà attraverso alcuni semplici passaggi per avere un'app in esecuzione.
PcapPlusPlus è composto da 3 librerie:
Puoi trovare un'ampia documentazione API nella sezione documentazione API sul sito web di PcapPlusPlus. Se noti dati mancanti, contattaci.
PcapPlusPlus è attualmente supportato su
Windows
PcapPlusPlus supporta attualmente l'analisi, la modifica e la creazione di pacchetti dei seguenti protocolli:
The Data Plane Development Kit (DPDK) è un insieme di librerie per il data plane e driver per controller di interfaccia di rete per l'elaborazione veloce dei pacchetti.
PF_RING™ è un nuovo tipo di socket di rete che migliora notevolmente la velocità di cattura dei pacchetti.
Entrambi i framework forniscono un'elaborazione dei pacchetti molto veloce (fino alla velocità di linea) e sono utilizzati in molte applicazioni di rete come router, firewall, bilanciatori di carico, ecc. PcapPlusPLus fornisce un livello di astrazione C++ su DPDK e PF_RING. Questo livello di astrazione fornisce un'interfaccia facile da usare che rimuove gran parte del codice boilerplate coinvolto nell'utilizzo di questi framework. Puoi saperne di più visitando le pagine di supporto DPDK e PF_RING sul sito web di PcapPlusPlus.
Abbiamo utilizzato il progetto packet-capture-benchmarks di Matias Fontanini per confrontare le prestazioni di PcapPlusPlus con altre librerie C++ simili (come libtins e libcrafter).
Puoi vedere i risultati nella pagina Benchmark sul sito web di PcapPlusPlus.
Saremo più che felici di ricevere feedback; sentiti libero di contattarci in uno dei seguenti modi:
Se ti piace questo progetto, metti una stella su GitHub — aiuta! ⭐ ⭐
Visita il sito web di PcapPlusPlus per saperne di più.
Apprezzeremmo molto qualsiasi contributo a questo progetto. Se sei interessato a contribuire, visita la pagina dei contributi sul sito web di PcapPlusPlus.
PcapPlusPlus è rilasciato sotto la licenza Unlicense.