Linux 从pcap_findalldevs()筛选网络设备
我应该嗅探安装在fiven机器(Linux-Ubuntu)上的所有网络接口。为此,我正在使用pcap库。因此,我发现所有能够使用pcap_findalldevs(…)函数的设备,但结果也是usb和环回设备,我不想使用它们Linux 从pcap_findalldevs()筛选网络设备,linux,ubuntu,pcap,Linux,Ubuntu,Pcap,我应该嗅探安装在fiven机器(Linux-Ubuntu)上的所有网络接口。为此,我正在使用pcap库。因此,我发现所有能够使用pcap_findalldevs(…)函数的设备,但结果也是usb和环回设备,我不想使用它们 你能告诉我,如何只过滤网络(以太网和wifi)设备吗?我想这取决于你所说的“网络”设备 如果您指的是IPv4/IPv6设备,您可以查询pcap\u If\u t->address返回的pcap\u If\t->address并查看每个地址的addr.sa\u family字段,
你能告诉我,如何只过滤网络(以太网和wifi)设备吗?我想这取决于你所说的“网络”设备 如果您指的是IPv4/IPv6设备,您可以查询
pcap\u If\u t->address
返回的pcap\u If\t->address
并查看每个地址的addr.sa\u family
字段,以确定该设备是否支持AF\u INET
和/或AF\u INET6
。环回设备将(pcap\u if\u t->flags&pcap\u if\u环回)!=0
问题是,这将包括非以太网和WiFi的设备,如令牌环、火线IP、PPP等。PCAP不提供了解硬件类型的便携式方法。如果“所有网络接口”的意思是“所有连接到物理网络的接口,并且不捕获网络以外的内容”-环回接口是前者的示例,Linux和FreeBSD 9.0及更高版本上的USB捕获设备是后者的示例-然后:
- 您可以按照apmasell的回答建议消除环回设备李>
- 通过忽略
返回pcap\u datalink()
或DLT\u USB\u LINUX
DLT\u USB\u LINUX\u映射的接口,可以消除USB捕获设备李>
- 您可以通过忽略
返回pcap\u datalink()
或DLT\u Bluetooth\u HCI\u H4
的接口来消除蓝牙捕获设备DLT\u Bluetooth\u HCI\u H4\u与\u PHDR
- 您可以通过忽略
pcap\u datalink()
这可能会消除大多数不感兴趣的设备(如果您有令牌环、PPP等接口,您可能希望在它们上捕获)