
PcapPlusPlus v26.07
クロスプラットフォームのC++ライブラリで、高性能なネットワークパケットキャプチャ、解析、生成、分析を実現します。libpcap、DPDK、AF_XDP、PF_RINGをサポートし、TCP再構成、TLSフィンガープリンティング、プロトコルデコードを含みます。
⚠️ 注意: この翻訳は AI を使用して維持・同期されており、最新の英語版と差異がある可能性があります。誤りを見つけられた場合は、GitHub の Issue を作成するか、PR を提出してください。
PcapPlusPlus は、ネットワークパケットのキャプチャ、解析、生成を行うためのマルチプラットフォーム C++ ライブラリです。効率的かつ強力で、使いやすく設計されています。
PcapPlusPlus は、多種多様なネットワークプロトコルのデコードと生成機能を提供します。また、libpcap、WinPcap、Npcap、DPDK、eBPF AF_XDP、WinDivert、PF_RING など、最も人気のあるパケット処理エンジンに対する使いやすい C++ ラッパーも提供します。
翻訳: English · 正體中文 · 한국어 · 日本語 · Русский
目次
- 目次
- ダウンロード
- 機能概要
- はじめに
- API ドキュメント
- マルチプラットフォーム対応
- サポートされるネットワークプロトコル
- DPDK と PF_RING のサポート
- ベンチマーク
- フィードバックの提供
- コントリビューション
- ライセンス
ダウンロード
GitHub のリリースページからダウンロードするか、パッケージマネージャーを使用するか、PcapPlusPlus を自分でビルドすることができます。詳細については、PcapPlusPlus ウェブサイトの ダウンロード ページをご覧ください。
GitHub リリースページ
https://github.com/seladb/PcapPlusPlus/releases/latest
Homebrew
brew install pcapplusplus
Homebrew formulae: 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
ConanCenter のパッケージ: https://conan.io/center/pcapplusplus
自分でビルドする
git リポジトリをクローンします:
git clone https://github.com/seladb/PcapPlusPlus.git
PcapPlusPlus ウェブサイトの ソースからビルド ページで、お使いのプラットフォームに応じたビルド手順に従ってください。
パッケージの検証
v23.09 より新しい PcapPlusPlus のリリースは、GitHub の attestation で署名されています。すべての attestation は こちら で確認できます。GitHub CLI を使ってこれらのパッケージの attestation を検証できます。パッケージを検証するには、gh attestation verify の最新の手順に従ってください。シンプルな手順としては、次のコマンドを使用できます:
gh attestation verify <path-to-package-file> --repository seladb/PcapPlusPlus
ターミナルに次の出力が表示されるはずです:
✓ Verification succeeded!
機能概要
- パケットキャプチャ: libpcap、WinPcap、Npcap、Intel DPDK、eBPF AF_XDP、WinDivert、ntop の PF_RING、raw socket といった人気のパケットキャプチャエンジンに対する、使いやすい C++ ラッパーによるパケットキャプチャ [詳細]
- パケット解析と生成: 幅広い ネットワークプロトコル について、プロトコルとレイヤーの詳細な解析、パケット生成、パケット編集を含みます [詳細]
- ファイルからのパケットの読み書き: 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;
}
// raw パケットを解析済みパケットに変換する
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 は 3 つのライブラリで構成されています:
