1

我想捕获从我的机器发出的数据包,并且我正在使用 libpcap(版本 1.0.0-1)。问题是,像这样的基本程序 -

#include <stdio.h>
#include <pcap.h>

int main(int argc, char *argv[]) {
    char *dev, errbuf[PCAP_ERRBUF_SIZE];
    dev = pcap_lookupdev(errbuf);
    if (dev == NULL) {
        fprintf(stderr, "%s\n", errbuf);
        return (2);
    }
    printf("Device : %s\n", dev);
    return (0);
}

好像没有显示无线接口。每次我编译并运行程序时,它都会检测到 eth0。我怎样才能让它也捕获无线接口?

4

3 回答 3

5

pcap_lookupdev() 返回系统上的默认网络设备,通常是列出的第一个设备。pcap_findalldevs() 返回系统中所有设备的枚举,您可以使用它来选择设备并从中捕获。

于 2009-11-24T22:47:25.300 回答
3

尝试使用 pcap_findalldevs()。我猜 pcap_lookupdev() 匹配列表中的第一个条目是合适的接口

于 2009-10-09T19:30:50.293 回答
1

正如其他人所说,pcap_lookupdev()只需返回找到的第一个设备。您需要使用pcap_findalldevs()构建所有可用设备的列表,然后提示用户选择一个(或者让用户在命令行中指定一个数字n,然后使用第 _n_th 个设备)。

但是,如果这只是一个简单粗暴的测试程序,您可以找出接口名称并将其直接编码到您的程序中。您可以使用ifconfigtcpdump -D找出系统上的接口名称,然后拨打pcap_create("en1", errbuf).

于 2009-12-07T19:00:34.370 回答