どのプロセスがWindowsでUDPパケット(送信元/宛先IPとポート)を送信するか監視する方法はありますか?

私は、私のマシンがポーランドのマシンにUDPパケットを送受信していたことを、ほぼ間違いなく発見しました。ポーランドには何の問題もありませんが、なぜ私のラップトップがサーバーと通信する必要があるのか​​分かりません。逆DNSは、エンドユーザにアドレスを提供しているISPだけを示しています。 Wiresharkを使って、暗号化されていると思われるメッセージを監視することができます。私のマシンから送信されたすべてのパケットは同じ送信元ポートを持っていたので、それを送信したアプリケーションがこのUDPソケットを開いて使用していました。私は方法を探しています:

1)システム内で開いているすべての現在のソケットを列挙します。これには、作成したプロセスと、TCPとUDPの両方に対して、現在バインドされているポートとアドレスが列挙されます。

2)アプリケーションはこれらのソケットを開いて使用し、すぐに閉じることができるので、ソケットが作成されるたびに何らかの方法で通知を受け取るプログラムを見つけ出す(または、おそらく書く)ことが大好きです。ソースおよび/または宛先アドレスおよびポートにバインドされる。 UDPの場合は、ソケットがメッセージを送信した宛先IPアドレスとポートを監視/追跡することもできます。

トラフィックを監視したくない場合は、トラフィックを表示する場合はWiresharkがあります。どのアプリケーションがパケットを生成しているのかを知るために相互参照を行いたいと思っています。私はそれが私が信頼しているプロセスから来たものか、それがもっと調査する必要があるものかどうかを知りたい。

誰もがこれを行うことができるアプリケーション(Windowsプラットフォーム用)を知っていますか?そうでない場合は、この機能を提供する.NETまたはWindows APIに関するアイデアを自分で書きたいのですか?

Edit: After further research - looks like the APIs to use are GetExtendedUdpTable and GetExtendedTcpTable, CodeProject.com has some samples wrapping these in .NET (see http://www.codeproject.com/Articles/14423/Getting-the-active-TCP-UDP-connections-using-the-G). So a combination of this API and some sniffer code would be needed to monitor and keep track of what hosts at what ports using what protocol any particular application on your machine is talking to. If I ever get some free time, I'll consider creating this, if you know of an app that does all this, please let me know.

5
etherealはWiresharkの古い名前です。送信元アドレスと宛先アドレスとポートを含むパケットを見ることができますが、プロセスIDは一切ありません。私はパケットを見ることができる、私はどのプロセスが送受信されたか知りたい。
追加された 著者 Brian B,
どのバージョンのWindowsですか?まもなく、私はKerio Personal Firewallを使用しました。Kerio Personal Firewallは、所有プロセスに加えてすべてのソケットを非常にうまく示していました。さらに、発信トラフィックにルールを書き込めるようにしました。しかし、私はそれがVista/Win7で動作するとは思わない。また、彼らは新しいバージョンを装って、同じ名前の完全なゴミである新製品をリリースしたことにも注意してください。
追加された 著者 Ben Voigt,
@Remy:もちろん、ルータのファイアウォールは情報を処理するためのアクセス権がありません。そのためにはワークステーション上でローカルに実行する必要があります。
追加された 著者 Ben Voigt,
+1(個人的なファイアウォールを使用するために+1しました。以前はZoneAlarmを使用していましたが、現在はルータのハードウェアファイアウォールに依存しています)。それらを手動で見つけようとするのではなく、あなたに詳細を報告しましょう。
追加された 著者 Remy Lebeau,
@BenVoigt:そのため、私はZoneAlarmについて言及しました。これはソフトウェアベースのファイアウォールです。私はルータを必要とするのに十分なコンピュータがなければ、いつも使っていました。
追加された 著者 Remy Lebeau,
tcpdump?えっ?それらのためにwinpcapライブラリが必要です。
追加された 著者 Sergey Benner,

2 答え

SysInternals TCPView を試してください。その名前にもかかわらず、UDPも扱います。

9
追加された

netstat -b to enumerate all ports along with the process names.

2
追加された
これは、どのプロセスがUDPポートでリッスンしているかを教えてくれますが、誰がUDPパケットを送信したのかをどのように知ることができますか? WinPCAPを使って特定のローカルマシンポートからUDPパケットを見ると、netstat -bを使ってそのローカルポートをリスト内で見つけようとします。しかし、それがなければ?私はAPI netstat -bが何を使用しているのか不思議であり、私はプログラミングの努力でそのAPIを使いたいと思っています。理想的には、新しいソケットがバインドされたときに私に通知することができます。それ以外の場合はポーリングする必要があります。これは非常に安価なものです。
追加された 著者 Brian B,