OSがパケットを送受信する前にパケットを分析/傍受するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1457491

質問

私はソフトウェア ファイアウォールが内部でどのように機能するかについて常に疑問に思っており、OS によって送受信される前にパケットを分析または傍受するための独自のカスタム ツールを作成できるようにしたいと考えています。私はネットワークの中核原則についてはかなり理解しています。ファイアウォールと同様のネットワーク スタック内に適合するソフトウェアを作成したい場合、どこから始めればよいのかまったくわかりません。誰か私にヒントを教えてくれませんか?

これを C# を使用して実現できれば特に興味がありますが、他の言語でも実現できます。私は主に Windows に焦点を当てていますが、クロスプラットフォーム ライブラリも存在するかどうか知りたいと思っています。

編集 (Wireshark のように) NDIS ドライバーを使用するのは良い選択肢のように思えますし、Vista のパケット フィルタリング機能も優れているように思えますが、たとえば Windows XP 上でファイアウォールはどのように機能するのでしょうか?私が知っている特別なドライバーをインストールする必要はありません。

役に立ちましたか?

解決

Windows Vista 以降では、 Windows フィルタリング プラットフォーム. 。以前のバージョンの Windows では、フィルター ドライバーを使用する必要があります (MSDN ページへのリンクには、WFP が置き換えるテクノロジが記載されています)。

他のヒント

私の記憶では、NDIS ドライバーの作成が必要でした。これは実質的に NIC (ネットワーク インターフェイス カード) の最上位に位置し、イーサネット パケット レベルに至るまで、何よりも先に NIC に出入りするものを完全に制御できます。

これは C# では実現できません。このタスクには実際には C または C++ を使用する必要があります。

アップデート:最後にこれを行ったのは Windows XP の時代でした。別の回答によると、Windows Vista 以降を使用している場合は、見た目から見てよりシンプルな新しい API があることがわかりました。

「O / Sの前に」、しかしは WireSharkのと見ていることがあります場合は、

わかりませんライブラリーには、のlibpcap を使用します。

WinPcapのを見てみましょう - それはそのパケットフィルタリング機能を実装するためにNDISドライバを使用しています。このライブラリは、おそらくあなたが書きたいと思います任意のパケットインスペクション/ファイアウォールプログラムのための優れた基盤を提供することができ、それはオープンソースです。 http://www.winpcap.org/docs/docs_40_2/html/group__internalsから.htmlをするます:

  

まず、キャプチャシステムは、する必要があります   オペレーティングシステムのを回避   アクセスするためのプロトコルスタック   ネットワーク上の通過生データ。   これは、内部で実行されている部分が必要です   OSのカーネル、直接対話します   ネットワーク・インターフェース・ドライバと。   この部分は非常にシステムが依存しています、   そして当社のソリューションでは、次のように実現されています   ネットグループと呼ばれるデバイスドライバ、   パケットフィルタ(NPF)。我々が提供します   ドライバの異なるバージョン   Windows 95とWindows 98とWindows ME、   Windows NT 4、Windows 2000およびWindows   XP。これらのドライバは、両方の基本を提供します   パケットキャプチャなどの機能と   注射だけでなく、より高度な   プログラマブル・フィルタのようなもの   システム監視エンジン。ザ・   最初のものは制限するために使用することができます   のサブセットにセッションをキャプチャ   ネットワークトラフィック(たとえば、それが可能です   唯一のFTPトラフィックをキャプチャします   特定のホストによって生成されます)、   もう一つは、強力なを提供しますが、   取得するためのメカニズムを使用して簡単   トラフィックの統計情報(例えば、それはあります   ネットワークの負荷を得ることができますか   データの量は、間で交換しました   二つのホスト)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top