【问题标题】:libpcap on OSX - trying to use statistical modeOSX 上的 libpcap - 尝试使用统计模式
【发布时间】:2011-02-20 13:50:35
【问题描述】:
我正在尝试在 OSX 上编译使用 statistical mode 中的 libpcap 的 C 程序。原始代码是使用 winpcap 库为 Windows 编写的。我 Mac 上的 libpcap 版本从未听说过它使用的 pcap_setmode 函数 - 我有一种讨厌的感觉,它可能是特定于 Windows 的。
有什么方法可以在 OSX 上以统计模式捕获?如果没有,操作系统的体系结构/功能是否会阻止这种情况,或者这是添加到 WinPcap 的额外功能,而这从来不是主库的功能?
【问题讨论】:
标签:
macos
pcap
winpcap
libpcap
packet-sniffers
【解决方案1】:
pcap_setmode()只在Win32端口有定义,因为Windows的WinPcap驱动是唯一支持统计模式的抓包机制; Mac OS X 和 *BSD 和 AIX 和 Solaris 11 中的 BPF 不支持,Linux 中的 PF_PACKET 套接字不支持,Solaris 和 HP-UX 中的 DLPI 不支持,等等。
UN*Xes 通常带有支持捕获数据包的机制,因此 libpcap 可以直接使用它,而无需添加自己的内核模式代码;这意味着它无法控制那些捕获机制拥有的设施——如果一个捕获机制没有它,libpcap 就无法添加它。 Windows 没有这种机制。它确实带有 NDIS,它可以支持这种机制,因此 WinPcap 带有一个内核模式驱动程序,它使用 NDIS 来实现这种机制,因此可以更好地控制它提供的功能。
【解决方案2】:
pcap_setmode() 仅在 Win32 端口中有一个定义(我不知道原因)。