pcap (packet capture) とは、コンピュータネットワーク管理の分野におけるパケットスニファのためのAPIである。Unix系のシステムではpcapはlibpcapとして実装されている。Windowsではlibpcapを移植したWinPcapが使われていたが、開発が終了したためWindows Vista以降を対象としたNpcapが後継として使われている。

モニタリングソフトウェアは、ネットワーク上を流れているパケットをキャプチャするためにlibpcapやWinPcapを利用することができる。さらに新しいバージョンでは、リンク層上にパケットを送り出すことや利用可能なネットワークインターフェースの一覧を取得することもできる。

libpcap/WinPcapはキャプチャしたパケットをファイルに保存したり、保存したファイルから読み出したりできる。つまり、アプリケーションはキャプチャしたネットワークのトラフィックをそのまま解析したり、いったん保存したトラフィックを解析することが、単一の解析プログラムだけで実現できる。libpcap/WinPcapのフォーマットで保存されたファイルは、そのフォーマットを理解するアプリケーションによって読み込める。

libpcap/WinPcapは、オープンソースや商用のネットワークツールのパケットキャプチャ・フィルタリングエンジンを提供している。これにはプロトコル・アナライザ(パケットスニファ)、ネットワークモニタ、侵入検知システム、トラフィックジェネレータ、ネットワークテスターなどが含まれる。

pcap APIの実装はC言語とC++で書かれており、Java、.NET、さらにスクリプト言語などではたいていラッパーが利用可能である。

libpcap

libpcapは元々ローレンス・バークレー研究所のNetwork Research Group内のtcpdumpの開発者によって作られた。tcpdumpの低レベルパケットキャプチャ、キャプチャファイルの読み込み・書き出しのソースコードを抜き出してライブラリにして、tcpdumpがそのライブラリにリンクするようになった。2019年現在、libpcapはtcpdump開発チームであるtcpdump.orgグループによって開発されている。

WinPcap

トリノ工科大学のプログラマーがオリジナルのソースコードを書いた。2008年に、WinPcapの開発者らによってCACE Technologiesという企業が設立され、WinPcapの開発・維持を行っていたが、2018年9月15日に今後アップグレードする計画はないこと、バグ、質問の受付など行わないことをアナウンスし、実質的な開発終了を宣言した。

Microsoft Windows NT(Windows NT 4.0、Windows 2000、Windows XP、Windows Server 2003、Windows Vista、Windows 7など)ファミリー向けのx86とx64のデバイスドライバ。これはネットワークカードから直接パケットを読むためにNDIS5を使用している。 デバイスドライバと通信するための低レベルライブラリ。 低レベルライブラリの提供するAPIを用いるように移植したlibpcap。

Npcap

NpcapはWinPcapのNDIS6対応版としてGoogle Summer of Codeにおいて2013年から2015年にかけてYang Luoによって開発され、現在はNmapプロジェクトで開発が続けられている。

NDIS6の軽量フィルター(LWF)ドライバー(Windows XP、Server 2003はサポート対象から外された)。 インストールの際に「WinPcap互換モード」を選択した場合、既存のWinPcapを置き換える。選択しなかった場合、WinPcapとNpcapが共存できるようWinPcapとは異なるインストール先とサービス名となる。

libpcapを利用しているアプリケーション

tcpdump 解析用のパケットをキャプチャ・ダンプするツール。Windows版はWinDump。 ngrep, (network grep) パケット内の文字列を分離し、人に読みやすい形でパケットを出力する。 Wireshark (元Ethereal) グラフィカルなパケットキャプチャ・解析ツール Snort 侵入検知システム ssldump SSLv3/TLSアナライザ SSLレコードを解読し出力する。 Nmap ポートスキャンと用のツール Bro 侵入検知システムとネットワークモニタリングのプラットフォーム justniffer tcp/httpのパケットスニファ "標準的な"(Webサーバー様の)、あるいはカスタマイズしたネットワークトラフィックのログを取得できる。 URL Snooper 音声や動画ファイルのURLを発見し、保存することができる。 Kismet IEEE 802.11の無線LAN向け L0phtCrack パスワード監査とパスワード回復を行うアプリケーション NetworkMiner 転送されたファイルの抽出とOSの特定を行うネットワークフォレンジックツール Xplico オープンソースのネットワークフォレンジックツール解析ツール iftop 帯域の使用状況を表示するツール (topのネットワークトラフィック版) EtherApe グラフィカルなトラフィックモニタリングと帯域の使用状況の表示をリアルタイムに行うツール Bit-Twist libpcapベースのパケットジェネレータ・エディタ BSD、Linux、Windows向け。

libpcapファイルフォーマットをサポートするアプリケーション CA NetMaster TCP/IP向けのネットワークマネージャ Dream Software Defined Radio PacketSquare-Capedit pcapエディタとリプレイツール

libpcapラッパー Net::Pcap pcapのPerlラッパー python-libpcap、pcapy pcapのPythonラッパー PacketFu pcapのRubyラッパー tclpcap pcapのTclラッパー jpcap、jNetPcap、Jpcap、Pcap4j pcapのJavaラッパー WinPcapNET, SharpPcap, Pcap.Net WinPcapの.NETラッパー pcap pcapのHaskellバインディング mlpcap pcapのObjective Camlバインディング pcap pcapのChicken Schemeラッパー PLOKAMI pcapのCommon Lispラッパー GoPcap pcapのGo (プログラミング言語)ラッパー

脚注