
PcapPlusPlus v26.07
مكتبة C++ متعددة المنصات لالتقاط حزم الشبكة عالية الأداء، وتحليلها، وتشكيلها، وفحصها. تدعم libpcap، DPDK، AF_XDP، PF_RING، وتتضمن إعادة تجميع TCP، وبصمة TLS، وفك تشفير البروتوكولات.
PcapPlusPlus هي مكتبة متعددة المنصات بلغة C++ لالتقاط وتحليل وإنشاء حزم الشبكة. صممت لتكون فعالة وقوية وسهلة الاستخدام.
تمكِّن PcapPlusPlus من فك تشفير وتشكيل مجموعة كبيرة من بروتوكولات الشبكة. كما توفر أغلفة سهلة الاستخدام بلغة C++ لأشهر محركات معالجة الحزم مثل libpcap, WinPcap, Npcap, DPDK, eBPF AF_XDP, WinDivert وPF_RING.
الترجمات: الإنجليزية · 正體中文 · 한국어 · 日本語 · Русский
جدول المحتويات
- جدول المحتويات
- تنزيل
- نظرة عامة على الميزات
- بدء الاستخدام
- توثيق API
- دعم المنصات المتعددة
- بروتوكولات الشبكة المدعومة
- دعم DPDK وPF_RING
- المقاييس
- تقديم الملاحظات
- المساهمة
- الترخيص
تنزيل
يمكنك الاختيار بين التنزيل من صفحة إصدارات GitHub، أو استخدام مدير حزم، أو بناء PcapPlusPlus بنفسك. لمزيد من التفاصيل، يرجى زيارة صفحة التنزيل في موقع PcapPlusPlus.
صفحة الإصدارات على GitHub
https://github.com/seladb/PcapPlusPlus/releases/latest
Homebrew
brew install pcapplusplus
صيغ Homebrew: https://formulae.brew.sh/formula/pcapplusplus
Vcpkg
ويندوز:
.\vcpkg install pcapplusplus
ماك/لينكس:
vcpkg install pcapplusplus
منفذ Vcpkg: https://github.com/microsoft/vcpkg/tree/master/ports/pcapplusplus
Conan
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!
نظرة عامة على الميزات
- التقاط الحزم من خلال غلاف C++ سهل الاستخدام لمحركات التقاط الحزم الشهيرة مثل libpcap, WinPcap, Npcap, Intel DPDK, eBPF AF_XDP, WinDivert, PF_RING من ntop وsockets الخام [المزيد]
- تحليل وإنشاء الحزم بما في ذلك التحليل المفصل للبروتوكولات والطبقات، وتوليد الحزم وتحريرها لمجموعة كبيرة من بروتوكولات الشبكة [المزيد]
- قراءة وكتابة الحزم من/إلى الملفات بصيغتي PCAP و__PCAPNG__ [المزيد]
- معالجة الحزم بسرعة الخط من خلال غلاف C++ فعال وسهل الاستخدام لـ DPDK, eBPF AF_XDP وPF_RING [المزيد]
- دعم متعدد المنصات - PcapPlusPlus مدعومة بالكامل على Linux وMacOS وWindows وAndroid وFreeBSD
- إعادة تجميع الحزم - تطبيق فريد لـ إعادة تجميع TCP والذي يتضمن إعادة إرسال TCP وحزم TCP خارج الترتيب وبيانات TCP المفقودة، و__تجزئة IP وإعادة التجميع__ لإنشاء وتجميع أجزاء IPv4 وIPv6 [المزيد]
- تصفية الحزم التي تجعل مرشحات BPF الخاصة بـ libpcap أكثر سهولة [المزيد]
- بصمة TLS - تنفيذ C++ لبصمة JA3 وJA3S الخاصة بـ TLS [المزيد]
بدء الاستخدام
كتابة التطبيقات باستخدام 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;
}
// 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;
}
يمكنك العثور على مزيد من المعلومات في صفحة بدء الاستخدام في موقع PcapPlusPlus. ستأخذك هذه الصفحة عبر بضع خطوات سهلة لتشغيل تطبيق.
توثيق API
تتكون PcapPlusPlus من 3 مكتبات:
- Packet++ - مكتبة لتحليل وإنشاء وتحرير حزم الشبكة
- Pcap++ - مكتبة لاعتراض وإرسال الحزم، وتوفير معلومات الشبكة وNIC والإحصائيات، إلخ. وهي في الواقع غلاف C++ لمحركات التقاط الحزم مثل libpcap وWinPcap وNpcap وDPDK وAF_XDP وWinDivert وPF_RING
- Common++ - مكتبة تحتوي على بعض أدوات التعليمات البرمجية الشائعة المستخدمة من قبل كل من Packet++ وPcap++
يمكنك العثور على توثيق شامل لـ API في قسم توثيق API في موقع PcapPlusPlus. إذا رأيت أي بيانات مفقودة، يرجى الاتصال بنا.
دعم المنصات المتعددة
PcapPlusPlus مدعومة حالياً على
Windows
بروتوكولات الشبكة المدعومة
تدعم PcapPlusPlus حالياً تحليل وتحرير وإنشاء حزم البروتوكولات التالية:
طبقة ربط البيانات (L2)
- Cisco HDLC
- Ethernet II
- IEEE 802.3 Ethernet
- LLC (فقط BPDU مدعوم)
- Null/Loopback
- Packet trailer (المعروف أيضاً باسم footer أو padding)
- PPPoE
- SLL (Linux cooked capture)
- SLL2 (Linux cooked capture v2)
- STP
- VLAN
- VXLAN
- Wake on LAN (WoL)
- NFLOG (Linux Netfilter NFLOG) - تحليل فقط (لا توجد إمكانيات تحرير)
طبقة الشبكة (L3)
- ARP
- GRE
- ICMP
- ICMPv6
- IGMP (IGMPv1 وIGMPv2 وIGMPv3 مدعومة)
- IPv4
- IPv6
- MPLS
- NDP
- Raw IP (IPv4 & IPv6)
- VRRP (IPv4 & IPv6)
- WireGuard
طبقة النقل (L4)
- COTP
- GTP (v1 & v2)
- IPSec AH & ESP - تحليل فقط (لا توجد إمكانيات تحرير)
- TCP
- TPKT
- UDP
طبقة الجلسة (L5)
- SDP
- SIP
طبقة العرض (L6)
- SSL/TLS - تحليل فقط (لا توجد إمكانيات تحرير)
طبقة التطبيق (L7)
- مفكك ومشفر ASN.1
- BGP (v4)
- مفككات المفاتيح المشفرة
- DHCP
- DHCPv6
- DNS
- DoIP
- FTP
- رؤوس HTTP (طلب واستجابة)
- LDAP
- Modbus
- MySQL - تحليل فقط (لا توجد إمكانيات تحرير)
- NTP (v3, v4)
- مفكك ومشفر PEM
- PostgreSQL Wire Protocol (PGWire) - تحليل فقط (لا توجد إمكانيات تحرير)
- Radius
- S7 Communication (S7comm)
- SMTP
- SOME/IP
- SSH - تحليل فقط (لا توجد إمكانيات تحرير)
- Telnet - تحليل فقط (لا توجد إمكانيات تحرير)
- شهادات X509 - تحليل فقط (لا توجد إمكانيات تحرير)
- الحمولة العامة
دعم DPDK وPF_RING
حزمة تطوير مستوى البيانات (DPDK) هي مجموعة من مكتبات مستوى البيانات وبرامج تشغيل وحدات تحكم واجهة الشبكة لمعالجة الحزم السريعة.
PF_RING™ هو نوع جديد من مآخذ الشبكة يحسن بشكل كبير سرعة التقاط الحزم.
يوفر كلا الإطارين معالجة سريعة جداً للحزم (تصل إلى سرعة الخط) ويستخدمان في العديد من تطبيقات الشبكة مثل أجهزة التوجيه وجدران الحماية وموازنات التحميل، إلخ. توفر PcapPlusPlus طبقة تجريد بلغة C++ فوق DPDK وPF_RING. توفر طبقة التجريد هذه واجهة سهلة الاستخدام تزيل الكثير من الأعمال التحضيرية المشاركة في استخدام هذه الأطر. يمكنك معرفة المزيد من خلال زيارة صفحات دعم DPDK وPF_RING في موقع PcapPlusPlus.
المقاييس
استخدمنا مشروع Matias Fontanini packet-capture-benchmarks لمقارنة أداء PcapPlusPlus مع مكتبات C++ أخرى مماثلة (مثل libtins و libcrafter).
يمكنك رؤية النتائج في صفحة المقاييس في موقع PcapPlusPlus.
تقديم الملاحظات
سنكون سعداء جداً بتلقي الملاحظات، فلا تتردد في التواصل معنا بأي من الطرق التالية:
- فتح تذكرة GitHub
- نشر رسالة في مجموعة PcapPlusPlus على Google: https://groups.google.com/d/forum/pcapplusplus-support
- طرح سؤال على Stack Overflow: https://stackoverflow.com/questions/tagged/pcapplusplus
- إرسال بريد إلكتروني إلى: [email protected]
- متابعتنا على X: https://x.com/seladb
إذا أعجبك هذا المشروع، يرجى منحنا نجمة على GitHub — فهذا يساعد! ⭐ ⭐
يرجى زيارة موقع PcapPlusPlus لمعرفة المزيد.
المساهمة
نقدر أي مساهمة في هذا المشروع. إذا كنت مهتماً بالمساهمة، يرجى زيارة صفحة المساهمة في موقع PcapPlusPlus.
الترخيص
PcapPlusPlus مُصدرة تحت ترخيص Unlicense.
