Android: programmgesteuert ermitteln, Liste der apps, die über eine TCP-Verbindung öffnen
Ich würde gerne wissen, welche Anwendungen auf meinem android eine Verbindung zu dem, was IP-Adressen. Im wesentlichen würde ich gerne wissen, was diese apps können im hintergrund und ohne meine Zustimmung.
Versuchte ich ein netstat-OS-Aufruf in meine monitoring app, die bereits mir die offenen verbindungen und die angeschlossenen IP-Adressen, aber es ist kein Prozess Namen, pid oder uid, die mir erlauben würde, um Karte eine Verbindung zu einer bestimmten app. 'netstat -p" scheint nicht zu den Prozess-info.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie Lesen, source-code für 'netstat', die es eigentlich liest Daten aus /proc/net/tcp hat einen dump der TCP-socket-Tabelle, die Daten wie unten.
entdecken Sie jede Verbindung hat eine uid, weil Android OS laufen jede Anwendung mit einem Benutzerkonto, das bedeutet eine einzigartige uid, es wird helfen, die anzeigen, dass jede Verbindung einer einzigen Prozess.
Ich hoffe, diese Informationen helfen.
Auf mehrere android-4.x ich habe gesehen, echte IPv4-verbindungen erscheinen mit IPv4-mapped-IPv6-Adressen in /proc/net/tcp6 anstelle von nur-v4, wie diese:
So scheint es, sollten Sie überprüfen, udp6/tcp6 als gut.
Ich denke, es gibt zwei mögliche Gründe.
Ist es aufgrund von Berechtigungsproblemen, da einige Android-version hat mehr Berechtigung einschränken Einstellungen vornehmen, sollten Sie versuchen das Lesen von Daten aus /proc/%pid%/net/tcp (%pid% ersetzen durch PID für Sie Ihre app).
das system arbeitet auf IPv6, die Sie brauchen, um zu überprüfen, "/proc/%pid%/net/tcp6" anstelle von "/proc/%pid%/net/tcp", seine ip zu konvertieren von IPv6 zu IPv4.
Verwenden
busybox
Befehl get process info