我几乎意外地发现我的机器正在向波兰的一台机器发送和接收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和一些嗅探器代码的组合来监视和跟踪使用您计算机上任何特定应用程序正在与之通信的协议的端口上的主机。如果我得到一些空闲时间,我会考虑创建这个,如果你知道一个应用程序完成所有这些,请告诉我。