مكتبة C++ متعددة المنصات لالتقاط حزم الشبكة عالية الأداء، وتحليلها، وتشكيلها، وفحصها. تدعم libpcap، DPDK، AF_XDP، PF_RING، وتتضمن إعادة تجميع TCP، وبصمة TLS، وفك تشفير البروتوكولات.
PcapPlusPlus هي مكتبة متعددة المنصات بلغة C++ لالتقاط وتحليل وإنشاء حزم الشبكة. صممت لتكون فعالة وقوية وسهلة الاستخدام.
تمكِّن PcapPlusPlus من فك تشفير وتشكيل مجموعة كبيرة من بروتوكولات الشبكة. كما توفر أغلفة سهلة الاستخدام بلغة C++ لأشهر محركات معالجة الحزم مثل libpcap, WinPcap, Npcap, DPDK, eBPF AF_XDP, WinDivert وPF_RING.
الترجمات: الإنجليزية · 正體中文 · 한국어 · 日本語 · Русский
يمكنك الاختيار بين التنزيل من صفحة إصدارات GitHub، أو استخدام مدير حزم، أو بناء PcapPlusPlus بنفسك. لمزيد من التفاصيل، يرجى زيارة صفحة التنزيل في موقع PcapPlusPlus.
https://github.com/seladb/PcapPlusPlus/releases/latest
brew install pcapplusplus
صيغ Homebrew: https://formulae.brew.sh/formula/pcapplusplus
ويندوز:
.\vcpkg install pcapplusplus
ماك/لينكس:
vcpkg install pcapplusplus
منفذ Vcpkg: https://github.com/microsoft/vcpkg/tree/master/ports/pcapplusplus
conan install "pcapplusplus/[>0]@" -u
الحزمة في ConanCenter: https://conan.io/center/pcapplusplus
استنساخ مستودع git:
git clone https://github.com/seladb/PcapPlusPlus.git
اتبع تعليمات البناء حسب منصتك في صفحة البناء من المصدر في موقع PcapPlusPlus.
إصدارات PcapPlusPlus الأحدث من v23.09 موقعة بشهادة GitHub. جميع الشهادات موجودة هنا. يمكنك التحقق من شهادة هذه الحزم باستخدام GitHub CLI. للتحقق من الحزم، يمكنك اتباع أحدث التعليمات من gh attestation verify. للتعليمات البسيطة، استخدم الأمر التالي:
gh attestation verify <path-to-package-file> --repository seladb/PcapPlusPlus
وسترى المخرجات التالية في الطرفية:
✓ Verification succeeded!
كتابة التطبيقات باستخدام PcapPlusPlus سهلة وبديهية للغاية. إليك تطبيق بسيط يوضح كيفية قراءة حزمة من ملف PCAP وتحليلها:
#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;
}