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()可能なすべてのデバイスのリストを作成し、ユーザーに 1 つを選択するように求める必要があります (または、ユーザーにコマンド ラインで番号nを指定させてから、_n_ 番目のデバイスを使用させます)。

しかし、これが簡単なテスト プログラムである場合は、インターフェイス名を見つけて、プログラムに直接コーディングすることができます。ifconfigまたはを使用tcpdump -Dして、システム上のインターフェース名を見つけてから、 のような呼び出しを行うことができますpcap_create("en1", errbuf)

于 2009-12-07T19:00:34.370 に答える