• ベストアンサー

簡単なパケットキャプチャーソフト

C#やVB2008で簡単なパケットキャプチャーソフトを作ろうと思うのですが、 例えば、ブラウザ(IEやFirefox)でYahooにアクセスした場合、http://www.yhaoo.co.jp/を 取得してリストボックスに表示させたいのですが可能でしょうか? WinPcapはインストールしています。 また、メールの送受信の際のヘッダ情報にあるToやFromのアドレスも取得したいです。 詳しい書籍をご存じの方も教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

TCP/IPのプロトコルに関わる部分ですので、まるきり知らないとなると簡単に説明するのはちょっと難しいです。 基本的なTCP/IPの仕組みと構成については、ご自分で勉強なさってください。 場合分けは、宛先ポート番号で行います。ネットゲームなどをされる方ならポート番号を扱ったこともあると思いますが、どういうものかはご存知でしょうか。 おおざっぱに言うと、ひとつのコンピュータ上で立ち上がっている複数のアプリケーションを区別するための番号です。 TCPやUDPは、「相手のホストとIPで通信できる状態」を元にして、「相手のホスト上の特定のアプリケーションと通信をする状態」を作り出すものです。だから、ホスト上のアプリケーションを区別する必要があります。 http://www.asahi-net.or.jp/~aa4t-nngk/ipttut/output/tcpheaders.html アプリケーションは、このTCPやUDPに送りたいデータを包み、IPで相手に送り届けます。パケット解析では、基本的にはこのTCPがIPで包まれたIPパケットを見ることになります。 最終的なHTTPのIPパケットは、IPヘッダ TCPヘッダ HTTPの中身 がくっついた状態になります。 http://thinkit.jp/article/730/1/ IPヘッダが20バイト・TCPヘッダが20バイトなので、HTTPの中身は40バイト目からはじまることになります。実際、画像もそうなっていますね。 アプリケーションを作る際は、こういう論理で取れば、まあHTTPのGETリクエストくらいなら簡単に見つかるはずです。 実際にはIPヘッダやTCPヘッダにオプションが入ったり、アプリケーション層のメッセージが大きすぎて複数パケットに分割されたりする可能性がありますので、真面目にやるならもっと色んな論理を組む必要があります。 またIPに関しては説明をはしょっていますし、HTTPの説明も完全に省略しています。このあたりは勉強してください。 http://www.tohoho-web.com/ex/http.htm

その他の回答 (1)

回答No.1

それくらいなら、トランスポート層で場合分けしてアプリケーション層に流れるテキストから判断すれば良いだけなので、できますね。本気でRFC準拠にしたら大変でしょうが、部分部分で省略していけばそれほどの苦労なくそれなりのものが作れるはずです。 何が分からなくて、何を知りたいのでしょうか? また、目的はそういうプログラムを自分で作ることですか?それともパケットを見ることですか?

bazax
質問者

補足

>プログラムを自分で作ることですか?それともパケットを見ることですか? はい、自分で作りたいです。 まったくわからない状態です。 言われたようなトランスポート層で場合分け (何を場合分けするのでしょうか?) アプリケーション層に流れるテキストの抽出 (どのように抽出するのでしょうか?) サンプルがありましたら試してみたいというレベルです。

関連するQ&A