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.
- No se puede conectar al servidor Firebird desde android
- Conexión de dos dispositivos mediante libgdx
- HttpURLConnection Android: compresión gzip
- Android - Manejo de la conexión apn cambiante
- Android: ¿Cómo obtener la encriptación Wifi actual?
¿Alguna sugerencia? TIA.
- ¿Cuándo cerrar la conexión db en android? Cada vez que finaliza tu operación o después de salir de la aplicación
- Agente de usuario HTTP de Android
- Crear configuración de punto de acceso Wifi en android
- cómo determinar si una conexión a Internet está actualmente disponible y activa en un dispositivo android?
- Uso de BluetoothChat para comunicarse con ELM327
- ¿Cómo conecta su terminal con el emulador de Android?
- Android - ¿Cómo comprobar el acceso a Internet, no sólo la conectividad a wifi?
- Error en la conexión de Google Analytics con Google para el servicio
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.
-
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).
-
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.