我正在尝试使用Winsock嗅探CPP中的数据包,但是存在问题。
创建套接字时,它必须是“原始套接字”,以便可以转移到“嗅探模式”:sniffer = socket(AF_INET, SOCK_RAW, IPPROTO_IP);,但是当我创建该套接字时,该程序需要处于管理模式。

我想知道是否有一种绕过此方法的方法,或者有另一种无需管理模式即可嗅探CPP中的数据包的方法。
谢谢!

最佳答案

该操作具有特权,并且在某些平台上根本不可用。在POSIX平台上,用户可能需要位于某个组中,而不必是root,在Linux上,您可以对代表网络接口(interface)的各个设备节点运行ls -l来找出适当的用户组(它可能仍是root)。

通常,您需要一个带有内核空间驱动程序\模块的数据包捕获库来实际绕过它。此类库的示例是Wireshark使用的全能libpcap。有一些其他系统(包括Windows)的端口称为WinPCap。

10-08 15:14