簡易パケット操作ツール群(pkttools)

■ 概要

パケットキャプチャ&送信などを行うテキストベースの簡易ツール群です.
各ツールはパイプで繋げて連携させることができます.
テキストベースなので,パケットをパッと見てみたりちょっと修正して再送信 したり,各種スクリプトを組み合わせて利用したりということが簡便にできます.

(重要!) 本ツールはネットワークの勉強・検証を目的として作成・配布 するものです.不用意な利用はネットワークに様々な影響を与えたり, 様々な問題を引き起こす可能性があるため, ツールの動作を理解した上で,ローカル環境で利用するか ネットワーク管理者の許可を得た上で利用するようにしてください. 勉強や検証を目的として,正しいモラルのもとで利用してください.

以下のツールがあります.

*BSD/Linux/Windows/MacOSをサポートしています.
32ビット環境/64ビット環境の両方に対応しています.
FreeBSD-8.4/FreeBSD-10.3/CentOS6.5の環境でコンパイルと動作確認をしています.

フリーソフトウェアです.ご自由にお使いください.
ただし無保証です.本ツールを利用することで発生した不具合や問題などについて, 作者は一切の責任を負いません.各自の責任の下で利用してください.
ライセンスは添付の KL-01 と LICENSE を参照してください.

■ ツール説明

netlib (Windows版のビルドに必要) ツール一覧 ※1 ルールをソースコードに直接記述してコンパイルしなおして利用する

■ パケットデータの例

例えば以下は,eth0というインターフェースでパケットを受信する例です.
user@letsnote:~/pkttools>% pkt-recv -i eth0
LINKTYPE: 1 (Ethernet)
-- 1 --
TIME: 1400167480.561500 Fri May 16 00:24:40 2014
SIZE: 98/98
000000: 00 11 22 33  44 55 00 AA  BB CC DD EE  08 00 45 00 : .."3DU.. ......E.
000010: 00 54 00 00  00 00 40 01  F7 55 C0 A8  01 01 C0 A8 : .T....@. .U......
000020: 01 02 08 00  4A 2F 03 0F  00 00 53 8A  C4 11 00 07 : ....J/.. ..S.....
000030: A8 1B 08 09  0A 0B 0C 0D  0E 0F 10 11  12 13 14 15 : ........ ........
000040: 16 17 18 19  1A 1B 1C 1D  1E 1F 20 21  22 23 24 25 : ........ .. !"#$%
000050: 26 27 28 29  2A 2B 2C 2D  2E 2F 30 31  32 33 34 35 : &'()*+,- ./012345
000060: 36 37                                              : 67
==
-- 2 --
TIME: 1400167480.561510 Fri May 16 00:24:40 2014
SIZE: 98/98
000000: 00 11 22 33  44 55 00 AA  BB CC DD EE  08 00 45 00 : .."3DU.. ......E.
000010: 00 54 00 00  00 00 40 01  F7 55 C0 A8  01 01 C0 A8 : .T....@. .U......
000020: 01 02 08 00  4A 2F 03 0F  00 00 53 8A  C4 11 00 07 : ....J/.. ..S.....
000030: A8 1B 08 09  0A 0B 0C 0D  0E 0F 10 11  12 13 14 15 : ........ ........
000040: 16 17 18 19  1A 1B 1C 1D  1E 1F 20 21  22 23 24 25 : ........ .. !"#$%
000050: 26 27 28 29  2A 2B 2C 2D  2E 2F 30 31  32 33 34 35 : &'()*+,- ./012345
000060: 36 37                                              : 67
==
「--」〜「==」でくくられている部分が,1個のパケットになります.

パケットデータを出力するツール(pkt-recvなど)は, 上のようなテキストフォーマットで出力します.

パケットデータを入力するツール(pkt-sendなど)は, 上のようなテキストフォーマットの入力を受け付けます.

出力されたパケットデータをテキストファイルとしていったん保存し, テキストエディタで特定のパケットのみ切り出したりパケットを部分的に書き換えて, 他のツールに印加したりすることができます.

例えばpkt-recvで受信し出力されたパケットデータをいったんテキストファイルとして 保存し,テキストエディタで特定のパケットのみ切り出して再度保存,pkt-sendで送信 することで,特定のパケットのみ繰り返し送信したりすることができます.

pcapフォーマットと連携できます.例えばWiresharkでキャプチャしたパケットをpcap で一旦保存,pkt-pcap2txt で上記テキストフォーマットに変換,変換したテキスト ファイルをテキストエディタで修正,pkt-txt2pcap でpcapフォーマットに戻す,と いったことができます.

このようにテキストエディタで扱ったり,パイプによるスクリプト処理がしやすい ような作りになっています.

■ Windows版の利用

Windows版では,実行にWinPcapがインストールされていることが必要です. あらかじめインストールしておいてください. WiresharkをインストールするとWinPcapもインストールされるので, Wiresharkをインストールしてしまうのが楽でいいでしょう.

まずpkt-recv/pkt-sendをインターフェース未指定(-iオプション無し) で実行し,インターフェースの一覧を出力してください.

インターフェースの一覧から利用したいインターフェースを選択し, 以下のように番号でインターフェースを指定して, pkt-recv/pkt-sendを起動してください.

C:\> pkt-recv -i 1

■ 使いかたの例

以下は Linux で eth0 を使う場合の例です.