Pcap

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 (プログラミング言語)ラッパー

脚注 

ネットワーク・アナライザ
オープンソースソフトウェア