dimanche 11 janvier 2015

Comment prendre une trace IP avec Wireshark ?



Afin de valider le comportement de mon application, j'ai eu besoin de réaliser des traces IP sur mon Nexus 5. Je n'ai jamais eu de soucis avant Android Lollipop. Il suffit de posséder un téléphone rooté et d'installer l'application Wireshark. Wireshark possède une interface très simple mais efficace. Elle permet ainsi de lancer une trace IP sur le mobile avec les paramétrages voulus.
Je ne vais pas expliquer ce qu'est une trace IP, ni comment fonctionne Wireshark, ni comment rooter ou flasher un Nexus 5. Il y a déjà des milliers d'infos sur le Net à ce sujet.

Le but de cet article est d'expliquer comment j'ai fait fonctionner Wireshark sur Android Lollipop car un simple appareil rooté ne suffit plus.

Erreur PIE

Ma première surprise a été de rooter mon Nexus 5 sous Lollipop, d'installer Wireshark et de constater que ça ne fonctionne pas. J'ai commencé par tenter une exécution de tcpdump. 
J'ai obtenu l'erreur suivante:
error: only position independent executables (PIE) are supported.
Pourquoi cette erreur ? En surfant un peu, j'ai trouvé ce post sur xda : Fix bypassing PIE security check

PIE is a useful security feature, as randomizing the address space makes it significantly more difficult for an attacker to exploit bugs in a program. However, in this case, one must trade off compatibility for security: PIE is only available in JB 4.1 and above, so most app developers targeting a wide range of Android versions have disabled PIE in their builds. The new PIE check in "L" will cause breakage for most apps that ship native executables.
Pour résumer, Google a décidé d'activer le PIE qu'ils avaient désactivé suite à des problèmes.

Contourner le problème

Il y a deux solutions : 
  • Recompiler TCPDUMP avec le support PIE
  • Désactiver le PIE sur Android L
J'ai choisi la deuxième solution. La première demanderai du temps et je ne souhaitais pas passer ma journée sur ce problème.

Pour désactiver le PIE, il n'ya rien de plus simple grâce à shinyquagsire23 de XDA, ils suffit de télécharger le fichier patch-pie.zip (download here), de flasher ce fichier et le tour est joué ! 
Vous pouvez maintenant lancer Wireshark et faire des captures de trace IP :)

Si j'ai le temps, j'essaierai de générer un tcpdump avec le support de PIE.

0 commentaires:

Enregistrer un commentaire