【问题标题】:libpcap : No Wireless Devices detectedlibpcap:未检测到无线设备
【发布时间】:2009-10-09 18:40:11
【问题描述】:

我想捕获从我的机器发出的数据包,并且我正在使用 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。我怎样才能让它也捕获无线接口?

【问题讨论】:

    标签: c pcap libpcap


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 是的。无需猜测,它在手册页中:“pcap_lookupdev() 返回一个指向适合与 pcap_open_live() 和 pcap_lookupnet() 一起使用的网络设备的指针”
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-12-16
        • 1970-01-01
        • 2014-10-31
        • 2021-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多