
PcapPlusPlus v26.07
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 · 正體中文 · 한국어 · 日本語 · Русский
Sommario
- Sommario
- Scarica
- Panoramica delle Funzionalità
- Per Iniziare
- Documentazione API
- Supporto Multipiattaforma
- Protocolli di Rete Supportati
- Supporto per DPDK e PF_RING
- Benchmark
- Fornisci Feedback
- Contribuisci
- Licenza
Scarica
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.
Pagina delle Release su GitHub
https://github.com/seladb/PcapPlusPlus/releases/latest
Homebrew
brew install pcapplusplus
Formula 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
Il pacchetto in ConanCenter: https://conan.io/center/pcapplusplus
Compila da Solo
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.
Verifica i tuoi pacchetti
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!
Panoramica delle Funzionalità
- Cattura di pacchetti tramite un wrapper C++ facile da usare per i motori di cattura pacchetti più diffusi come libpcap, WinPcap, Npcap, Intel DPDK, eBPF AF_XDP, WinDivert, PF_RING di ntop e raw sockets [Scopri di più]
- Analisi e creazione di pacchetti inclusa l'analisi dettagliata di protocolli e livelli, la generazione di pacchetti e la modifica per un'ampia varietà di protocolli di rete [Scopri di più]
- Lettura e scrittura di pacchetti da/verso file in formato PCAP e PCAPNG [Scopri di più]
- Elaborazione di pacchetti a velocità di linea tramite un wrapper C++ efficiente e facile da usare per DPDK, eBPF AF_XDP e PF_RING [Scopri di più]
- Supporto multipiattaforma - PcapPlusPlus è completamente supportato su Linux, MacOS, Windows, Android e FreeBSD
- Riassemblaggio di pacchetti - implementazione unica di TCP Reassembly che include ritrasmissione TCP, pacchetti TCP fuori ordine e dati TCP mancanti, e Frammentazione e Deframmentazione IP per creare e riassemblare frammenti IPv4 e IPv6 [Scopri di più]
- Filtraggio di pacchetti che rende i filtri BPF di libpcap molto più facili da usare [Scopri di più]
- TLS Fingerprinting - un'implementazione in C++ di JA3 e JA3S TLS fingerprinting [Scopri di più]
Per Iniziare
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.
Documentazione API
PcapPlusPlus è composto da 3 librerie:
- Packet++ - una libreria per analizzare, creare e modificare pacchetti di rete
- Pcap++ - una libreria per intercettare e inviare pacchetti, fornire informazioni di rete e NIC, statistiche, ecc. È di fatto un wrapper C++ per motori di cattura pacchetti come libpcap, WinPcap, Npcap, DPDK, AF_XDP, WinDivert e PF_RING
- Common++ - una libreria con alcune utilità di codice comuni utilizzate sia da Packet++ che da Pcap++
Puoi trovare un'ampia documentazione API nella sezione documentazione API sul sito web di PcapPlusPlus. Se noti dati mancanti, contattaci.
Supporto Multipiattaforma
PcapPlusPlus è attualmente supportato su
Windows
Protocolli di Rete Supportati
PcapPlusPlus supporta attualmente l'analisi, la modifica e la creazione di pacchetti dei seguenti protocolli:
Livello di Collegamento Dati (L2)
- Cisco HDLC
- Ethernet II
- IEEE 802.3 Ethernet
- LLC (solo BPDU supportato)
- Null/Loopback
- Packet trailer (noto anche come footer o padding)
- PPPoE
- SLL (Linux cooked capture)
- SLL2 (Linux cooked capture v2)
- STP
- VLAN
- VXLAN
- Wake on LAN (WoL)
- NFLOG (Linux Netfilter NFLOG) - solo analisi (nessuna capacità di modifica)
Livello di Rete (L3)
- ARP
- GRE
- ICMP
- ICMPv6
- IGMP (supportati IGMPv1, IGMPv2 e IGMPv3)
- IPv4
- IPv6
- MPLS
- NDP
- Raw IP (IPv4 e IPv6)
- VRRP (IPv4 e IPv6)
- WireGuard
Livello di Trasporto (L4)
- COTP
- GTP (v1 e v2)
- IPSec AH e ESP - solo analisi (nessuna capacità di modifica)
- TCP
- TPKT
- UDP
Livello di Sessione (L5)
- SDP
- SIP
Livello di Presentazione (L6)
- SSL/TLS - solo analisi (nessuna capacità di modifica)
Livello Applicativo (L7)
- Decodificatore e codificatore ASN.1
- BGP (v4)
- Decodificatori di chiavi crittografiche
- DHCP
- DHCPv6
- DNS
- DoIP
- FTP
- Intestazioni HTTP (richiesta e risposta)
- LDAP
- Modbus
- MySQL - solo analisi (nessuna capacità di modifica)
- NTP (v3, v4)
- Decodificatore e codificatore PEM
- Protocollo Wire PostgreSQL (PGWire) - solo analisi (nessuna capacità di modifica)
- Radius
- Comunicazione S7 (S7comm)
- SMTP
- SOME/IP
- SSH - solo analisi (nessuna capacità di modifica)
- Telnet - solo analisi (nessuna capacità di modifica)
- Certificati X509 - solo analisi (nessuna capacità di modifica)
- Payload generico
Supporto per DPDK e PF_RING
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.
Benchmark
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.
Fornisci Feedback
Saremo più che felici di ricevere feedback; sentiti libero di contattarci in uno dei seguenti modi:
- Apri un ticket su GitHub
- Invia un messaggio nel gruppo Google di PcapPlusPlus: https://groups.google.com/d/forum/pcapplusplus-support
- Fai una domanda su Stack Overflow: https://stackoverflow.com/questions/tagged/pcapplusplus
- Invia un'email a: [email protected]
- Seguici su X: https://x.com/seladb
Se ti piace questo progetto, metti una stella su GitHub — aiuta! ⭐ ⭐
Visita il sito web di PcapPlusPlus per saperne di più.
Contribuisci
Apprezzeremmo molto qualsiasi contributo a questo progetto. Se sei interessato a contribuire, visita la pagina dei contributi sul sito web di PcapPlusPlus.
Licenza
PcapPlusPlus è rilasciato sotto la licenza Unlicense.
