我想知道包嗅探器的原理。如何捕获其他应用程序的数据包?
我已经想了这么久了。我有一个理论。这与代理服务器的工作有关吗?一旦使用了某个特殊的api,所有本地应用程序都会将数据包发送到指定的ip,而不是原始ip。包嗅探器接收并复制,最后将它们发送回原始目的地。对吗?
你能解释一下包嗅探器是如何工作的吗?
提前谢谢你的帮助。
最佳答案
网络接口(即硬件网络适配器卡)接收线路上的所有通信量,而不管它是否指向它们。
在接收到帧后,驱动程序在MAC address中检查接收者的frame header,并将其与接口的mac进行比较。如果地址匹配,则将帧转发到操作系统以供使用;如果不匹配,则将其丢弃。
接口还提供了被放入promiscuous mode的选项,其中所有帧都转发到操作系统。这就是包嗅探器所做的:他们向驱动程序发送一个命令,将卡置于混乱模式,然后可以读取从网络物理到达的所有流量,不管它是发送给谁的。
当然,混杂模式并不能保证您将接收到网络上的所有流量;网络拓扑结构可以很容易地防止发送给其他人的流量首先到达您的系统(例如that's what switches typically do)。
关于c - 数据包嗅探器的原理[已关闭],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14302803/