4

ネットワーク パケットを (ローカル マシン上で) インターセプトし、ネットワークに送信される前に変更する小さなプログラムを作成しようとしています。データだけでなく、ヘッダーも変更できる必要があります。

すでにいくつかの可能性を検討しましたが、どれを追求するのが最善かはわかりません。オープン ソースのパケット フィルタが存在しますが、フィルタリングはパケットを許可または拒否することしかできないようです。

もう 1 つの解決策は、NDIS 中間ドライバーを作成することですが、ドライバーを作成することは私にはできません。WinDDK の単純なパススルーの例でさえ、数千行あります。また、コードをテストするために常にドライバーを再インストールして再起動する必要があるのも楽しみではありません。

プログラムが自己完結型であり、サードパーティのドライバー/ソフトウェア/その他のインストールに依存しないことが理想的です。

ですから、皆さんが私を正しい方向に向けることができれば、役立つリンクを私の方法で投げていただければ幸いです。

4

4 に答える 4

5

フィルタリング/変更するパケットの種類によって異なります。

アプリケーション レベルのフィルタリングを行っていて、HTTP や同様のパケットを取得したい場合は、おそらく LSP が最適です。ただし、このパスをたどることにはいくつかの欠点があることに注意してください。最初の MS はこのテクノロジを取り除こうとしているようで、Windows 7 のロゴ要件の一部である IIRC は「製品に LSP を使用しない」ことであり、Windows Filtering Platformを推進しているようです。第 2 に、サード パーティの LSP の互換性に関して、これほど多くの問題が発生していることに非常に驚かれることでしょう。第三に、非常にダミーの LSP はまだ約 2 KLOC です :)

IP レベルのパケット フィルタリングが必要な場合は、ドライバーが必要です。

Windows Filtering Platformは、いずれの場合にも必要な機能を提供します。ただし、Windows Vista 以降の製品でのみ使用できるため、XP はありません。考慮すべきもう1つのことは、WFPはユーザーランドでのみパケットを許可/拒否できたため、それらを変更する必要がある場合は、カーネルモードに移行する必要があることです. (少なくとも、それが登場したときの状況はどうだったかというと、今では何かが改善されているのかもしれません)。

于 2010-01-03T13:49:16.130 に答える
2

私見、パケットを変更したい場合は、ハードウェアと通信するための何か、ある種のドライバーが必要です。独自のドライバーを使用したくない場合は、サードパーティのドライバーを入手して相互運用する必要があります。

フィルタリングには、winpcap や libpcap などのライブラリがあります。

こちらもご覧ください: http://www.ntkernel.com/w&p.php?id=7

別のリンク: http://bittwist.sourceforge.net/

お役に立てれば!

于 2010-01-03T11:22:47.870 に答える
2

私は専門家ではありませんが、LANで同様のことをしたいと考えています。1 つの固定 IP からのパケットをインターセプトし、ルーターに送信されてからインターネットに送信される前にそれらを変更したいと考えています。また、ホストへの通過を許可する前に、返されたパケットをキャプチャして変更したいと考えています。私が思い描いていた方法は、こんな感じでした。

  1. ARP はホストとルーターを汚染するため、スニッフィング マシンはすべてのパケットを通過させていました。
  2. 将来変更したいパケットを分析し、それらのパケットに固有の特徴を探して、それらだけをキャッチできるようにします。
  3. 上記の特性をリアルタイムで探し、途中で送信する前にその場で変更するマクロ/スクリプトを作成します。

Cain&Abel for Windows が ARP ポイズンを実行できる (笑) ことは知っていますが、パケット コンテンツの生のダンプを提供できるかどうかはわかりません。Wireshark はすべてをダンプできますが、ARP ポイズンができるかどうかはわかりません。そうでない場合は、インターセプトしたいホストをイーサネット経由でスニファ マシンに簡単に接続し、次の経由でインターネットを共有できます。いずれにせよ、すべてのパケットがスニファ マシンを通過するようにします。

したがって、ステップ1を達成できます。上記のプログラムに詳細に基づいてフィルタリングする機能がまだあるかどうかはわかりませんが、機能していると思います。

それは私がそれと一緒にいる限りです。これが誰かの役に立ち、他の誰かがこれをさらに進めてくれることを願っていますか?

于 2010-09-30T20:09:54.840 に答える
2

winpcap は、コンパイル済みの条件でのみパケットをフィルタリングできます。必要なのは、LSP レベルのネットワーク ドライバーを作成することです。再インストールするたびに再起動する必要はありませんが、ネットワークに送信される前にパケットを実際に変更できます. 詳細はこちら: http://blogs.msdn.com/wndp/archive/2006/02/09/529031.aspxまたはこちら: http://www.microsoft.com/msj/0599/LayeredService/LayeredService.aspx

于 2010-01-03T11:26:36.147 に答える