PcapPlusPlus 是一個多平台 C++ 函式庫,用於擷取、解析和製作網路資料包。它被設計為高效、強大且易於使用。
PcapPlusPlus 支援多種網路協定的解碼和偽造功能。它還為最受歡迎的資料包處理引擎(例如 libpcap、WinPcap、Npcap、DPDK、eBPF AF_XDP 和 PF_RING)提供易於使用的 C++ 包裝器。
目錄
下載
GitHub 發布頁面
自製
體積重量
柯南
自己建構
驗證您的包裹
功能概述
入門
API文件
多平台支援
支援的網路協定
資料鏈路層(L2)
網路層(L3)
傳輸層(L4)
會話層(L5)
表示層(L6)
應用層(L7)
DPDK 和 PF_RING 支持
基準測試
提供回饋
貢獻
執照
您可以選擇從 GitHub 發布頁面下載、使用套件管理器或自行建置 PcapPlusPlus。如欲了解更多詳情,請造訪 PcapPlusPlus 網站的下載頁面。
https://github.com/seladb/PcapPlusPlus/releases/latest
沖泡安裝pcapplusplus
自製公式:https://formulae.brew.sh/formula/pcapplusplus
視窗:
.vcpkg install pcapplusplus
MacOS/Linux:
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 克隆 https://github.com/seladb/PcapPlusPlus.git
根據您的平台,請按照 PcapPlusPlus 網站的「從原始碼建置」頁面中的建置說明進行操作。
更新於 v23.09 的 PcapPlusPlus 版本已使用 GitHub 證明進行簽章。所有的證明都可以在這裡找到。您可以使用 GitHub CLI 驗證這些套件的證明。若要驗證軟體包,您可以按照 gh attestation verify 的最新說明進行操作。對於簡單的說明,您可以使用以下命令:
gh 證明驗證 <套件檔案路徑> --repository seladb/PcapPlusPlus
您應該在終端機中看到以下輸出:
✓ 驗證成功!
透過易於使用的 C++ 包裝器進行資料包捕獲,適用於流行的資料包捕獲引擎,例如 libpcap、WinPcap、Npcap、Intel DPDK、eBPF AF_XDP、ntop 的 PF_RING 和原始套接字 [了解更多]
資料包解析和製作,包括對各種網路協定的協定和層的詳細分析、資料包產生和資料包編輯 [了解更多]
以PCAP和PCAPNG格式從檔案讀取資料包或將資料包寫入檔案[了解更多]
透過適用於 DPDK、eBPF AF_XDP 和 PF_RING 的高效且易於使用的 C++ 包裝器以線速進行封包處理[了解更多]
多平台支援- PcapPlusPlus 完全支援 Linux、MacOS、Windows、Android 和 FreeBSD
封包重組- TCP 重組的獨特實現,包括 TCP 重傳、亂序 TCP 封包和遺失的 TCP 數據,以及用於建立和重組 IPv4 和 IPv6 片段的IP 碎片和碎片整理[了解更多]
資料包過濾使 libpcap 的 BPF 過濾器更加用戶友好 [了解更多]
TLS 指紋辨識- JA3 和 JA3S TLS 指紋辨識的 C++ 實作 [了解更多]
使用 PcapPlusPlus 編寫應用程式非常簡單且直覺。這是一個簡單的應用程序,展示瞭如何從 PCAP 文件讀取資料包並解析它:
#include <iostream>#include "IPv4Layer.h"#include "Packet.h"#include "PcapFileDevice.h"int main(int argc, char* argv[]) {// 開啟一個pcap檔案進行讀取pcpp::PcapFileReaderDevice reader("1_packet.pcap");if (!reader.open()) { std::cerr << "開啟 pcap 檔案時發生錯誤" << std::endl;return 1; }// 從檔案中讀取第一個(也是唯一的)封包pcpp::RawPacket rawPacket;if (!reader.getNextPacket(rawPacket)) { std::cerr <<“無法讀取檔案中的第一個資料包”<< std::endl;return 1; }// 將原始封包解析為已解析封包pcpp::Packet parsedPacket(&rawPacket);// 驗證封包是 IPv4if (parsedPacket.isPacketOfType(pcpp::IPv4)) {// 提取來源和目標 IPspcpp::IPv4Address srcIP = parsedPacket.getLayerOfType<pcpp::IPv4Layer>()->getSrcIPv4Address(); pcpp::IPv4Address destIP = parsedPacket.getLayerOfType<pcpp::IPv4Layer>()->getDstIPv4Address();//列印來源和目標IPsstd::cout << "Source IP is '" << srcIP << "'; Dest IP 為'" << destIP << "'" << std::endl; }//關閉filereader.close();return 0; }
您可以在 PcapPlusPlus 網站的入門頁面中找到更多資訊。此頁面將引導您完成幾個簡單的步驟來啟動並執行應用程式。
PcapPlusPlus 由 3 個函式庫組成:
Packet++ - 用於解析、建立和編輯網路封包的庫
Pcap++ - 用於攔截和傳送封包、提供網路和 NIC 資訊、統計資訊等的函式庫。
Common++ - 一個包含 Packet++ 和 Pcap++ 使用的一些通用程式碼實用程式的函式庫
您可以在 PcapPlusPlus 網站的 API 文件部分找到豐富的 API 文件。如果您發現任何缺失數據,請聯絡我們。
PcapPlusPlus 目前在Windows上支援
PcapPlusPlus目前支援以下協定的資料包的解析、編輯與建立:
乙太網路II
IEEE 802.3 乙太網路
LLC(僅支援 BPDU)
空/環回
資料包尾部(又稱頁尾或填充)
PPPoE
SLL(Linux 熟捕獲)
SLL2(Linux 熟捕獲 v2)
直通車
虛擬區域網
VXLAN
區域網路喚醒 (WoL)
NFLOG (Linux Netfilter NFLOG) - 僅解析(無編輯功能)
ARP
GRE
ICMP
ICMPv6
IGMP(支援IGMPv1、IGMPv2和IGMPv3)
IPv4
IPv6
多協定標籤交換
新民主黨
原始 IP(IPv4 和 IPv6)
VRRP(IPv4 和 IPv6)
線衛
COTP
GTP(v1)
IPSec AH 和 ESP - 僅解析(無編輯功能)
傳輸控制協定
TPKT
UDP協定
社會發展計劃
啜飲
SSL/TLS - 僅解析(無編輯功能)
ASN.1 解碼器與編碼器
BGP(v4)
動態主機配置協定
DHCPv6
域名系統
文件傳輸協定
HTTP 標頭(請求和回應)
LDAP
NTP(v3、v4)
半徑
S7通訊(S7comm)
郵件傳輸協定
一些/IP
SSH - 僅解析(無編輯功能)
Telnet - 僅解析(無編輯功能)
通用有效負載
資料平面開發套件 (DPDK) 是一組用於快速資料包處理的資料平面庫和網路介面控制器驅動程式。
PF_RING™ 是一種新型網路套接字,可顯著提高封包擷取速度。
這兩個框架都提供非常快速的資料包處理(達到線速),並用於許多網路應用程序,例如路由器、防火牆、負載平衡器等。此抽象層提供了一個易於使用的介面,消除了使用這些框架時涉及的大量樣板檔案。您可以透過造訪 PcapPlusPlus 網站中的 DPDK 和 PF_RING 支援頁面了解更多資訊。
我們使用 Matias Fontanini 的封包擷取基準專案來比較 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 許可證下發布的。