Saya sudah mencoba mendapatkan aplikasi untuk berjalan dengan baik, tetapi tampaknya tidak dapat menemukan antarmuka jaringan. Ini dirancang untuk berjalan tanpa hak administratif, dan karenanya memerlukan kemampuan file tertentu. Namun, masih tidak dapat menemukan antarmuka jaringan apa pun melalui libpcap.
Saya mencoba skrip sederhana untuk mereplikasi perilaku menggunakan libpcap ke daftar antarmuka jaringan untuk menguji masalahnya:
#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) {
printf("Error: %s\n", errbuf);
return(2);
}
printf("Device: %s\n", dev);
return(0);
}
Menerapkan kemampuan file dan memverifikasi bahwa itu diterapkan,
$ sudo setcap cap_net_raw,cap_net_admin=eip pcap_test
$ getcap pcap_test
pcap_test = cap_net_admin,cap_net_raw+eip
Masih tidak dapat menemukan antarmuka jaringan apa pun meskipun mengklaim memiliki izin yang benar. Berjalan sebagai pengguna super bekerja tanpa masalah, tentu saja.
$ ./pcap_test
Error: no suitable device found
$ sudo ./pcap_test
Device: eth0
Melewati urutan identik ini berfungsi seperti yang diinginkan di bawah Ubuntu 14.04 (dengan versi kernel 3.13.0-35-generik dan juga versi sebelumnya), tetapi saya belum dapat membuatnya bekerja di bawah Mint 17 atau 17.1 (dengan versi kernel 3.13.0-24-generik).
Apakah ada perubahan pada kernel yang memengaruhi kemampuan file? Apa pun yang relevan yang saya temukan online berusia beberapa tahun dan mengacu pada kernel yang sudah usang. Terima kasih!