3

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

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

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

4

4 に答える 4

5

Windows Vista 以降では、Windows Filtering Platformを確認することをお勧めします。以前のバージョンの Windows では、フィルター ドライバーを使用する必要があります (MSDN ページへのリンクには、WFP が置き換えるテクノロジが記載されています)。

于 2009-09-21T23:58:41.440 に答える
1

「OSの前」かどうかはわかりませんが、WireSharkとそれが使用するライブラリlibpcapを見てください。

于 2009-09-22T00:09:29.187 に答える
1

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

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

更新:私は最後にこれを Window XP の時代に行いました。Windows Vista以降を使用している場合、別の応答から、新しいAPIがあり、見た目からすると、より単純なAPIがあることがわかります。

于 2009-09-21T23:59:32.970 に答える
0

WinPcap を見てみましょう。NDIS ドライバーを使用してパケット フィルタリング機能を実装しています。このライブラリは、作成したいパケット検査/ファイアウォール プログラムの優れた基盤となる可能性があり、オープン ソースです。http://www.winpcap.org/docs/docs_40_2/html/group__internals.htmlから:

まず、キャプチャ システムは、ネットワーク上を通過する生データにアクセスするために、オペレーティング システムのプロトコル スタックをバイパスする必要があります。これには、OS のカーネル内で実行され、ネットワーク インターフェイス ドライバーと直接対話する部分が必要です。この部分はシステムに大きく依存しており、当社のソリューションでは、Netgroup Packet Filter (NPF) と呼ばれるデバイス ドライバーとして実現されています。Windows 95、Windows 98、Windows ME、Windows NT 4、Windows 2000、および Windows XP 用にさまざまなバージョンのドライバーを提供しています。これらのドライバは、パケット キャプチャやインジェクションなどの基本的な機能と、プログラム可能なフィルタリング システムや監視エンジンなどのより高度な機能の両方を提供します。最初のものは、キャプチャ セッションをネットワーク トラフィックのサブセットに制限するために使用できます (例:

于 2009-09-22T01:09:05.900 に答える