Libpcap не захватывает какой-либо интерфейс на устройстве Android

Я пытаюсь сделать анализ пакетов Application, и я построил его как систему Application для nexus 4.

r = pcap_findalldevs (&alldevs, errbuf);
printf("R==========%d",r);   

__android_log_write(ANDROID_LOG_ERROR, "Tag",errbuf );

error is E/Tag ( 4751): Can't open netlink socket 13:Permission denied

Я не могу захватить какой-либо интерфейс на моем устройстве. Я также дал разрешения для моего приложения

Манифест.xml

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.NET_ADMIN"/>
<uses-permission android:name="android.permission.NET_RAW"/>
<uses-permission android:name="android.permission.ACCESS_CHECKIN_PROPERTIES"/>
<uses-permission android:name="android.permission.ACCESS_SUPERUSER"/>
<permission-group android:name="android.permission-group.SYSTEM_TOOLS"></permission-group>

person nauman siddiqui    schedule 13.05.2015    source источник


Ответы (1)


Почему вы записываете ошибку? Чтобы процитировать справочную страницу pcap_findalldevs():

RETURN VALUE
   pcap_findalldevs() returns 0 on success and -1 on failure.   If  -1  is
   returned,  errbuf  is  filled  in  with  an  appropriate error message.
   errbuf is assumed to be able to hold at least PCAP_ERRBUF_SIZE chars.

Если r равно 0, ошибки не произошло, и НЕТ гарантии, что errbuf содержит что-либо значимое. Делать

if (pcap_findalldevs (&alldevs, errbuf) == -1)
    __android_log_write(ANDROID_LOG_ERROR, "Tag",errbuf );

вместо.

person Community    schedule 13.05.2015
comment
не могли бы вы предложить какое-либо решение, чтобы избежать этой ошибки? Заранее спасибо - person nauman siddiqui; 13.05.2015
comment
Какая ошибка? Если pcap_findalldevs() не возвращает -1, ошибки нет. Изменили ли вы свой код, чтобы он делал то, что я сказал, то есть проверил возвращаемое значение pcap_findalldevs() и вывел сообщение об ошибке только тогда, когда он возвращает -1, а затем запустил его и сделал это тогда распечатать ошибку? - person ; 13.05.2015