有没有办法监视哪个进程在Windows中发送UDP数据包(源/目标IP和端口)?

Bri*_*n B 6 sockets windows binding monitoring udp

我几乎意外地发现我的机器正在向波兰的一台机器发送和接收UDP数据包.不是我对波兰有任何问题,我只是不知道为什么我的笔记本电脑需要与那里的服务器通信.反向DNS仅显示ISP向某个最终用户提供地址.使用Wireshark,我可以监视消息,这些消息可能是难以理解的,因为它们可能是加密的.从我的机器发送的所有数据包都有相同的源端口,所以发送它们的应用程序显然打开了这个UDP套接字来使用它.我正在寻找方法:

1)枚举系统中打开的所有当前套接字,包括创建它的进程,对于TCP和UDP,它们当前绑定到哪些端口和地址.

2)因为应用程序可以打开这些套接字,使用它们并立即关闭它们,我很乐意找到(或者甚至可能写入)一个程序,一旦启动就会以某种方式在每次创建套接字时收到通知,或者更重要的是当绑定到源和/或目标地址和端口.对于UDP,我希望能够监视/跟踪套接字已向其发送消息的目标IP地址和端口.

我不想监控流量本身,如果我想查看流量,我有Wireshark.我希望能够交叉引用以发现生成数据包的应用程序.我想知道它是来自我信任的过程,还是我需要进一步调查的过程.

有没有人知道可以做到这一点的任何应用程序(对于Windows平台)?如果没有,有关提供此功能的.NET或Windows API的任何想法,我是否应该自己编写?

编辑: 经过进一步研究 - 看起来像要使用的API是GetExtendedUdpTable和GetExtendedTcpTable,CodeProject.com有一些样本包装在.NET中(参见http://www.codeproject.com/Articles/14423/Getting-the-active- TCP-UDP-connections-using-the-G).因此,需要使用此API和一些嗅探器代码的组合来监视和跟踪使用您计算机上任何特定应用程序正在与之通信的协议的端口上的主机.如果我有空闲时间,我会考虑创建这个,如果你知道一个应用程序完成所有这些,请告诉我.

Rem*_*eau 10

尝试SysInternals TCPView.尽管它的名字,它也处理UDP.


Sus*_*Pal 3

netstat -b枚举所有端口以及进程名称。

  • 这将告诉我哪个进程正在侦听 UDP 端口,但我如何知道谁发送了 UDP 数据包?我想如果我使用 WinPCAP 并查看来自特定本地计算机端口的 UDP 数据包,我可以使用 netstat -b 尝试在列表中查找该本地端口。但如果它不存在呢?我很好奇 netstat -b 使用什么 API,我想在任何编程工作中使用该 API。理想情况下,它可以在绑定新套接字时通知我,否则我必须进行轮询,而且我怀疑这是一件非常便宜的事情...... (6认同)