PcapPlusPlus ist eine plattformübergreifende C++-Bibliothek zum Erfassen, Parsen und Erstellen von Netzwerkpaketen. Es ist effizient, leistungsstark und einfach zu bedienen.
PcapPlusPlus ermöglicht Decodierungs- und Fälschungsfunktionen für eine Vielzahl von Netzwerkprotokollen. Es bietet außerdem benutzerfreundliche C++-Wrapper für die gängigsten Paketverarbeitungs-Engines wie libpcap, WinPcap, Npcap, DPDK, eBPF AF_XDP und PF_RING.
Inhaltsverzeichnis
Herunterladen
GitHub-Veröffentlichungsseite
Homebrew
Vcpkg
Conan
Bauen Sie es selbst
Überprüfen Sie Ihre Pakete
Funktionsübersicht
Erste Schritte
API-Dokumentation
Unterstützung mehrerer Plattformen
Unterstützte Netzwerkprotokolle
Datenverbindungsschicht (L2)
Netzwerkschicht (L3)
Transportschicht (L4)
Sitzungsschicht (L5)
Präsentationsschicht (L6)
Anwendungsschicht (L7)
DPDK- und PF_RING-Unterstützung
Benchmarks
Geben Sie Feedback
Mitwirken
Lizenz
Sie können zwischen dem Herunterladen von der GitHub-Release-Seite, der Verwendung eines Paketmanagers oder dem Erstellen von PcapPlusPlus selbst wählen. Weitere Informationen finden Sie auf der Download-Seite auf der PcapPlusPlus-Website.
https://github.com/seladb/PcapPlusPlus/releases/latest
brew installiere pcapplusplus
Homebrew-Formeln: https://formulae.brew.sh/formula/pcapplusplus
Windows:
.vcpkg install pcapplusplus
MacOS/Linux:
vcpkg install pcapplusplus
Vcpkg-Port: https://github.com/microsoft/vcpkg/tree/master/ports/pcapplusplus
conan install "pcapplusplus/[>0]@" -u
Das Paket im ConanCenter: https://conan.io/center/pcapplusplus
Klonen Sie das Git-Repository:
Git-Klon https://github.com/seladb/PcapPlusPlus.git
Befolgen Sie die Build-Anweisungen entsprechend Ihrer Plattform auf der Seite „Build From Source“ auf der PcapPlusPlus-Website.
PcapPlusPlus-Releases, die neuer als v23.09 sind, sind mit GitHub-Bestätigung signiert. Alle Bescheinigungen finden Sie hier. Sie können die Bescheinigung dieser Pakete mit der GitHub-CLI überprüfen. Um Pakete zu überprüfen, können Sie den neuesten Anweisungen von gh attestation verify folgen. Für einfache Anweisungen können Sie den folgenden Befehl verwenden:
gh attestation verify <path-to-package-file> --repository seladb/PcapPlusPlus
und Sie sollten die folgende Ausgabe in Ihrem Terminal sehen:
✓ Verifizierung erfolgreich!
Paketerfassung über einen benutzerfreundlichen C++-Wrapper für gängige Paketerfassungs-Engines wie libpcap, WinPcap, Npcap, Intel DPDK, eBPF AF_XDP, ntops PF_RING und Raw Sockets [Weitere Informationen]
Paketanalyse und -erstellung einschließlich detaillierter Analyse von Protokollen und Schichten, Paketgenerierung und Paketbearbeitung für eine Vielzahl von Netzwerkprotokollen [Weitere Informationen]
Lesen und Schreiben von Paketen aus/in Dateien im PCAP- und PCAPNG -Format [Weitere Informationen]
Paketverarbeitung in Line-Rate durch einen effizienten und benutzerfreundlichen C++-Wrapper für DPDK, eBPF AF_XDP und PF_RING [Weitere Informationen]
Multiplattform-Unterstützung – PcapPlusPlus wird vollständig auf Linux, MacOS, Windows, Android und FreeBSD unterstützt
Paket-Reassemblierung – einzigartige Implementierung der TCP-Reassemblierung , die TCP-Neuübertragung, TCP-Pakete außerhalb der Reihenfolge und fehlende TCP-Daten sowie IP-Fragmentierung und -Defragmentierung umfasst, um IPv4- und IPv6-Fragmente zu erstellen und wieder zusammenzusetzen. [Weitere Informationen]
Paketfilterung , die die BPF-Filter von libpcap viel benutzerfreundlicher macht [Weitere Informationen]
TLS-Fingerprinting – eine C++-Implementierung von JA3 und JA3S TLS-Fingerprinting [Weitere Informationen]
Das Schreiben von Bewerbungen mit PcapPlusPlus ist sehr einfach und intuitiv. Hier ist eine einfache Anwendung, die zeigt, wie man ein Paket aus einer PCAP-Datei liest und analysiert:
#include <iostream>#include "IPv4Layer.h"#include "Packet.h"#include "PcapFileDevice.h"int main(int argc, char* argv[]) {// Öffnen Sie eine PCAP-Datei zum Lesenpcpp::PcapFileReaderDevice reader("1_packet.pcap");if (!reader.open()) { std::cerr << „Fehler beim Öffnen der PCAP-Datei“ << std::endl;return 1; }// das erste (und einzige) Paket aus der Datei lesenpcpp::RawPacket rawPacket;if (!reader.getNextPacket(rawPacket)) { std::cerr << „Das erste Paket in der Datei konnte nicht gelesen werden“ << std::endl;return 1; }// das Rohpaket in ein geparstes Paket analysierenpcpp::Packet parsedPacket(&rawPacket);// überprüfen, ob das Paket IPv4 istif (parsedPacket.isPacketOfType(pcpp::IPv4)) {// Quelle und Ziel extrahieren IPspcpp::IPv4Address srcIP = parsedPacket.getLayerOfType<pcpp::IPv4Layer>()->getSrcIPv4Address(); pcpp::IPv4Address destIP = parsedPacket.getLayerOfType<pcpp::IPv4Layer>()->getDstIPv4Address();// Quelle und Ziel ausgeben IPsstd::cout << "Source IP is '" << srcIP << "'; Dest IP ist '" << destIP << "'" << std::endl; }// schließe die Dateireader.close();return 0; }
Weitere Informationen finden Sie auf der Seite „Erste Schritte“ auf der PcapPlusPlus-Website. Diese Seite führt Sie durch einige einfache Schritte, um eine App zum Laufen zu bringen.
PcapPlusPlus besteht aus 3 Bibliotheken:
Packet++ – eine Bibliothek zum Parsen, Erstellen und Bearbeiten von Netzwerkpaketen
Pcap++ – eine Bibliothek zum Abfangen und Senden von Paketen, zur Bereitstellung von Netzwerk- und NIC-Informationen, Statistiken usw. Es handelt sich eigentlich um einen C++-Wrapper für Paketerfassungs-Engines wie libpcap, WinPcap, Npcap, DPDK und PF_RING
Common++ – eine Bibliothek mit einigen allgemeinen Code-Dienstprogrammen, die sowohl von Packet++ als auch von Pcap++ verwendet werden
Eine ausführliche API-Dokumentation finden Sie im Abschnitt API-Dokumentation auf der PcapPlusPlus-Website. Sollten Ihnen fehlende Daten auffallen, kontaktieren Sie uns bitte.
PcapPlusPlus wird derzeit unter Windows unterstützt
PcapPlusPlus unterstützt derzeit das Parsen, Bearbeiten und Erstellen von Paketen der folgenden Protokolle:
Ethernet II
IEEE 802.3 Ethernet
LLC (nur BPDU unterstützt)
Null/Loopback
Paket-Trailer (auch bekannt als Fußzeile oder Polsterung)
PPPoE
SLL (Linux gekochte Erfassung)
SLL2 (Linux Cooked Capture v2)
STP
VLAN
VXLAN
Wake-on-LAN (WoL)
NFLOG (Linux Netfilter NFLLOG) – nur Parsen (keine Bearbeitungsfunktionen)
ARP
GRE
ICMP
ICMPv6
IGMP (IGMPv1, IGMPv2 und IGMPv3 werden unterstützt)
IPv4
IPv6
MPLS
NDP
Roh-IP (IPv4 und IPv6)
VRRP (IPv4 und IPv6)
WireGuard
COTP
GTP (v1)
IPSec AH & ESP – nur Parsen (keine Bearbeitungsfunktionen)
TCP
TPKT
UDP
SDP
SCHLUCK
SSL/TLS – nur Parsen (keine Bearbeitungsfunktionen)
ASN.1-Decoder und Encoder
BGP (v4)
DHCP
DHCPv6
DNS
FTP
HTTP-Header (Anfrage & Antwort)
LDAP
NTP (v3, v4)
Radius
S7-Kommunikation (S7comm)
SMTP
EINIGE/IP
SSH – nur Parsen (keine Bearbeitungsfunktionen)
Telnet – nur Parsen (keine Bearbeitungsfunktionen)
Generische Nutzlast
Das Data Plane Development Kit (DPDK) ist eine Reihe von Data-Plane-Bibliotheken und Netzwerkschnittstellen-Controller-Treibern für eine schnelle Paketverarbeitung.
PF_RING™ ist ein neuer Netzwerk-Socket-Typ, der die Paketerfassungsgeschwindigkeit erheblich verbessert.
Beide Frameworks bieten eine sehr schnelle Paketverarbeitung (bis zur Leitungsgeschwindigkeit) und werden in vielen Netzwerkanwendungen wie Routern, Firewalls, Load Balancern usw. verwendet. PcapPlusPLus bietet eine C++-Abstraktionsschicht über DPDK und PF_RING. Diese Abstraktionsschicht bietet eine benutzerfreundliche Schnittstelle, die einen Großteil der mit der Verwendung dieser Frameworks verbundenen Grundkenntnisse überflüssig macht. Weitere Informationen finden Sie auf den DPDK- und PF_RING-Supportseiten auf der PcapPlusPlus-Website.
Wir haben Matias Fontaninis Packet-Capture-Benchmarks-Projekt verwendet, um die Leistung von PcapPlusPlus mit anderen ähnlichen C++-Bibliotheken (wie libtins
und libcrafter
) zu vergleichen.
Sie können die Ergebnisse auf der Benchmarks-Seite auf der PcapPlusPlus-Website sehen.
Über Feedback würden wir uns sehr freuen. Bitte kontaktieren Sie uns auf einem der folgenden Wege:
Öffnen Sie ein GitHub-Ticket
Veröffentlichen Sie eine Nachricht in der PcapPlusPlus-Google-Gruppe: https://groups.google.com/d/forum/pcapplusplus-support
Stellen Sie eine Frage zu Stack Overflow: https://stackoverflow.com/questions/tagged/pcapplusplus
Senden Sie eine E-Mail an: [email protected]
Folgen Sie uns auf X: https://x.com/seladb
Wenn Ihnen dieses Projekt gefällt , markieren Sie uns bitte auf GitHub – es hilft! ⭐ ⭐
Bitte besuchen Sie die PcapPlusPlus-Website, um mehr zu erfahren.
Wir würden uns sehr über jeden Beitrag zu diesem Projekt freuen. Wenn Sie daran interessiert sind, einen Beitrag zu leisten, besuchen Sie bitte die Beitragsseite auf der PcapPlusPlus-Website.
PcapPlusPlus wird unter der Unlicense-Lizenz veröffentlicht.