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.
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.
brew install pcapplusplus
Homebrew-Formel: https://formulae.brew.sh/formula/pcapplusplus
Windows:
.\vcpkg install pcapplusplus
MacOS/Linux:
vcpkg install pcapplusplus
conan install "pcapplusplus/[>0]@" -u
Das Paket in ConanCenter: https://conan.io/center/pcapplusplus
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.
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!
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.
PcapPlusPlus besteht aus 3 Bibliotheken:
Eine umfassende API-Dokumentation finden Sie im API-Dokumentationsbereich der PcapPlusPlus-Website. Wenn Ihnen Daten fehlen, kontaktieren Sie uns bitte.
PcapPlusPlus wird derzeit auf
Windows
PcapPlusPlus unterstützt derzeit das Analysieren, Bearbeiten und Erstellen von Paketen der folgenden Protokolle:
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.
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.
Wir freuen uns über jedes Feedback. Bitte zögern Sie nicht, uns auf einem der folgenden Wege zu kontaktieren:
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.
Wir würden uns über jeden Beitrag zu diesem Projekt sehr freuen. Wenn Sie interessiert sind, besuchen Sie die Beitragsseite auf der PcapPlusPlus-Website.
PcapPlusPlus wird unter der Unlicense-Lizenz veröffentlicht.