返回更新列表
新发布Jul 23, 2026

PcapPlusPlus v26.07

跨平台C++库,用于高性能网络数据包捕获、解析、构建和分析。支持libpcap、DPDK、AF_XDP、PF_RING,并包含TCP重组、TLS指纹识别和协议解码。

分享

⚠️ 注意: 本翻譯由 AI 協助維護與同步,可能與最新的英文版本存在差異。若您發現任何錯誤,歡迎開立 GitHub issue 或提交 PR。

PcapPlusPlus 標誌

GitHub 工作流程狀態 GitHub 工作流程狀態 Codecov OpenSSF Scorecard GitHub 貢獻者

X 關注 GitHub Repo 星星

PcapPlusPlus 是一個跨平台的 C++ 函式庫,提供高效、強大且易於使用的功能,來進行網路封包的擷取、解析和生成。

PcapPlusPlus 支援對多種網路協議進行解析和建構,並對常見的封包處理函式庫(如 libpcap、WinPcap、Npcap、DPDK、eBPF AF_XDP、WinDivert 和 PF_RING)提供 C++ 的封裝函式。

翻譯: English · 正體中文 · 한국어 · 日本語 · Русский

目錄

下載

您可以從 GitHub 發佈頁面下載,使用套件管理器來下載,或自行建構 PcapPlusPlus。更多詳情請參考 下載 頁面。

GitHub 全部下載

GitHub 發佈頁面

https://github.com/seladb/PcapPlusPlus/releases/latest

Homebrew

brew install pcapplusplus

Homebrew 套件頁面: https://formulae.brew.sh/formula/pcapplusplus

Vcpkg

Windows:

.\vcpkg install pcapplusplus

MacOS/Linux:

vcpkg install pcapplusplus

Vcpkg 套件頁面: https://github.com/microsoft/vcpkg/tree/master/ports/pcapplusplus

Conan

conan install "pcapplusplus/[>0]@" -u

Conan 套件頁面: https://conan.io/center/pcapplusplus

自行建置

取得 git repo:

git clone https://github.com/seladb/PcapPlusPlus.git

根據您的平台,請遵循 從原始碼建置 頁面中的指示進行建置。

驗證您的套件

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[])
{
    // 打開一個 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);

    // 確認封包是 IPv4 封包
    if (parsedPacket.isPacketOfType(pcpp::IPv4))
    {
        // 提取源 IP 和目的 IP
        pcpp::IPv4Address srcIP = parsedPacket.getLayerOfType<pcpp::IPv4Layer>()->getSrcIPv4Address();
        pcpp::IPv4Address destIP = parsedPacket.getLayerOfType<pcpp::IPv4Layer>()->getDstIPv4Address();

        // 輸出源 IP 和目的 IP
        std::cout << "來源 IP: '" << srcIP << "'; 目的 IP: '" << destIP << "'" << std::endl;
    }

    // 關閉檔案
    reader.close();

    return 0;
}

您可以在 PcapPlusPlus 網站的 快速入門指南 中找到更多資訊。該頁面會帶您通過幾個簡單的步驟,讓您的應用程式快速運行起來。

API 文件

PcapPlusPlus 包含三個函式庫:

  1. Packet++ - 用於解析、創建和編輯網路封包的函式庫
  2. Pcap++ - 用於攔截和發送封包、提供網路和網卡資訊、統計等功能的函式庫。實際上是對封包擷取引擎(如 libpcap、WinPcap、Npcap、DPDK、AF_XDP、WinDivert 和 PF_RING)的 C++ 封裝
  3. Common++ - 包含 Packet++ 和 Pcap++ 共用的一些通用程式碼工具函式庫

您可以在 PcapPlusPlus 網站的 API 文件區 找到詳細的 API 文件。如果您發現有任何遺漏的資料,請聯繫我們。

跨平台支援

分类