その手の平は尻もつかめるさ

ギジュツ的な事をメーンで書く予定です

pcapng ファイルを pcap ファイルに変換する

基本的に 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 を使うのが良いと思います.