2014-11-26 4 views
0

У меня есть требование для аналогичной задачи, как указано в this link.. Пассивный мониторинг сокетов в Android. Один из способов - синтаксический анализ таблиц/proc/net/{tcp, udp, ...}. Но нам нужно постоянно следить за продолжением мониторинга; что не является эффективным способом. Поскольку это будет приложение для мобильных устройств, оно будет потреблять батарею, так как для этого требуется время процессора, чтобы отслеживать временной интервал (скажем, 1 секунду).Реализация Netlink для Android NDK

Но, я ищу подход, основанный на событиях. Поскольку я googled примерно то же самое, я закончил NETLINK для мониторинга сокетов. Но я замечаю, что Android NDK не поддерживает для

#include <linux/sock_diag.h> 
#include <linux/inet_diag.h> 
#include <linux/unix_diag.h> 
#include <linux/packet_diag.h> 
#include <linux/netlink_diag.h> 

Кто-нибудь пробовал использовать NETLINK в Android для мониторинга INET сокеты? Если да, пожалуйста, поделитесь информацией.

Спасибо.


UPDATE: Я пытался копировать вставляя выше файлы в «JNI» папку и построен с использованием NDK-сборки. Строительство было успешным, а также без сбоев во время выполнения. Но, создание сокета типа

socket(AF_NETLINK, SOCK_DGRAM, NETLINK_INET_DIAG) 

терпит неудачу с EACCES ошибки (13) - разрешение на создание сокета указанного типа и/или протокола отрицается.

Любые предложения по дальнейшему продвижению?

ответ

2

В Android Lollipop система безопасности Enhanced Linux (SELinux) в Android включена в режиме принудительного исполнения. Наблюдая/просматривая определения песочницы Android Source Code - SE Policy в app.te (в выпадающем выдержке), не будет поддерживаемых сокетов netlink.

app.te

# Privileged netlink socket interfaces. 

neverallow appdomain 

    self:{ 

     netlink_socket 

     netlink_firewall_socket 

     netlink_tcpdiag_socket 

     netlink_nflog_socket 

     netlink_xfrm_socket 

     netlink_audit_socket 

     netlink_ip6fw_socket 

     netlink_dnrt_socket 

    } *; 
+0

Это уже не так, что приложения не могут создавать NETLINK сокет. Источник: https://android.googlesource.com/platform/system/sepolicy/+/d31936f89c49bc5c54b84bd5095f3c417da14935%5E%21/#F1 – Mygod