コンピュータネットワーク管理の分野において、pcapはネットワークトラフィックをキャプチャするためのアプリケーションプログラミングインターフェース(API)です。pcapという名前はパケットキャプチャの略ですが、これはAPIの正式名称ではありません。Unix系システムではlibpcapライブラリにpcapが実装されています。Windows向けには、サポートや開発が終了しているWinPcapというlibpcapの移植版と、Windows 7以降向けに現在もサポートされているNpcapという移植版があります。
監視ソフトウェアは、libpcap、WinPcap、またはNpcapを使用して、コンピュータネットワーク上を流れるネットワークパケットをキャプチャしたり、新しいバージョンでは、リンク層でネットワーク上のパケットを送信したり、libpcap、WinPcap、またはNpcapで使用する可能性のあるネットワークインターフェイスのリストを取得したりすることができます。
pcap APIはC言語で記述されているため、Java、.NET言語、スクリプト言語などの他の言語では一般的にラッパーが使用されます。libpcapやWinPcap自体には、そのようなラッパーは提供されていません。C ++プログラムは、C APIに直接リンクするか、オブジェクト指向のラッパーを利用することができます。
libpcap、WinPcap、およびNpcapは、プロトコルアナライザ(パケットスニファ)、ネットワークモニター、ネットワーク侵入検知システム、トラフィックジェネレータ、ネットワークテスターなど、多くのオープンソースおよび商用ネットワークツールのパケットキャプチャおよびフィルタリングエンジンを提供します。
現在主流のUnix系システムのほとんどは、プログラムが実行中のマシンとの間のネットワークトラフィック、場合によってはそのマシンが接続されている他のトラフィックをキャプチャできる仕組みを提供しています。しかし、これらの仕組みはそれぞれ大きく異なっています。libpcapライブラリは、これらの仕組みにアクセスするための共通APIを提供することで、個々の仕組みの詳細を気にすることなく、ネットワークトラフィックをキャプチャするプログラムを作成できるようにします。
libpcap、WinPcap、およびNpcapは、キャプチャしたパケットをファイルに保存したり、保存したパケットを含むファイルを読み込むこともサポートしています。libpcap 、WinPcap、またはNpcapを使用してアプリケーションを作成し、ネットワークトラフィックをキャプチャして分析したり、保存したキャプチャを読み込んで同じ分析コードを使用して分析したりすることができます。libpcap、WinPcap、およびNpcapが使用する形式で保存されたキャプチャファイルは、tcpdump、Wireshark、CA NetMaster、またはMicrosoft Network Monitor 3.xなど、その形式を理解するアプリケーションで読み取ることができます。ファイル形式は、インターネットドラフトdraft-ietf-opsawg-pcap [ 5 ]で説明されています。ドラフトの現在の編集者バージョンも利用可能です。[ 6 ]
libpcap、WinPcap、およびNpcapによって作成および読み取られるファイル形式のMIMEタイプはapplication/vnd.tcpdump.pcapです。一般的なファイル拡張子は.pcapですが、.capや.dmpもよく使用されます。[ 7 ]
libpcap は元々、ローレンス・バークレー国立研究所のネットワーク研究グループのtcpdump開発者によって開発されました。tcpdump の低レベルパケットキャプチャ、キャプチャファイル読み取り、キャプチャファイル書き込みのコードが抽出され、ライブラリとして作成され、tcpdump とリンクされました。[ 8 ]現在は、tcpdump を開発しているのと同じ tcpdump.org グループによって開発されています。[ 9 ]
libpcapは元々Unix系オペレーティングシステム向けに開発されましたが、 WinPcapと呼ばれるWindows向けの移植版が成功裏に作成されました。2013年以降はメンテナンスされておらず[ 10 ]、Windowsの新しいバージョンへの対応や新機能を追加した競合するフォークがいくつかリリースされています。
WinPcapは以下で構成されます:[ 11 ]
トリノ工科大学のプログラマーがオリジナルのコードを書いた。2008年時点で、WinPcap開発者の一部が設立したCACE Technologies社が製品の開発と保守を行っていた。CACE社は2010年10月21日にRiverbed Technology社に買収された。 [ 12 ]
WinPcapは古いNDIS 5.x APIを使用しているため、Windows 10の一部のビルドでは動作しません。これらのビルドでは、新しいNDIS 6.x APIが採用され、NDIS 5.x APIは非推奨または削除されています。また、イーサネットヘッダー内の802.1Q VLANタグをキャプチャできないなど、いくつかの制限も生じます。
WinPcapプロジェクトは開発が終了しており、WinPcapとWinDumpはもはやメンテナンスされていません。WinPcapの最後の公式リリースは、2013年3月8日にリリースされた4.1.3です。[ 13 ]
Npcap は、Nmapプロジェクトの Windows 用パケットスニッフィングライブラリです。[ 14 ]これは WinPcap をベースにしていますが、 NDISバージョン 6の Windows ネットワークの改善を利用するように記述されています。開発者は、WinPcap NDIS 5 プロトコル ドライバを軽量フィルタ (LWF) ドライバとして書き直し、処理オーバーヘッドを削減しました。[ 15 ] Npcap のメンテナンス リリースでは、付属の libpcap ライブラリのバージョンが最新のものに更新され、ソフトウェア開発者は、Linux ソフトウェアですでにサポートされていた新しい API 機能を利用できるようになりました。[ 16 ] WinPcap を使用していたほとんどのソフトウェアは、最小限の変更で Npcap を使用するように簡単に移植できます。[ 17 ]
NpcapはWinPcapにはなかったいくつかの革新的な機能を導入しました。
Nmapとは異なり、Npcapはプロプライエタリソフトウェアであり、一部の限定的な内部使用を除き、使用および再配布には特別なライセンスが必要です。[ 21 ]
Win10Pcapの実装もNDIS 6ドライバモデルに基づいており、Windows 10で安定して動作します。[ 22 ]しかし、このプロジェクトは2016年以降活動していません。[ 23 ]