pcapport について
pcapportは、ネットワーク運用担当者や開発者向けのローカルPCAP解析ツールです。通信プロトコルやTCPの状態を集計し、ネットワーク接続やライブキャプチャなしで、従来形式のlibpcapファイルを調べられます。MCPツールとコマンドラインを提供します。
主な機能
- 01DNS、DHCP、ICMP、SIPの集計
- 02TCP接続と異常の解析
- 03再送と通信フローの解析
- 04キャプチャ情報とパケット統計
- 05ローカルファイルのオフライン処理
活用シーン
- 01キャプチャ内のDNS・DHCP通信の確認
- 02TCPリセット、ハーフオープン接続、再送の調査
- 03指定サーバーとの送受信量の集計
- 04キャプチャ時間、サイズ、カプセル化の確認
MCP 対応
stdio MCPサーバーとして動作し、PCAPファイルを解析する9つのツールを公開します。DNS、DHCP、ICMP、TCP、SIP、通信フロー、キャプチャ情報を扱います。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
9掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| pcap_file | string | はい | 読み込むパケットキャプチャファイルのパス。 |
詳細
pcapport
pcapport は、PCAP キャプチャファイルをすべてお使いのマシン上で解析します。 classic libpcap ファイルを指定すると、その内容を要約します。 DNS の問い合わせと応答コード、DHCP のメッセージタイプと関連するサーバーおよびクライアント、ICMP トラフィック、状態を推定した TCP 接続、TCP の異常や再送、特定のサーバーとの間のトラフィックフロー、SIP 通話のほか、パケット数、継続時間、カプセル化などの基本的なキャプチャ情報を確認できます。
ネットワークアクセス、API キー、ライブキャプチャは必要ありません。このツールは指定されたキャプチャファイルを読み取るだけです。パーサーは独自の最小限の実装で、Ethernet(単一の VLAN タグを含む)と、IPv4 を含む raw-IP キャプチャに対応しています。TCP、UDP、ICMP をデコードし、DNS、DHCP、SIP のペイロードを解析します。
インストール
npx @reneturcios/pcapport analyze_capinfos '{"pcap_file":"capture.pcap"}'
または、コンテナイメージを実行します。
docker run -i ghcr.io/cloudcorprecords/pcapport
コンテナはデフォルトで MCP サーバーとして起動します。CLI として使用するには、CLI 引数を渡してください。
CLI
CLI は各ツールに対応するサブコマンドを用意しており、それぞれの引数を単一の JSON オブジェクトとして受け取ります。
pcapport analyze_capinfos '{"pcap_file":"capture.pcap"}'
pcapport analyze_dns_packets '{"pcap_file":"capture.pcap"}'
pcapport analyze_tcp_connections '{"pcap_file":"capture.pcap","detailed":true}'
pcapport analyze_tcp_retransmissions '{"pcap_file":"capture.pcap","threshold":0.05}'
pcapport analyze_traffic_flow '{"pcap_file":"capture.pcap","server_ip":"10.0.0.5","server_port":80}'
pcapport --version
終了コード:成功時は 0、エラー時は 1(不正な PCAP マジックナンバーやファイルの切り詰めなど、問題の内容が示されます)、使用方法のエラー時は 2 です。空のキャプチャはエラーではありません。ツールはすべての値をゼロにした要約を返します。
MCP サーバー
1 つのバイナリで両方の用途に対応します。mcp サブコマンドを実行すると、stdio MCP サーバーが起動します。
npx -y @reneturcios/pcapport mcp
MCP クライアントの設定:
{
"mcpServers": {
"pcapport": {
"command": "npx",
"args": ["-y", "@reneturcios/pcapport", "mcp"]
}
}
}
ツール
| ツール | 入力 | 機能 |
|---|---|---|
analyze_dns_packets | pcap_file(必須) | DNS の問い合わせ数と応答数、上位の問い合わせ(集計、上位 20 件)、応答コードの概要を返します。 |
analyze_dhcp_packets | pcap_file(必須) | メッセージタイプ(discover、offer、request、ack など)別の DHCP パケット数、サーバー IP、クライアント MAC アドレスを返します。 |
analyze_icmp_packets | pcap_file(必須) | タイプ別の ICMP 数、エコー要求/応答数、到達不能数、通信量上位の送信元を返します。 |
analyze_tcp_connections | pcap_file(必須)、server_ip、server_port、detailed | 正規化された 4 タプルをキーとして、クライアント/サーバー、パケット数、バイト数、SYN/FIN/RST 数、状態の推定値(established、closed、reset、half-open)を含む接続情報を返します。detailed を指定すると、接続ごとのタイムスタンプ概要も含まれます。 |
analyze_tcp_anomalies | pcap_file(必須)、server_ip、server_port | フラグとウィンドウフィールドから算出した、リセットされた接続、half-open 接続(SYN はあるが SYN-ACK がない)、データのない接続、ゼロウィンドウ通知の数を返します。 |
analyze_tcp_retransmissions | pcap_file(必須)、server_ip、threshold(デフォルト:0.02) | 再送とは、同じ(タプル、シーケンス番号、ペイロード長)のデータセグメントです。データセグメント数、再送数、再送率、しきい値を超えているかどうか、および再送が最も多い接続を返します。 |
analyze_traffic_flow | pcap_file(必須)、server_ip(必須)、server_port | サーバーとの間のパケット数とバイト数、一意なクライアント数、バイト数順の上位クライアントを返します。 |
analyze_sip_packets | pcap_file(必須) | メソッド別の SIP リクエスト、ステータスクラス別の応答、通話(Call-ID、From、To)を返します。ポート 5060 のペイロードに加え、SIP メソッドまたは SIP/2.0 で始まるペイロードも対象です。 |
analyze_capinfos | pcap_file(必須) | パケット数、継続時間、データバイト数、平均パケットサイズ、最初/最後のパケット時刻、カプセル化、キャプチャ長を返します。 |
対象範囲と制限
パーサーが対応するのは classic libpcap のみです(ビッグエンディアン/リトルエンディアン、マイクロ秒/ナノ秒のタイムスタンプ)。pcapng には対応していません。デコード対象は IPv4 のみです。IPv6 やその他のイーサタイプはパケット総数には含まれますが、解析されません。TCP ストリームの再構成は行わないため、TCP 上の SIP はセグメントごとに照合され、TLS ペイロードの内容は解析されません。異常や状態の推定は意図的に単純化した近似であり、tshark レベルの完全な解析に代わるものではありません。
開発
npm install
npm run build # tsc -> dist/
npm test # node test runner over test/*.test.ts, synthetic captures only, no network
npm run dev # run the CLI from source via tsx
ライセンス
MIT — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。