今日も自分で何となく使いたいのでtcpdumpのキャプチャデータを見るツール作ってました。
以前libpcap使って簡易tcpdumpを作ったことがあるので、今日のツールはlibpcapで直接キャプチャしたファイルからヘッダを取り出してやろうと、あれこれ遊んでみました。何がやりたいかというと、IPv6のキャプチャデータから Fragment ID を引っ張り出したい。
以前作ったのは pcap_open_live() でキャプチャするツール、今回は pcap_open_offline() でファイルから読み込む専用ツール。いじっていったら、元ソースの原型をとどめているのは filter の compile 処理程度、全体では6割以上は書き換えになってしまいました。
それから、元のツールはIPv4しか対応してなかったので、IPヘッダの構造体を sniff_ip から sniff_ip6 に変更。さらに Fragment header の構造体を適当に追加して、 Fragment ID を引っ張りだすことに。う~ん、ここまでやってたら結構時間がかかってしまいました。
実はもっと簡単に引っ張りだせたりするのかなぁ。と言うか、私は何でIPv6のIPヘッダや拡張ヘッダとお友達になっているんでしょう…。(´ω`)