我几乎是无意中发现我的机器正在向波兰的一台机器发送和接收UDP数据包。这并不是说我对波兰有任何问题,我只是不知道为什么我的笔记本电脑需要与那里的服务器通信。反向DNS显示的只是ISP向某个最终用户提供地址。使用Wireshark,我可以监视消息。因为它们可能是加密的。从我的机器发送的所有数据包都有相同的源端口,所以很明显发送它们的应用程序打开了这个UDP套接字来使用它。我正在寻找方法:
1)枚举系统中当前打开的所有套接字,包括创建套接字的进程,对于TCP和UDP,还包括它们当前绑定到的端口和地址。
2)因为应用程序可以立即打开、使用和关闭这些套接字,所以我希望找到(或者甚至可能编写)一个程序,一旦启动,它将在每次创建套接字时以某种方式获得通知,或者更重要的是,当绑定到源和/或目的地址和端口时获得通知。对于UDP,我希望还能够监视/跟踪套接字已向其发送消息的目标IP地址和端口。
我不想监控通信量本身,如果我想查看通信量,我可以使用Wireshark。我希望能够交叉引用以发现生成数据包的应用程序。我想知道它是否来自我信任的进程,或者它是否是我需要进一步调查的东西。
有没有人知道有什么应用程序(针对Windows平台)可以做到这一点?如果没有,有没有关于提供这种功能的.NET或Windows API的想法,我应该自己编写吗?
编辑:* 经过进一步研究-看起来要使用的API是GetExtendedUdpTable和GetExtendedTcpTable,CodeProject.com提供了一些用.NET Package 这些API的示例因此,需要将此API和一些嗅探器代码结合起来,以监视和跟踪机器上的任何特定应用程序正在与哪些端口、哪些主机使用哪些协议进行通信。如果我有空闲时间,我会考虑创建这个应用程序,如果你知道有一个应用程序可以做到这一切,请告诉我。*
3条答案
按热度按时间piah890a1#
尝试SysInternals TCPView。尽管它的名字,它也处理UDP。
unhi4e5o2#
netstat -b
以枚举所有端口沿着进程名称。avwztpqn3#
您可以尝试使用SysInternals的进程监视器(ProcMon.exe或ProcMon64.exe)。
它允许通过“UDP发送”操作过滤进程-并提供详细的UDP连接数据,包括源和目标地址(IP)和端口等。