基本的に Wireshark を使うことで得られるパケットキャプチャファイルは pcapng と呼ばれるフォーマットになっており,これは pcap フォーマットとは異なります.
例えば複数のパケットキャプチャファイルを時系列に従ってマージできるコマンドラインツールである mergecap コマンドは Wireshark が提供しているソフトウェアであるため,これを使って出力される merged なパケットキャプチャファイルはデフォルトでは pcapng フォーマットとなります (ちなみに,これについては mergecap -F pcap
というふうに -F
オプションでフォーマットを指定すると pcap フォーマットで出力できる).
pcap を前提としたプログラムでこのpcapngファイルを読み込もうとすると往々にしてエラーが起きる (例えば Unknown magic a0d0d0a
のようなエラーが上がる) ので,pcapng なファイルを pcap なファイルに変換したくなることがあります.というわけでこうです
tcpdump -r file.pcapng -w file.pcap
こうすることで pcapng ファイルを読み込んで pcap ファイルに変換することができます.簡単ですね.
なおインターネット上を検索してみると tshark を使った方法 (tshark -F pcap -r file.pcapng -w file.pcap
) がヒットするのですが,この方法は元のファイルサイズが大きいと Killed
という無慈悲なエラーを吐いてコマンドが完遂しないので,特別な理由がない限りは tcpdump を使うのが良いと思います.