PcapPlusPlus は、ネットワーク パケットのキャプチャ、解析、作成のためのマルチプラットフォーム C++ ライブラリです。効率的で強力かつ使いやすいように設計されています。
PcapPlusPlus は、さまざまなネットワーク プロトコルのデコードおよび偽造機能を有効にします。また、libpcap、WinPcap、Npcap、DPDK、eBPF AF_XDP、PF_RING などの最も一般的なパケット処理エンジン用の使いやすい C++ ラッパーも提供します。
目次
ダウンロード
GitHub リリースページ
自作
Vcpkg
コナン
自分で構築する
パッケージを確認する
機能の概要
はじめる
APIドキュメント
マルチプラットフォームのサポート
サポートされているネットワークプロトコル
データリンク層(L2)
ネットワーク層(L3)
トランスポート層(L4)
セッション層(L5)
プレゼンテーション層 (L6)
アプリケーション層(L7)
DPDK および PF_RING のサポート
ベンチマーク
フィードバックを提供する
貢献する
ライセンス
GitHub リリース ページからダウンロードするか、パッケージ マネージャーを使用するか、PcapPlusPlus を自分で構築するかを選択できます。詳細については、PcapPlusPlus Web サイトのダウンロード ページをご覧ください。
https://github.com/seladb/PcapPlusPlus/releases/latest
醸造インストールpcapplusplus
自作の公式: https://formulae.brew.sh/formula/pcapplusplus
Windows:
.vcpkg install pcapplusplus
MacOS/Linux:
vcpkg install pcapplusplus
Vcpkg ポート: https://github.com/microsoft/vcpkg/tree/master/ports/pcapplusplus
conan install "pcapplusplus/[>0]@" -u
コナンセンターのパッケージ: https://conan.io/center/pcapplusplus
git リポジトリのクローンを作成します。
git クローン https://github.com/seladb/PcapPlusPlus.git
PcapPlusPlus Web サイトの「ソースからビルド」ページにある、プラットフォームに応じたビルド手順に従ってください。
v23.09 より新しい PcapPlusPlus リリースは、GitHub 証明書で署名されています。すべての証明書はここで見つけることができます。これらのパッケージの構成証明は、GitHub CLI を使用して検証できます。パッケージを検証するには、gh attestation verify の最新の手順に従ってください。簡単な手順については、次のコマンドを使用できます。
gh attestation verify <パッケージファイルへのパス> --repository seladb/PcapPlusPlus
ターミナルに次の出力が表示されるはずです。
✓ 検証に成功しました!
libpcap、WinPcap、Npcap、Intel DPDK、eBPF AF_XDP、ntop の PF_RING、raw ソケットなどの一般的なパケット キャプチャ エンジン用の使いやすい C++ ラッパーを介したパケット キャプチャ[詳細]
プロトコルとレイヤーの詳細な分析、多種多様なネットワーク プロトコルのパケット生成とパケット編集を含む、パケットの解析と作成[詳細]
PCAP 形式とPCAPNG形式の両方でファイルとの間でパケットの読み取りと書き込みを行う[詳細]
DPDK、eBPF AF_XDP、PF_RING 用の効率的で使いやすい C++ ラッパーによるライン レートでのパケット処理[詳細]
マルチプラットフォームのサポート- PcapPlusPlus は Linux、MacOS、Windows、Android、FreeBSD で完全にサポートされています
パケット再構成- TCP 再送信、順序が乱れた TCP パケットと欠落している TCP データ、および IPv4 および IPv6 フラグメントを作成して再構成するためのIP フラグメンテーションとデフラグを含むTCP 再構成の独自の実装 [詳細]
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; }// 生のパケットを解析済みのパケットに解析しますpcpp::Packet parsedPacket(&rawPacket);// パケットが IPv4if (parsedPacket.isPacketOfType(pcpp::IPv4)) であることを確認します {// 送信元と宛先の IPspcpp::IPv4Address を抽出します srcIP = parsedPacket.getLayerOfType<pcpp::IPv4Layer>()->getSrcIPv4Address(); pcpp::IPv4Address destIP = parsedPacket.getLayerOfType<pcpp::IPv4Layer>()->getDstIPv4Address();// 送信元と宛先の IP を出力しますsstd::cout << "送信元 IP は '" << srcIP << "'; Dest IP は '" << destIP << "" << std::endl; }// ファイルを閉じるreader.close();return 0; }
詳細については、PcapPlusPlus Web サイトの「はじめに」ページを参照してください。このページでは、アプリを起動して実行するための簡単な手順をいくつか説明します。
PcapPlusPlus は 3 つのライブラリで構成されています。
Packet++ - ネットワーク パケットを解析、作成、編集するためのライブラリ
Pcap++ - パケットをインターセプトおよび送信し、ネットワークおよび NIC 情報、統計情報などを提供するライブラリです。実際には、libpcap、WinPcap、Npcap、DPDK、PF_RING などのパケット キャプチャ エンジン用の C++ ラッパーです。
Common++ - Packet++ と Pcap++ の両方で使用されるいくつかの共通コード ユーティリティを備えたライブラリ
PcapPlusPlus Web サイトの API ドキュメント セクションで、広範な API ドキュメントを見つけることができます。不足しているデータを見つけた場合は、当社までご連絡ください。
PcapPlusPlus は現在Windowsでサポートされています
PcapPlusPlus は現在、次のプロトコルのパケットの解析、編集、作成をサポートしています。
イーサネットⅡ
IEEE 802.3イーサネット
LLC (BPDU のみサポート)
ヌル/ループバック
パケット トレーラー (フッターまたはパディングとも呼ばれます)
PPPoE
SLL (Linux クックド キャプチャ)
SLL2 (Linux クックド キャプチャ v2)
STP
VLAN
VXLAN
ウェイク オン LAN (WoL)
NFLOG (Linux Netfilter NFLOG) - 解析のみ (編集機能なし)
ARP
グレ
ICMP
ICMPv6
IGMP(IGMPv1、IGMPv2、IGMPv3をサポート)
IPv4
IPv6
MPLS
NDP
Raw IP (IPv4 および IPv6)
VRRP (IPv4 および IPv6)
ワイヤーガード
COTP
GTP (v1)
IPSec AH および ESP - 解析のみ (編集機能なし)
TCP
TPKT
UDP
SDP
SIP
SSL/TLS - 解析のみ (編集機能なし)
ASN.1 デコーダとエンコーダ
BGP (v4)
DHCP
DHCPv6
DNS
FTP
HTTP ヘッダー (リクエストとレスポンス)
LDAP
NTP (v3、v4)
半径
S7通信(S7comm)
SMTP
一部/IP
SSH - 解析のみ (編集機能なし)
Telnet - 解析のみ (編集機能なし)
一般的なペイロード
データ プレーン開発キット (DPDK) は、高速パケット処理のためのデータ プレーン ライブラリとネットワーク インターフェイス コントローラー ドライバーのセットです。
PF_RING™ は、パケット キャプチャ速度を大幅に向上させる新しいタイプのネットワーク ソケットです。
どちらのフレームワークも (回線速度まで) 非常に高速なパケット処理を提供し、ルーター、ファイアウォール、ロード バランサーなどの多くのネットワーク アプリケーションで使用されます。PcapPlusPLus は、DPDK および PF_RING 上に C++ 抽象化レイヤーを提供します。この抽象化レイヤーは、これらのフレームワークの使用に伴う多くの定型文を削除する、使いやすいインターフェイスを提供します。詳細については、PcapPlusPlus Web サイトの DPDK および PF_RING サポート ページにアクセスしてください。
Matias Fontanini の packet-capture-benchmarks プロジェクトを使用して、PcapPlusPlus のパフォーマンスを他の同様の C++ ライブラリ ( libtins
やlibcrafter
など) と比較しました。
結果は、PcapPlusPlus Web サイトのベンチマーク ページで確認できます。
フィードバックをお待ちしております。次のいずれかの方法でお気軽にご連絡ください。
GitHub チケットを開く
PcapPlusPlus Google グループにメッセージを投稿します: https://groups.google.com/d/forum/pcapplusplus-support
スタック オーバーフローで質問する: https://stackoverflow.com/questions/tagged/pcapplusplus
電子メールを次の宛先に送信します: [email protected]
X でフォローしてください: https://x.com/seladb
このプロジェクトが気に入ったら、 GitHub でスターを付けてください。役に立ちます。 ⭐ ⭐
詳細については、PcapPlusPlus Web サイトをご覧ください。
このプロジェクトへのご貢献を心よりお待ちしております。貢献に興味がある場合は、PcapPlusPlus Web サイトの貢献ページにアクセスしてください。
PcapPlusPlus は Unlicense ライセンスに基づいてリリースされています。