
PcapPlusPlus v26.07
Plattformübergreifende C++-Bibliothek für leistungsstarke Netzwerkpaket-Erfassung, -Parsen, -Erstellung und -Analyse. Unterstützt libpcap, DPDK, AF_XDP, PF_RING und beinhaltet TCP-Reassemblierung, TLS-Fingerprinting und Protokoll-Dekodierung.
PcapPlusPlus ist eine plattformübergreifende C++-Bibliothek zum Erfassen, Analysieren und Erstellen von Netzwerkpaketen. Sie ist darauf ausgelegt, effizient, leistungsstark und einfach zu bedienen zu sein.
PcapPlusPlus bietet Dekodierungs- und Erstellungsfähigkeiten für eine große Vielfalt von Netzwerkprotokollen. Es bietet auch einfach zu bedienende C++-Wrapper für die gängigsten Paketverarbeitungs-Engines wie libpcap, WinPcap, Npcap, DPDK, eBPF AF_XDP, WinDivert und PF_RING.
Übersetzungen: Englisch · 正體中文 · 한국어 · 日本語 · Русский
Table Of Contents
- Table Of Contents
- Herunterladen
- Funktionsübersicht
- Erste Schritte
- API-Dokumentation
- Unterstützung mehrerer Plattformen
- Unterstützte Netzwerkprotokolle
- DPDK- und PF_RING-Unterstützung
- Benchmarks
- Feedback geben
- Mitwirken
- Lizenz
Herunterladen
Sie können zwischen dem Herunterladen von der GitHub-Release-Seite, der Verwendung eines Paketmanagers oder dem Selbstbau von PcapPlusPlus wählen. Weitere Details finden Sie auf der Download-Seite der PcapPlusPlus-Website.
GitHub Release Seite
https://github.com/seladb/PcapPlusPlus/releases/latest
Homebrew
brew install pcapplusplus
Homebrew-Formel: https://formulae.brew.sh/formula/pcapplusplus
Vcpkg
Windows:
.\vcpkg install pcapplusplus
MacOS/Linux:
vcpkg install pcapplusplus
Vcpkg-Port: https://github.com/microsoft/vcpkg/tree/master/ports/pcapplusplus
Conan
conan install "pcapplusplus/[>0]@" -u
Das Paket in ConanCenter: https://conan.io/center/pcapplusplus
Selbst bauen
Klonen Sie das Git-Repository:
git clone https://github.com/seladb/PcapPlusPlus.git
Folgen Sie den Bauanweisungen für Ihre Plattform auf der Seite Build From Source der PcapPlusPlus-Website.
Pakete verifizieren
PcapPlusPlus-Releases, die neuer als v23.09 sind, werden mit GitHub-Attestation signiert. Alle Attestationen finden Sie hier. Sie können die Attestation dieser Pakete mit der GitHub-CLI verifizieren. Um Pakete zu verifizieren, folgen Sie den aktuellsten Anweisungen von gh attestation verify. Für einfache Anweisungen verwenden Sie den folgenden Befehl:
gh attestation verify <pfad-zur-paketdatei> --repository seladb/PcapPlusPlus
und Sie sollten die folgende Ausgabe in Ihrem Terminal sehen:
✓ Verification succeeded!
Funktionsübersicht
- Paketerfassung durch einen einfach zu bedienenden C++-Wrapper für gängige Paketerfassungs-Engines wie libpcap, WinPcap, Npcap, Intel DPDK, eBPF AF_XDP, WinDivert, ntop’s PF_RING und Raw Sockets [Mehr erfahren]
- Paketanalyse und -erstellung einschließlich detaillierter Analyse von Protokollen und Schichten, Paketerzeugung und -bearbeitung für eine große Vielfalt von Netzwerkprotokollen [Mehr erfahren]
- Lesen und Schreiben von Paketen in/aus Dateien in den Formaten PCAP und PCAPNG [Mehr erfahren]
- Paketverarbeitung mit Leitungsgeschwindigkeit durch einen effizienten und einfach zu bedienenden C++-Wrapper für DPDK, eBPF AF_XDP und PF_RING [Mehr erfahren]
- Plattformübergreifende Unterstützung – PcapPlusPlus wird vollständig auf Linux, macOS, Windows, Android und FreeBSD unterstützt
- Paketwiederzusammenstellung – unique Implementierung der TCP-Wiederzusammenstellung, die TCP-Neuübertragungen, außer der Reihe liegende TCP-Pakete und fehlende TCP-Daten umfasst, sowie IP-Fragmentierung und -Defragmentierung zum Erstellen und Wiederzusammenstellen von IPv4- und IPv6-Fragmenten [Mehr erfahren]
- Paketfilterung, die die BPF-Filter von libpcap deutlich benutzerfreundlicher macht [Mehr erfahren]
- TLS-Fingerprinting – eine C++-Implementierung von JA3 und JA3S TLS-Fingerprinting [Mehr erfahren]
Erste Schritte
Das Schreiben von Anwendungen 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[])
{
// 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;
}
Weitere Informationen finden Sie auf der Seite Erste Schritte der PcapPlusPlus-Website. Diese Seite führt Sie in wenigen einfachen Schritten durch das Einrichten einer Anwendung.
API-Dokumentation
PcapPlusPlus besteht aus 3 Bibliotheken:
- Packet++ – eine Bibliothek zum Analysieren, Erstellen und Bearbeiten von Netzwerkpaketen
- Pcap++ – eine Bibliothek zum Abfangen und Senden von Paketen, die Netzwerk- und NIC-Informationen, Statistiken usw. bereitstellt. Es ist im Wesentlichen ein C++-Wrapper für Paketerfassungs-Engines wie libpcap, WinPcap, Npcap, DPDK, AF_XDP, WinDivert und PF_RING
- Common++ – eine Bibliothek mit einigen allgemeinen Code-Hilfsmitteln, die sowohl von Packet++ als auch von Pcap++ verwendet werden
Eine umfassende API-Dokumentation finden Sie im API-Dokumentationsbereich der PcapPlusPlus-Website. Wenn Ihnen Daten fehlen, kontaktieren Sie uns bitte.
Unterstützung mehrerer Plattformen
PcapPlusPlus wird derzeit auf
Windows
Unterstützte Netzwerkprotokolle
PcapPlusPlus unterstützt derzeit das Analysieren, Bearbeiten und Erstellen von Paketen der folgenden Protokolle:
Sicherungsschicht (L2)
- Cisco HDLC
- Ethernet II
- IEEE 802.3 Ethernet
- LLC (nur BPDU unterstützt)
- Null/Loopback
- Packet Trailer (auch Footer oder Padding genannt)
- PPPoE
- SLL (Linux cooked capture)
- SLL2 (Linux cooked capture v2)
- STP
- VLAN
- VXLAN
- Wake on LAN (WoL)
- NFLOG (Linux Netfilter NFLOG) – nur Analyse (keine Bearbeitung)
Vermittlungsschicht (L3)
- ARP
- GRE
- ICMP
- ICMPv6
- IGMP (IGMPv1, IGMPv2 und IGMPv3 werden unterstützt)
- IPv4
- IPv6
- MPLS
- NDP
- Raw IP (IPv4 & IPv6)
- VRRP (IPv4 & IPv6)
- WireGuard
Transportschicht (L4)
- COTP
- GTP (v1 & v2)
- IPSec AH & ESP – nur Analyse (keine Bearbeitung)
- TCP
- TPKT
- UDP
Sitzungsschicht (L5)
- SDP
- SIP
Darstellungsschicht (L6)
- SSL/TLS – nur Analyse (keine Bearbeitung)
Anwendungsschicht (L7)
- ASN.1-Decoder und -Encoder
- BGP (v4)
- Decoder für kryptografische Schlüssel
- DHCP
- DHCPv6
- DNS
- DoIP
- FTP
- HTTP-Header (Anfrage & Antwort)
- LDAP
- Modbus
- MySQL – nur Analyse (keine Bearbeitung)
- NTP (v3, v4)
- PEM-Decoder und -Encoder
- PostgreSQL Wire Protocol (PGWire) – nur Analyse (keine Bearbeitung)
- Radius
- S7 Communication (S7comm)
- SMTP
- SOME/IP
- SSH – nur Analyse (keine Bearbeitung)
- Telnet – nur Analyse (keine Bearbeitung)
- X509-Zertifikate – nur Analyse (keine Bearbeitung)
- Generische Nutzdaten
DPDK- und PF_RING-Unterstützung
The Data Plane Development Kit (DPDK) ist eine Reihe von Datenebenen-Bibliotheken und Netzwerkschnittstellen-Controller-Treibern für schnelle Paketverarbeitung.
PF_RING™ ist ein neuer Typ von Netzwerk-Socket, der die Paketerfassungsgeschwindigkeit drastisch verbessert.
Beide Frameworks bieten sehr schnelle Paketverarbeitung (bis zu Leitungsgeschwindigkeit) und werden in vielen Netzwerkanwendungen wie Routern, Firewalls, Lastverteilern usw. eingesetzt. PcapPlusPlus bietet eine C++-Abstraktionsschicht über DPDK & PF_RING. Diese Abstraktionsschicht bietet eine einfach zu bedienende Schnittstelle, die viel des Boilerplate-Codes entfernt, der bei der Verwendung dieser Frameworks anfällt. Weitere Informationen finden Sie auf den Unterstützungsseiten für DPDK und PF_RING auf der PcapPlusPlus-Website.
Benchmarks
Wir haben das Projekt packet-capture-benchmarks von Matias Fontanini verwendet, um die Leistung von PcapPlusPlus mit anderen ähnlichen C++-Bibliotheken (wie libtins und libcrafter) zu vergleichen.
Die Ergebnisse finden Sie auf der Benchmarks-Seite der PcapPlusPlus-Website.
Feedback geben
Wir freuen uns über jedes Feedback. Bitte zögern Sie nicht, uns auf einem der folgenden Wege zu kontaktieren:
- Eröffnen Sie ein GitHub-Ticket
- Posten Sie eine Nachricht in der PcapPlusPlus Google-Gruppe: https://groups.google.com/d/forum/pcapplusplus-support
- Stellen Sie eine Frage auf 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, bitte geben Sie uns einen Stern auf GitHub – das hilft! ⭐ ⭐
Besuchen Sie die PcapPlusPlus-Website, um mehr zu erfahren.
Mitwirken
Wir würden uns über jeden Beitrag zu diesem Projekt sehr freuen. Wenn Sie interessiert sind, besuchen Sie die Beitragsseite auf der PcapPlusPlus-Website.
Lizenz
PcapPlusPlus wird unter der Unlicense-Lizenz veröffentlicht.
