0

私が取り組んでいるアプリケーションは、別のアプリケーションの接続を追跡する必要があります。つまり、他のアプリケーションがIPトラフィックを生成および受信していることを確認する必要があります。

他のアプリケーションへのAPIがないため、WinSockを介してIPトラフィックを追跡しています。これを行うには、RAW IPソケットを定義し、IOコントロールを-と同等のもので設定します。

int opt = RCVALL_ON;
WSAIoctl((socket) s, SIO_RCV_ALL, &opt, sizeof(opt), NULL, ...); //The rest is "empty"

次に、ソケットから非同期でデータを読み取り、IPヘッダーを調べて、トラフィックが追跡対象のアプリケーションに属していることを確認します。

2つの質問が発生します-

  1. IPトラフィックを追跡する別のより良い方法はありますか?具体的には、どのホストがマシンにデータを送信し、どのホストにデータがいつ送信されたかを知る必要があります。
  2. 上記の方法を使用すると、データはターゲットアプリケーションから「盗まれ」ますか?または、ターゲットアプリケーションは中断することなくソケットにそれを取得しますか?

ありがとう、
アサフ

4

2 に答える 2

2
  1. これは、ドライバーが必要ない場合にトラフィックを追跡する方法です。ドライバーを受け入れる場合は、WinPCapが最適です。さらにいくつかの制約があれば、確立されたtcp接続(netstatなど)を確認できますが、要件があれば、使用しているrawソケットアプローチを使用することをお勧めします。

  2. あなたの方法を使用して、データは盗まれるのではなくコピーされます。これを述べている私が見つけることができる唯一の明示的なドキュメントはMSDNにあります:「受信したデータグラムはすべてのSOCK_RAWソケットにコピーされます...」

于 2011-03-14T12:29:37.130 に答える
0

私はhttp://en.wikipedia.org/wiki/Pcapを真剣に見ていきます

これはWireSharkがトラフィックを監視するために使用するものであり、私が見てみると、APIは本当に便利に見えます。

于 2011-02-14T10:24:49.467 に答える