2013-01-13 134 views
1

我想知道数据包嗅探器的原理。他们如何捕获其他应用程序的数据包?数据包嗅探器的原理

我一直在想这么久。我有一个理论。这与代理服务器的工作有关吗?当一些特殊的API被使用时,所有的本地应用程序都会将它们的数据包发送到指定的ip而不是它们的原始数据包。数据包嗅探器接收和复制,并最终将它们发送回原始目的地。是对的吗?

你能解释一下数据包嗅探器是如何工作的吗? 非常感谢您的帮助。

+0

大多数数据包嗅探器都是使用Pcap库(LibPcap或WinPcap)编写的。你可以在Codeproject.com上搜索教程。 –

回答

8

网络接口(即硬件网络适配器卡)接收线路上的所有通信量,而不管它是否发往它们。

接收到一个帧后,驱动程序检查收件人MAC address中的frame header,并将其与接口的MAC进行比较。如果地址匹配,则帧被转发到OS以供使用;如果不是,则丢弃。

接口还提供对被投入promiscuous mode,其中所有帧被转发给OS的选项。这就是数据包嗅探器所做的事情:他们向驱动程序发送一条命令,将卡置于混杂模式,然后可以读取从网络物理到达的所有流量,而不管它发往谁。

当然混杂模式不是保证你会收到全部网络上的流量;网络拓扑结构可以很容易地阻止发送给他人的通信首先到达您的系统(例如that's what switches typically do)。

+0

哇!太感谢了!它真的帮了大忙! – isbae93