Android: determina de forma progama la lista de aplicaciones que tienen una conexión TCP abierta

Me gustaría saber qué aplicaciones en mi android se conectan a qué direcciones IP. En esencia, me gustaría saber lo que estas aplicaciones hacen en el fondo sin mi aprobación.

Intenté una llamada de OS de netstat en mi aplicación de monitoreo, que ya me da las conexiones abiertas y las direcciones IP conectadas, pero no hay nombre de proceso, pid o uid que me permita asignar una conexión a una aplicación en particular. 'netstat -p' parece no proporcionar la información del proceso.

¿Alguna sugerencia? TIA.

Si lees el código fuente de 'netstat', en realidad lee los datos de / proc / net / tcp que contiene un volcado de la tabla de socket TCP, como se verá a continuación.

sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode 0: 0100007F:13AD 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 517 1 cbf19b40 300 0 0 2 -1 

usted descubrirá que cada conexión tiene un uid, porque Android OS ejecutar cada aplicación con una cuenta de usuario que significa poseer un uid único, que le ayudará a asignar todas las conexiones a un solo proceso.

Espero que esta información sea de ayuda.

Creo que hay dos razones posibles.

  1. Se debe a problemas de permiso, ya que algunas versiones de distribución de Android tienen más restricciones de configuración de permisos, debería intentar leer los datos de / proc /% pid% / net / tcp (% pid% replace por PID para su aplicación).

  2. el sistema está trabajando en IPv6, usted necesita comprobar "/ proc /% pid% / net / tcp6" en lugar de "/ proc /% pid% / net / tcp", su ip tendrá que convertir de IPv6 a IPv4.

Utilice el comando busybox para obtener información sobre el proceso

 busybox netstat -tp 

En varios android 4.x he visto genuinas conexiones IPv4 aparecen con IPv4-mapeado direcciones IPv6 en / proc / net / tcp6 en lugar de v4 llano, como este:

  sl local_address remote_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode 0: 0000000000000000FFFF00000100007F:99FC 00000000000000000000000000000000:0000 0A 00000000:00000000 00:00000000 00000000 10071 0 32037 1 00000000 300 0 0 2 -1 1: 0000000000000000FFFF00005EE9A8C0:9BB0 0000000000000000FFFF000007E6AB45:01BB 08 00000000:00000001 00:00000000 00000000 10071 0 32270 1 00000000 22 4 6 6 -1 

Así que parece que debe comprobar udp6 / tcp6 también.

  • Android Lollipop preestablece datos móviles cuando Wi-Fi no tiene acceso a Internet?
  • Cuándo comprobar la conexión a Internet en aplicaciones móviles
  • ¿Es posible simular un estado especificado de conexión a Internet ("3G", "H", ...)
  • ¿Cómo saber que la conexión a Internet existe o no?
  • Enviar datos desde bluetooth android a PC con bluecove
  • Conexión Bluetooth sin emparejamiento
  • ¿Error al enviar archivos a través de bluetooth en android?
  • ¿Cómo obtener una notificación cuando un dispositivo se conecta a su android wifi tethering AP?
  • Cómo hacer que dos dispositivos Android se comuniquen a través de TCP
  • Android Problema de conexión múltiple de Bluetooth?
  • Compruebe la conexión a Internet en ANDROID
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.