README-zh-tw.md

May 24, 2026 · View on GitHub

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

PcapPlusPlus 標誌

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

X 關注 GitHub Repo 星星

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

PcapPlusPlus 支援對多種網路協議進行解析和建構,並對常見的封包處理函式庫(如 libpcapWinPcapNpcapDPDKeBPF AF_XDPWinDivertPF_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 文件。如果您發現有任何遺漏的資料,請聯繫我們

跨平台支援

PcapPlusPlus 目前支援以下平台: Windows , Linux , MacOS , Android FreeBSD 。 請訪問 PcapPlusPlus 網站查看所有支援的平台,並參考下載區開始在您的平台上使用 PcapPlusPlus。

支援的網路協定

PcapPlusPlus 目前支援解析、編輯和建構以下網路協定的封包:

資料連接層 (L2)

  1. Cisco HDLC
  2. Ethernet II
  3. IEEE 802.3 Ethernet
  4. LLC(僅支援 BPDU)
  5. Null/Loopback
  6. Packet trailer(又稱 footer 或 padding)
  7. PPPoE
  8. SLL(Linux 擷取協定)
  9. SLL2(Linux 擷取協定 v2)
  10. STP
  11. VLAN
  12. VXLAN
  13. Wake on LAN (WoL)
  14. NFLOG(Linux Netfilter NFLOG)- 僅支援解析(不支援編輯)

網路層 (L3)

  1. ARP
  2. GRE
  3. ICMP
  4. ICMPv6
  5. IGMP(支援 IGMPv1、IGMPv2 和 IGMPv3)
  6. IPv4
  7. IPv6
  8. MPLS
  9. NDP
  10. Raw IP(IPv4 和 IPv6)
  11. VRRP(IPv4 和 IPv6)
  12. WireGuard

傳輸層 (L4)

  1. COTP
  2. GTP (v1 & v2)
  3. IPSec AH 和 ESP - 僅支援解析(不支援編輯)
  4. TCP
  5. TPKT
  6. UDP

對話層 (L5)

  1. SDP
  2. SIP

表示層 (L6)

  1. SSL/TLS - 僅支援解析(不支援編輯)

應用層 (L7)

  1. ASN.1 編碼器與解碼器
  2. BGP (v4)
  3. 加密金鑰解碼器
  4. DHCP
  5. DHCPv6
  6. DNS
  7. DoIP
  8. FTP
  9. HTTP 標頭(請求和響應)
  10. LDAP
  11. Modbus
  12. MySQL - 僅支援解析(不支援編輯)
  13. NTP (v3, v4)
  14. PEM 編碼器與解碼器
  15. PostgreSQL Wire Protocol (PGWire) - 僅支援解析(不支援編輯)
  16. Radius
  17. S7 通訊(S7comm)
  18. SMTP
  19. SOME/IP
  20. SSH - 僅支援解析(不支援編輯)
  21. Telnet - 僅支援解析(不支援編輯)
  22. X509 憑證 - 僅支援解析(不支援編輯)
  23. 通用酬載(Generic Payload)

DPDK 和 PF_RING 支援

DPDK (The Data Plane Development Kit) 是一套用於高速封包處理的資料平面函式庫和網路介面卡驅動。

PF_RING™ 是一種新型網路套接字,能顯著提升封包擷取速度。

這兩個框架提供了非常快速的封包處理(幾乎是線性的),並廣泛應用於路由器、防火牆、負載平衡器等網路應用中。PcapPlusPlus 提供了對 DPDK 和 PF_RING 的 C++ 抽象層,這個抽象層簡化了使用這些框架的繁瑣流程。您可以在 PcapPlusPlus 網站的 DPDKPF_RING 支援頁面了解更多資訊。

基準測試

我們使用了 Matias Fontanini 的 packet-capture-benchmarks 專案來比較 PcapPlusPlus 與其他類似的 C++ 函式庫(如 libtinslibcrafter)的效能。

您可以在 PcapPlusPlus 網站的 基準測試 頁面查看測試結果。

提供回饋

我們非常樂意收到您的回饋,請通過以下任一方式與我們聯繫:

如果您喜歡這個專案,請在 GitHub 上為我們按下星星 — 這對我們非常有幫助! :star: :star:

請訪問 PcapPlusPlus 網站 瞭解更多資訊。

貢獻

我們非常感謝您對此專案的任何貢獻。如果您有興趣參與貢獻,請訪問 PcapPlusPlus 網站上的 貢獻頁面

授權條款

PcapPlusPlus 是根據 Unlicense 授權條款 發佈的。

GitHub