我应该嗅探 fiven 机器(Linux - Ubuntu)上安装的所有网络接口(interface)。为此,我正在使用 pcap 库。所以我正在使用 pcap_findalldevs(...) 函数找到所有可用的设备,但结果也是我不想使用的 usb 和环回设备。
你能告诉我如何只过滤网络(以太网和 wifi)设备吗?
最佳答案
我想这取决于您所说的“网络”设备是什么意思。
如果您指的是 IPv4/IPv6 设备,您可以查询 pcap_findalldevs
返回的 pcap_if_t->address
并查看每个地址的 addr.sa_family
字段以确定该设备是否支持 AF_INET
和/或 AF_INET6
。环回设备将 (pcap_if_t->flags & PCAP_IF_LOOPBACK) != 0
。
问题在于,它将包括非以太网和 WiFi 的设备,例如 token 环、IP-over-Firewire、PPP 等。 PCAP 不提供可移植的方式来了解硬件类型。
关于linux - 从 pcap_findalldevs() 过滤网络设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9267109/