README-ja.md
May 24, 2026 · View on GitHub
⚠️ 注意: この翻訳は 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 つのライブラリで構成されています:
- Packet++ - ネットワークパケットを解析・生成・編集するためのライブラリ
- Pcap++ - パケットの傍受と送信、ネットワークと NIC の情報、統計情報などを提供するライブラリ。実体は libpcap、WinPcap、Npcap、DPDK、AF_XDP、WinDivert、PF_RING といったパケットキャプチャエンジンの C++ ラッパーです
- Common++ - Packet++ と Pcap++ の両方で使用される共通のコードユーティリティを含むライブラリ
PcapPlusPlus ウェブサイトの API ドキュメントセクション で詳細な API ドキュメントを確認できます。 不足しているデータがあれば、ご連絡ください。
マルチプラットフォーム対応
PcapPlusPlus は現在
Windows
サポートされるネットワークプロトコル
PcapPlusPlus は現在、以下のプロトコルのパケットの解析、編集、生成をサポートしています:
データリンク層 (L2)
- Cisco HDLC
- Ethernet II
- IEEE 802.3 Ethernet
- LLC (BPDU のみサポート)
- Null/Loopback
- Packet trailer (footer または padding とも呼ばれる)
- PPPoE
- SLL (Linux cooked capture)
- SLL2 (Linux cooked capture v2)
- STP
- VLAN
- VXLAN
- Wake on LAN (WoL)
- NFLOG (Linux Netfilter NFLOG) - 解析のみ (編集機能なし)
ネットワーク層 (L3)
- ARP
- GRE
- ICMP
- ICMPv6
- IGMP (IGMPv1、IGMPv2、IGMPv3 をサポート)
- IPv4
- IPv6
- MPLS
- NDP
- Raw IP (IPv4 と IPv6)
- VRRP (IPv4 と IPv6)
- WireGuard
トランスポート層 (L4)
- COTP
- GTP (v1 と v2)
- IPSec AH と ESP - 解析のみ (編集機能なし)
- TCP
- TPKT
- UDP
セッション層 (L5)
- SDP
- SIP
プレゼンテーション層 (L6)
- SSL/TLS - 解析のみ (編集機能なし)
アプリケーション層 (L7)
- ASN.1 デコーダおよびエンコーダ
- BGP (v4)
- 暗号鍵デコーダ
- DHCP
- DHCPv6
- DNS
- DoIP
- FTP
- HTTP ヘッダ (リクエストとレスポンス)
- LDAP
- Modbus
- MySQL - 解析のみ (編集機能なし)
- NTP (v3, v4)
- PEM デコーダおよびエンコーダ
- PostgreSQL Wire Protocol (PGWire) - 解析のみ (編集機能なし)
- Radius
- S7 Communication (S7comm)
- SMTP
- SOME/IP
- SSH - 解析のみ (編集機能なし)
- Telnet - 解析のみ (編集機能なし)
- X509 証明書 - 解析のみ (編集機能なし)
- 汎用ペイロード
DPDK と PF_RING のサポート
The Data Plane Development Kit (DPDK) は、高速パケット処理のためのデータプレーンライブラリとネットワークインターフェースコントローラドライバ群です。
PF_RING™ は、パケットキャプチャ速度を劇的に向上させる新しいタイプのネットワークソケットです。
どちらのフレームワークも非常に高速なパケット処理 (ラインスピードまで) を提供し、ルーター、ファイアウォール、ロードバランサーなど多くのネットワークアプリケーションで使用されています。 PcapPlusPlus は DPDK と PF_RING の上に C++ の抽象化レイヤーを提供します。この抽象化レイヤーは、これらのフレームワークを利用する際に発生する多くのボイラープレートを取り除き、使いやすいインターフェースを提供します。詳細は、PcapPlusPlus ウェブサイトの DPDK と PF_RING のサポートページで確認できます。
ベンチマーク
PcapPlusPlus と他の類似 C++ ライブラリ (libtins や libcrafter など) のパフォーマンスを比較するために、Matias Fontanini 氏の packet-capture-benchmarks プロジェクトを使用しました。
結果は PcapPlusPlus ウェブサイトの ベンチマーク ページで確認できます。
フィードバックの提供
フィードバックを大歓迎いたします。以下のいずれかの方法でお気軽にご連絡ください:
- GitHub の Issue を作成する
- PcapPlusPlus の Google グループにメッセージを投稿する: https://groups.google.com/d/forum/pcapplusplus-support
- Stack Overflow で質問する: https://stackoverflow.com/questions/tagged/pcapplusplus
- メールを送る: pcapplusplus@gmail.com
- X でフォローする: https://x.com/seladb
このプロジェクトを気に入っていただけたら、GitHub でスターをお願いします — 大きな助けになります! :star: :star:
詳細は PcapPlusPlus ウェブサイト をご覧ください。
コントリビューション
このプロジェクトへの貢献を心より歓迎します。貢献にご興味があれば、PcapPlusPlus ウェブサイトの コントリビューションページ をご覧ください。
ライセンス
PcapPlusPlus は Unlicense ライセンス の下で公開されています。
