プロトコル解析プログラムの備忘録

作ってるプロトコル解析プログラムの備忘録。ソース見れば思い出すかもしれないけれど、きっと忘れる。

main.cの動き。

  1. libpcapにてpcapファイルからプロトコル情報を全てメモリ上のリスト構造体にコピーする。
  2. リストから最もはじめに受信したTCP, UDP, DCCPのうちのどれかを解析対象とする。
  3. 解析対象プロトコルのうち、「送信元IPアドレス・あて先IPアドレス・送信元ポート番号・あて先ポート番号」が一致するフレームを数える。
  4. 最も一致した「送信元IPアドレス・あて先IPアドレス・送信元ポート番号・あて先ポート番号」の組を新しいリストにフィルタリングする
  5. フィルタリングした新しいリストに対してMAC層解析とトランスポート層解析を行い、テキスト出力する

pcapファイルの全フレームのヘッダ情報をメモリ上にコピーするのでメモリを食う。topコマンドで見ると5MB強。約6万フレームのヘッダ約80B程度とすると4.8MBなので、そんなもの。

サイズ(ストリップ込み)
[code]
noch@debian-noch:~/wa2/wa2$ ls -l a.out
-rwxr-xr-x 1 noch noch 12208 Aug 20 02:22 a.out
[/code]

速度
[code]
noch@debian-noch:~/wa2/wa2$ time ./a.out \
/tmp/tshark-tcp-snd070817-2257 > /dev/null

real 0m0.369s
user 0m0.268s
sys 0m0.100s
[/code]
グラフ作成込みで
[code]
noch@debian-noch:~/wa2/wa2$ time ./tcp.seq \
/tmp/tshark-tcp-snd070817-2257 > /dev/null

real 0m2.383s
user 0m1.020s
sys 0m0.124s
[/code]

依存関係はlibpcap.soくらい。
[code]
noch@debian-noch:~/wa2/wa2$ ldd a.out
libpcap.so.0.7 => /usr/lib/libpcap.so.0.7 (0xb7f4c000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7e1b000)
/lib/ld-linux.so.2 (0xb7f7b000)
[/code]

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>