libpcap:未检测到无线设备

时间:2009-10-09 18:40:11

标签: c pcap libpcap

我想捕获从我的机器出来的数据包,而我正在使用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。我怎样才能捕获无线接口呢?

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:3)

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

答案 2 :(得分:1)

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

但是,如果这只是一个快速而肮脏的测试程序,您可以找到接口名称并将其直接编码到您的程序中。您可以使用ifconfigtcpdump -D查找系统上的接口名称,然后拨打pcap_create("en1", errbuf)之类的电话。