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/out …
アプリケーションは、この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
No.1
- 回答日時:
それくらいなら、トランスポート層で場合分けしてアプリケーション層に流れるテキストから判断すれば良いだけなので、できますね。
本気でRFC準拠にしたら大変でしょうが、部分部分で省略していけばそれほどの苦労なくそれなりのものが作れるはずです。何が分からなくて、何を知りたいのでしょうか?
また、目的はそういうプログラムを自分で作ることですか?それともパケットを見ることですか?
この回答への補足
>プログラムを自分で作ることですか?それともパケットを見ることですか?
はい、自分で作りたいです。
まったくわからない状態です。
言われたようなトランスポート層で場合分け
(何を場合分けするのでしょうか?)
アプリケーション層に流れるテキストの抽出
(どのように抽出するのでしょうか?)
サンプルがありましたら試してみたいというレベルです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript Javascriptを使ってQRコード読み取り、取得した情報をPOSTしたいと思っています。 1 2023/04/28 15:18
- その他(コンピューター・テクノロジー) 「プロトコル」の定義について 5 2023/04/16 13:13
- CGI サイト訪問者の情報を取得したい 1 2023/02/21 11:03
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- その他(IT・Webサービス) 自分専用のリンク集のようなものを作りたいのですが… 3 2023/08/23 17:02
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
- その他(プログラミング・Web制作) 【GAS】Gmail本文をブラウザ表示された状態でPDFにしたいです 1 2022/12/12 09:54
- Gmail メーラーのThunderbirdの送信機能に関する質問です 3 2022/07/10 10:58
- Outlook(アウトルック) Excel表のメールアドレスリストからoutlookの宛先を設定、メールを送信する方法 2 2022/09/16 05:29
- デスクトップパソコン 古ーいパソコン/Atheros AR2181 PCIe Gigabit LAN コントローラー 7 2022/09/07 12:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#,vb.netで業務用アプリ開発と...
-
研究室志望の提出文書
-
へんな現象
-
gccを行ってもexeファイルが生...
-
Linux Cプログラミングを学ぶた...
-
こんなことてしますか??
-
mallocについて
-
LinuxカーネルのCFSで用いられ...
-
C言語 列挙型(enum型)変数について
-
パイソン。If elseの挙動につい...
-
C言語 1から20までの逆数の和を...
-
Windows Formアプリからコンソ...
-
C言語 配列と関数の練習問題
-
だいがくの電し書籍で
-
C言語初心者です、、、お助けく...
-
C++のcinの動作
-
応用情報技術者試験の令和元年...
-
ArduinoのジャイロモジュールMP...
-
c言語
-
MACで動く実行ファイルをWindow...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows端末でのsyslog受信につ...
-
ゲームプログラミングのネット...
-
C言語でTCPの3way handshake
-
「シェーピング」って何ですか。
-
F-09D
-
ネットワーク上に存在しないIP...
-
ネットワークカード2枚挿し TC...
-
パケット生成ソフト
-
簡単なパケットキャプチャーソフト
-
パケットの中身について。 始点...
-
不要なパケット
-
ユニックス時間(秒)を普通の日...
-
構造体のメンバをfor文で回したい
-
batファイルでtelnetを起動⇒文...
-
mailto:の本文に文字数制限はあ...
-
アクセスで有給休暇管理表を作...
-
mailto:の中に&を入れる
-
動的にプロパティ名を変えたい
-
MACアドレスで逮捕できる?
-
時間の平均値を計算する方法を...
おすすめ情報