1

現在、非常に古いアプリケーションに取り組んでいます。このアプリケーションを変更して、来る icmp リクエストをリッスンし、応答するか、パケットをドロップするかを決定する必要があります (ICMP でのアクセス制御のようなものです)。アプリケーションは Winsock バージョン 1.1 ベースです。ソケットを作成し、ソケットを使用して icmp パケットをキャプチャするさまざまな方法を試しました。しかし、私の努力はどれもうまくいきませんでした。

誰でも私を助けることができますか?それとも絶対無理ですか?

ご回答どうもありがとうございました。

4

2 に答える 2

0

あなたはアプリケーションが古いと言っていますが、それを実行している OS については何も言いません。16 ビット Windows または NT 3.x で実行している場合を除き、Winsock 2 に移行できない正当な理由はありません。Win95 用の Winsock 2 をダウンロードできます。また、それ以降のすべての Win9x OS にも含まれています。 Windows NT 4 以降と同様です。

このアプリを本当に Win16 で実行する必要がある場合は、生のソケットのサポートを提供していた当時のサードパーティの Winsock スタックの 1 つを掘り起こすことができるかもしれませんが、合法的に実行したい場合、それは非常に面倒なことのように思えます。 . 最小 OS バージョンとして Win98 を指定して先に進む方が簡単です。

編集: MS オペレーティング システムで組み込みの Winsock を使用する必要がある場合は、Winsock 2 に移行する必要があるraw socketsで必要なことを実行できると想定しています。Winsock 1.1 の代わりに Winsock 2 を使用するようにプログラムを変更するのは簡単です。1 つのライブラリの変更、1 つのヘッダー ファイルの変更、およびWSAStartup呼び出しの変更で、完了です。生の ICMP ソケットを使用すると、任意の ICMP パケットを作成できます。新しい OS では、ICMP パケットもリッスンできる場合があります。スタックがソケットを介して必要なパケットをリッスンできないことが判明した場合は、代わりにパケットキャプチャ技術を使用してそれを行うことができます。

于 2009-12-15T01:08:13.893 に答える
0

これはアプリケーション機能ではないため、アプリケーション (Winsock) レベルで ICMP パケットを傍受できるとは思いません。アプリケーションを実行する Windows のバージョンに関係なく、おそらくネットワーク フィルター ドライバーを作成する必要があります。

于 2009-12-14T21:04:06.450 に答える