コンピューターでデバイスのアドレスを見つけようとしています。これまでのところ、デバイスのリストを(pcap_findalldevsで)取得できましたが、それらのアドレスにアクセスする方法がわかりません。私はこのマンページを見ました - http://www.tcpdump.org/pcap3_man.html このようなものが書かれています
インターフェイスのアドレスのリストの最初の要素へのポインタをアドレス指定します
そして、これ
アドレスのリストの各要素は pcap_addr_t 型で、次のメンバーがあります。
だから私はこのコードを持っています
pcap_if_t *alldevsp , *device;
char *devname , **devs;
int count = 1 , n;
if(pcap_findalldevs(&alldevsp, errbuf))
{
printf("Error: %s" , errbuf);
exit(1);
}
device = alldevsp;
pcap_addr_t list;
printf("\nDevices:\n");
while(device != NULL)
{
printf("%d. %s - %s", count++ , device->name , device->description);
list = device->addresses[0];
printf("address: %s\n",(char *) inet_ntoa(list.addr));
device = device->next;
}
コンパイルは問題ありませんが、実行しようとすると次のようになります。
デバイス: 1. eth0 - (null) アドレス: 144.208.30.8 2. wlan0 - (null) アドレス: 128.213.30.8 セグメンテーション違反
3 番目のデバイスが USB でアドレスがないため、segfault は理解できますが、eth0 と wlan0 の IP が間違っており、一致しません。
私は何を間違っていますか?