Skip to content

Latest commit

 

History

History
321 lines (235 loc) · 13.7 KB

README-zh-tw.md

File metadata and controls

321 lines (235 loc) · 13.7 KB

PcapPlusPlus 標誌

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

X 關注 GitHub Repo 星星

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

PcapPlusPlus 支援對多種網路協議進行解析和建構,並對常見的封包處理函式庫(如 libpcapWinPcapNpcapDPDKeBPF AF_XDPPF_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 和 PF_RING)的 C++ 封裝
  3. Common++ - 包含 Packet++ 和 Pcap++ 共用的一些通用程式碼工具函式庫

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

跨平台支援

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

支援的網路協定

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

資料連接層 (L2)

  1. Ethernet II
  2. IEEE 802.3 Ethernet
  3. LLC(僅支援 BPDU)
  4. Null/Loopback
  5. Packet trailer(又稱 footer 或 padding)
  6. PPPoE
  7. SLL(Linux 擷取協定)
  8. SLL2(Linux 擷取協定 v2)
  9. STP
  10. VLAN
  11. VXLAN
  12. Wake on LAN (WoL)
  13. 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. DHCP
  4. DHCPv6
  5. DNS
  6. FTP
  7. HTTP 標頭(請求和響應)
  8. LDAP
  9. NTP (v3, v4)
  10. Radius
  11. S7 通訊(S7comm)
  12. SMTP
  13. SOME/IP
  14. SSH - 僅支援解析(不支援編輯)
  15. Telnet - 僅支援解析(不支援編輯)
  16. 通用酬載(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 上為我們按下星星 — 這對我們非常有幫助! ⭐ ⭐

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

貢獻

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

授權條款

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

GitHub