Je souhaite surveiller le trafic réseau de mon Android Phone. Je pensais utiliser tcpdump pour Android, mais je ne suis pas sûr de devoir compiler de manière croisée pour le téléphone.
Une autre question est la suivante: Si je veux surveiller les données de trafic pour une application donnée, y a-t-il une commande pour le faire?
TCPDUMP est l'un de mes outils favoris pour l'analyse de réseau, mais si vous avez du mal à compiler de manière croisée tcpdump pour Android, je vous recommanderais d'utiliser certaines applications du marché.
Voici les applications dont je parlais:
L'application Shark fonctionne avec les appareils enracinés. Si vous voulez l'installer, assurez-vous que votre appareil est déjà enraciné.
Bonne chance ;)
Si vous le faites depuis l'émulateur, vous pouvez le faire comme ceci:
Courir emulator -tcpdump emulator.cap -avd my_avd
pour écrire tout le trafic de l'émulateur dans un fichier local de votre PC, puis ouvrez-le dans Wirehark
Un article similaire pourrait aider ICI
Remarque: tcpdump nécessite des privilèges root, vous devrez donc rooter votre téléphone si ce n’est déjà fait. Voici un ARM binaire de tcpdump (cela fonctionne pour mon Samsung Captivate). Si vous préférez créer votre propre fichier binaire, les instructions sont ici (oui, vous devrez probablement effectuer une compilation croisée).
Découvrez également Shark For Root (un Android outil de capture de paquets basé sur tcpdump).
Je ne crois pas que tcpdump puisse surveiller le trafic par ID de processus spécifique. Le strace méthode auquel Chris Stratton fait référence semble être plus un effort que sa valeur. Il serait plus simple de surveiller des adresses IP et des ports spécifiques utilisés par le processus cible. Si cette information n'est pas connue, capturez tout le trafic pendant une période d'activité de processus, puis passez au crible le pcap résultant avec Wireshark.
L'outil DDMS inclus dans le Android SDK comprend un outil de surveillance du trafic réseau. Il ne fournit pas le genre de détails que vous obtenez avec tcpdump et des outils de bas niveau similaires, mais il est toujours très utile.
Documentation officielle: http://developer.Android.com/tools/debugging/ddms.html#network
Vous devez rooter le téléphone et effectuer une compilation croisée de tcpdump ou utiliser la version déjà compilée de quelqu'un d'autre.
Vous pourriez trouver plus facile de faire ces expériences avec l’émulateur, auquel cas vous pourriez faire la surveillance à partir du PC hôte. Si vous devez utiliser un périphérique réel, une autre option serait de le mettre sur un réseau wifi suspendu à une interface secondaire sur une boîte Linux exécutant tcpdump.
Je ne sais pas par coeur comment vous allez filtrer selon un processus spécifique. Une suggestion que j'ai trouvée dans certaines recherches rapides consiste à utiliser strace sur le processus sujet plutôt que tcpdump sur le système.
Sans root, vous pouvez utiliser des proxies de débogage comme Charlesproxy & Co.
Pour Android Téléphones (sans racine): - vous pouvez utiliser cette application tPacketCapture Ceci capturera le trafic réseau de votre appareil lorsque vous activez la capture. Voir this url pour plus de détails sur le reniflement du réseau sans enraciner votre appareil.
Une fois que vous avez le fichier qui est dans .pcap
_ vous pouvez utiliser ce fichier et analyser le trafic à l’aide de n’importe quel analyseur de trafic comme Wireshark.
Voir également ce post pour plus d’idées sur Capture du trafic de téléphones mobiles sur Wirehark
La capture de paquets est le meilleur outil pour suivre les données du réseau sur Android. N'a besoin d'aucun accès root et facile à lire et enregistrer les appels basés sur l'application. Vérifiez this out
Conditions préalables: adb et wireShark sont installés sur votre ordinateur et vous avez un appareil root Android.
adb Push ~/Downloads/tcpdump /sdcard/
adb Shell
su root
mv /sdcard/tcpdump /data/local/
cd /data/local/
chmod +x tcpdump
./tcpdump -vv -i any -s 0 -w /sdcard/dump.pcap
exit
exit
adb pull /sdcard/dump.pcap ~/Downloads/
Vous pouvez maintenant ouvrir le fichier pcap en utilisant Wireshark.
En ce qui concerne votre question sur la surveillance de processus spécifiques, recherchez l'identifiant de l'ensemble de votre application, appelons-le com.Android.myapp
ps | grep com.Android.myapp
/data/local
en utilisant la même procédure que pour tcpdump
ci-dessus.cd /data/local
./strace -p 1234 -f -e trace=network -o /sdcard/strace.txt
Maintenant, vous pouvez regarder strace.txt pour les adresses IP et filtrer votre journal Wirehark pour ces IP.
Essayez cette application https://play.google.com/store/apps/details?id=app.greyshirts.sslcapture
Nous pouvons voir toutes les communications réseau .. même les communications cryptées SSL.
L’approche courante consiste à appeler "cat/proc/net/netstat" comme décrit ici: