【问题标题】:Libpcap not capturing any interface on android deviceLibpcap 未捕获 android 设备上的任何接口
【发布时间】:2015-07-24 05:50:53
【问题描述】:

我正在尝试制作一个数据包嗅探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

我无法在我的设备上捕获任何界面。我还授予了我的应用程序的权限

Manifest.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>

【问题讨论】:

    标签: android packet libpcap packet-capture packet-sniffers


    【解决方案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,则没有发生错误,并且 NO 保证 errbuf 包含 任何 有意义的内容。做

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

    改为。

    【讨论】:

    • 您能否建议任何解决方案来避免此错误?提前感谢
    • 什么错误?除非pcap_findalldevs() 返回-1,否则没有错误。您是否更改了代码以执行我所说的操作 - 即,检查 pcap_findalldevs() 的返回值并仅在返回 -1 时打印错误消息,然后运行它,然后执行然后打印一个错误?
    猜你喜欢
    • 1970-01-01
    • 2012-02-18
    • 2015-09-09
    • 2011-07-31
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    相关资源
    最近更新 更多