2011-02-14 36 views
0

我正在处理的应用程序需要跟踪另一个应用程序的连接性,这意味着检查另一个应用程序是否正在生成和接收IP通信。多套接字“重复”数据?

我们没有其他应用程序的API,所以通过WinSock跟踪IP流量。

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

我们再从套接字读取数据不同步,并期待在IP报头看交通属于跟踪应用程序 - 我们定义一个RAW IP套接字,并设置与东西相当于IO控制做到这一点。

出现了两个问题 -

  1. 有另一种更好的方法来追踪IP流量?具体而言,我们需要知道哪些主机将数据发送到机器以及将数据发送到哪些主机以及何时发送数据。
  2. 使用上述方法,是从目标应用程序截获的“被盗”数据?或者,目标应用程序将其无缝插入其套接字中?

感谢,
阿萨夫

+0

您使用的互联网协议(TCP,UDP)以上的任何协议“接收的数据报是复制到所有SOCK_RAW插座......”? – Kovags 2011-03-10 11:36:45

+0

@Nop - 没有任何相关性。我们只关心是否有数据通过IP发送。我们甚至不关心它是TCP还是UDP,只是机器已经开始相互通话了。 – 2011-03-11 00:09:49

回答

2
  1. 这是通向轨道交通如果你不想要的驱动程序。如果你接受司机,WinPCap是要走的路。有了更多的限制,你可以看看建立的TCP连接(如netstat),但是根据你的要求,我一定会选择你使用的原始套接字方式。

  2. 使用你的方法,数据被复制,而不是被盗。唯一明确的文档我能找到这说明是MSDN