Du reverse tethering sur Android (sans root)

Posté par  (site web personnel) . Édité par Davy Defaud, ZeroHeure et Nils Ratusznik. Modéré par bubar🦥. Licence CC By‑SA.
28
6
avr.
2017
Android

Je vous présente un outil que j’ai développé, qui permet aux appareils Android d’utiliser la connexion du PC sur lequel ils sont branchés. On appelle ça du « reverse tethering ».

Je l’ai appelé gnirehtet (rev <<< tethering en bash).

Il ne nécessite pas d’accès root, que ce soit sur le téléphone ou sur le PC. En revanche, il nécessite Java 8 et les Android tools (adb).

Comment l’utiliser ?

Il suffit de télécharger la dernière publication, de l’extraire et d’exécuter la commande suivante sur le PC :

./gnirehtet rt

La première fois, Android demande une confirmation : VPN request

Une fois activé, un logo en forme de clef apparaît dans la barre de statut du téléphone : Key

Pour l’arrêter : Ctrl + C.

Le fichier README donne plus de détails.

Comment ça marche ?

Très succinctement, l’application s’enregistre en tant que réseau privé virtuel (VPN) pour intercepter tout le trafic réseau du téléphone, qu’il transmet à un serveur tournant sur le PC, qui ouvre les connexions et relaie le contenu dans les deux sens.

Voici un beau dessin pour faire joli (c’est l’architecture du serveur relais) : Architecture du serveur relais

Vers l’∞ (et au‐delà)

Notez qu’il est possible d’activer en même temps le tethering (de manière à ce que le PC utilise la connexion du téléphone), et le reverse tethering (pour que le téléphone utilise la connexion du PC). Ne faites pas ça ! :D

En parlant d’infini (même si ça n’a rien à voir), savais‐tu, cher journal, qu’une boucle infinie était un undefined behavior (Ah bon, pourquoi ? Quel rapport avec le dernier théorème de Fermat ?) ?

