Как использовать "pcap_lookupdev ()" в libpcap? - PullRequest
2 голосов
/ 19 сентября 2010

Код не может найти устройство, я хочу знать, что делает pcap_lookupdev ()?спасибо

#include <pcap.h>
int main(int argc, char *argv[])
{
    pcap_t *handle;

    char *dev;// = "eth0";
    char errbuf[PCAP_ERRBUF_SIZE];
    dev = pcap_lookupdev(errbuf);
    if (dev == NULL) {
        fprintf(stderr, "Couldn't find default device: %s\n", errbuf);
        return(2);
    }
    printf("Device: %s\n", dev);
    return(0);

    handle = pcap_open_live(dev, BUFSIZ, 1, 1000, errbuf);
    if (handle == NULL) {
        fprintf(stderr, "Couldn't open device %s: %s\n", dev, errbuf);
        return(2);
    }


}

Ответы [ 3 ]

7 голосов
/ 19 сентября 2010

pcap_lookupdev, кажется, просто возвращает первое устройство, которое может найти (если оно есть), кроме устройства обратной петли.

Вы запускаете это как root?Обычным пользователям не разрешается открывать или проверять эти устройства.

Лично я считаю pcap_lookupdev довольно бесполезным, поскольку вы не можете контролировать, какое устройство оно вам дает.

0 голосов
/ 03 марта 2016

Код должен быть скомпилирован, связан и выполнен как root:

sudo gcc -o dev-find dev-find.c lpcap

работал на меня.

0 голосов
/ 18 апреля 2015

Когда вы компилируете программирование pcap.Вам нужно упомянуть -lpcap в конце файла программы с привилегиями root.Например.

#gcc YourFileName.c -lpcap
#./a.out
or
#gcc -Wall -o YourFileName YourFileName.c -lpcap
#./YourFileName

Здесь # означает пользователя root, gcc - это коллекция компиляторов GNU, -lpcap указывает использование библиотеки libpcap

...