Aller plus loin

  • # sinon il y a le tethering wifi, dispo sous tout bon linux

    Posté par  . Évalué à 0.

    Il ne nécessite pas d'accès root, que ce soit sur le téléphone ou sur le PC. Par contre, il nécessite Java 8 et adb.

    en dehors du POC, quels sont les cas d'usage ?

    je peux deja partager mon reseau filaire via le WIFI du laptop et le wifi du smartphone
    +> n'importe quel distrib moderne sait le faire

    et si c'est pour partager un point d'acces wifi, ben je met le telephone directement sur le point d'acces.

    • [^] # Re: sinon il y a le tethering wifi, dispo sous tout bon linux

      Posté par  . Évalué à 7.

      Cas d'usage réel : travaillant avec des administrateurs réseau paranoïaques, le partage wifi est bloqué sur mon PC, et les points d'accès wifi n'acceptent pas les appareils inconnus.
      Après, il y a sans doute des possibilités de bidouiller mon smartphone ou mon PC pour contourner le blocage, mais j'ai signé une charte informatique où j'ai promis que je ne le ferai pas… Si un outil me permet de partager ma connexion du PC au smartphone simplement, je prends !

    • [^] # Re: sinon il y a le tethering wifi, dispo sous tout bon linux

      Posté par  (site web personnel) . Évalué à 10.

      Le besoin initial est très spécifique : pour déployer automatiquement des devices (installer des applis, configurer le téléphone, etc.), on veut éviter d'utiliser le wifi (c'est moins pratique à configurer et quand il y a beaucoup de devices c'est pas l'idéal).

      Mais il y a d'autres usages plus "généraux".

      Par exemple, en entreprise, on n'est pas toujours sur le même réseau par câble ou par wifi. Il m'est déjà arrivé plusieurs fois que le serveur auquel une application Android doit accéder soit sur le réseau filaire, inaccessible par wifi.

      Certes, il est parfois possible de partager la connexion en créant un point d'accès wifi, mais d'une part ce n'est pas toujours facile (je suis sous Debian stable avec XFCE, NetworkManager ne propose pas l'option, ou alors je l'ai ratée), et d'autre part ça n'est pas possible avec un PC fixe sans carte wifi.

      Après, j'ai lu ici et là d'autres cas d'usage, que je liste en vrac :

      • ne payer qu'un seul accès dans certains hôtels qui facturent l'accès wifi en fonction du nombre de devices connectés ;
      • sniffer à partir du pc toutes les adresses auquel un device se connecte ;
      • utiliser une tablette dont le wifi est cassé…

      Il y en a sans doute d'autres.

      L'usage est bien sûr moins courant que le tethering (partager la connexion du téléphone pour le PC), mais ça peut servir dans certaines situations…

      blog.rom1v.com

    • [^] # Re: sinon il y a le tethering wifi, dispo sous tout bon linux

      Posté par  . Évalué à 0.

      en dehors du POC, quels sont les cas d'usage ?

      Si tu es trop éloigné du point d'accès pour un émetteur/récepteur wifi classique et que tu utilises un amplificateur: ça peut être intéressant de directement brancher le smartphone en USB plus tôt que de créer un pont wifi avec l'antenne du PC portable (s'il en possède une) qui va brouiller ton amplificateur :)

      Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat

  • # Version portable ?

    Posté par  (site web personnel) . Évalué à 3.

    Là où cette application peut être bien utile, c’est en la packageant en l’empaquetant en tant qu’application portable.

    Du coup, chez des amis où il n’y a pas de wifi ouvert, vu que tu n’as pas envie de taper le code WiFi imprononçable de 40 caractères de long sur ton clavier de 4cm de large, que même ton ami ne connait pas, eh bien là tu branches ton téléphone (et tu le recharges en même temps), tu lances l’appli portable sur clé USB, et pendant que ton ami utilise son PC tranquille, toi tu économises ton forfait ;-)

    C’est possible ?

    • [^] # Re: Version portable ?

      Posté par  . Évalué à 2. Dernière modification le 06 avril 2017 à 17:43.

      Chez un ami, si tu n'as pas un câble USB sous la main (parce que iBidule par exemple…) tu vas sur l'adresse locale, s'il n'a pas changé la clé WPA (ou WEP), il n'a probablement pas changé le pass admin pour se connecter au modem.

      Et sur l'interface tu copies-colles la clé ou alors tu lui proposes de la changer pour une nouvelle qu'il sera capable de retenir, vous prendrez un bonus de +10 en expertise informatique pour la faction "entourage non-initié à l'informatique" dans un cas comme dans l'autre :).

      La majeure partie des morts l'était déjà de son vivant et le jour venu, ils n'ont pas senti la différence.

      • [^] # Re: Version portable ?

        Posté par  . Évalué à 2.

        En Belgique le mot de passe admin est un mot de passe aléatoire pour chaque box. Au moins chez 2 des principaux opérateurs. Et ce, depuis plusieurs années. Ceci dit, à une époque c'était admin/admin et écoute sur l'ip publique pour l'interface d'administration…

        Par contre pour gagner en le +10 on apprend au gens ce qu'est le wps, activateur juste avec un bouton :-)

      • [^] # Re: Version portable ?

        Posté par  . Évalué à 2.

        Petite question : tu la copies-colles comment la clé depuis l'interface de la box sur le pc de l'ami vers la popup de connexion wi-fi sur ton téléphone ?

        • [^] # Re: Version portable ?

          Posté par  . Évalué à 2.

          Déjà ça va pas être simple de copier-coller (prendre la main sur l'interface du portable c'est possible mais il me semble qu'il faut un téléphone rooté, au moins sous Android) mais en plus la clé est souvent masquée.

        • [^] # Re: Version portable ?

          Posté par  . Évalué à 1.

          Tout le monde a un presse-papiers partagé entre son laptop et son smartphone en 2017 non ?

          (Je plaisante évidemment)

          La majeure partie des morts l'était déjà de son vivant et le jour venu, ils n'ont pas senti la différence.

    • [^] # Re: Version portable ?

      Posté par  . Évalué à 3.

      c'est sur qu'on a tous un cable USB de 20 metres pour que tu puisses te brancher sur MON PC, et continuer en pianotant sur TON telephone portable…

      sans compter que tu veux que j'installes ou executes un logiciel dont tu ne sais rien.

    • [^] # Re: Version portable ?

      Posté par  (site web personnel) . Évalué à 3.

      Du coup, chez des amis où il n’y a pas de wifi ouvert, vu que tu n’as pas envie de taper le code WiFi imprononçable de 40 caractères de long sur ton clavier de 4cm de large, que même ton ami ne connait pas

      Les box commencent à intégrer le WPS

      Avec ton smartphone tu essaye de te connecter sur le wifi du copain, puis t’appuie sur le bouton wifi de la box -> c'est bon c'est autorisé sans mettre de mot de passe

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.