>_ DevTrendsfr

Langue

Accueil

Langages

Sections

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarqué Sécurité
Python

Comment trouver l'adresse physique d'un routeur par BSSID avec geowifi

Chaque fois qu'un smartphone recherche un réseau familier, il scanne les ondes radio et détecte des dizaines de routeurs autour de lui. De grandes entreprises comme Google et Apple collectent ces données associées aux coordonnées GPS depuis des années pour déterminer la localisation des appareils dans les zones urbaines denses, sans attendre les satellites.

Il en résulte une carte géante de tous les points d'accès domestiques et de bureau qui nous entourent. Si vous mettez la main sur l'adresse MAC d'un routeur (BSSID) ou un nom de réseau rare (SSID), vous pouvez obtenir ses coordonnées physiques en quelques secondes.

geowifi

L'utilitaire geowifi prend en charge cette routine. Au lieu de vérifier manuellement une douzaine de services dispersés, il envoie des requêtes à toutes les bases de données de géolocalisation Wi-Fi disponibles en une seule fois.

Pourquoi combiner toutes les bases de données dans un seul script

Chaque base de données collecte les coordonnées à sa manière. Le service Wigle s'appuie sur des passionnés qui parcourent les villes avec des scanners activés. La base de données d'Apple est alimentée par les smartphones iOS, celle de Google par les appareils Android.

Si vous recherchez un point dans un seul endroit, vous avez de fortes chances de ne rien trouver. Les points d'accès changent de place, apparaissent dans de nouveaux développements, ou disparaissent des listes publiques. L'utilitaire geowifi interroge des sources ouvertes et semi-fermées :

  • Wigle
  • Apple Geolocation Services
  • Google Geolocation API
  • Mylnikov (mylnikov.org)
  • WifiDB
  • Combain
  • Freifunk Carte

Un détail intéressant : les requêtes vers Apple fonctionnent ici sans inscription ni abonnement payant, grâce à une implémentation inspirée du projet iSniff-GPS. Pour Google et Wigle, vous aurez besoin de clés API, mais ils proposent des limites gratuites suffisantes pour les tâches quotidiennes.

Démarrage rapide et configuration

Le projet est écrit en Python. Vous pouvez le déployer localement dans un environnement virtuel ou via un conteneur Docker.

Pour travailler en local, vous aurez besoin de git et de Python 3 :

git clone https://github.com/GONZOsint/geowifi
cd ./geowifi/
virtualenv geowifi
source geowifi/bin/activate
python3 -m pip install -r requirements.txt

Si vous ne souhaitez pas gérer l'environnement Python, construisez le conteneur :

docker build -t geowifi:latest .

Configuration de l'API

Dans le répertoire gw_utils se trouve un fichier config.yaml. C'est là que vous configurez les jetons d'accès :

wigle_auth: "your_encoded_token"
google_api: "your_google_api_key"
combain_api: "your_combain_key"
no-ssl-verify: false

Pour un travail basique avec les bases de données ouvertes et Apple, les clés sont facultatives, mais avec elles le pourcentage de points trouvés est sensiblement plus élevé.

Comment rechercher des coordonnées

L'utilitaire accepte un identifiant de réseau et un indicateur de type de recherche : par BSSID (adresse MAC) ou SSID (nom du réseau).

Recherche par adresse MAC du routeur :

python3 geowifi.py -s bssid C8:D7:19:XX:XX:XX

Recherche par nom de réseau :

python3 geowifi.py -s ssid "MyCoffeeShop_Free"

Par défaut, le programme génère une carte HTML avec des marqueurs provenant de différents fournisseurs de données. Différentes bases de données peuvent renvoyer des coordonnées avec un léger écart, et une carte visuelle aide à comprendre la zone de couverture réelle ou le bâtiment exact.

Sortie de la carte

Si la sortie est nécessaire pour une automatisation ultérieure ou pour la transmettre à un autre script, il suffit d'ajouter le paramètre -o json :

[
  {
    "module": "google", 
    "bssid": "C8:XX:XX:XX:5E:45", 
    "latitude": 33.571844, 
    "longitude": -112.0495897
  }, 
  {
    "module": "vendor_check", 
    "vendor": "Cisco-Linksys, LLC"
  }, 
  {
    "module": "apple", 
    "bssid": "C8:XX:XX:XX:5E:45", 
    "latitude": 33.57198715, 
    "longitude": -112.0495812
  }, 
  {
    "module": "wigle", 
    "bssid": "C8:XX:XX:XX:5E:45", 
    "ssid": "Vertigo", 
    "latitude": 33.60998154, 
    "longitude": -112.0495922
  }
]

En plus des coordonnées, l'utilitaire identifie immédiatement le fabricant de l'équipement réseau grâce au préfixe OUI de l'adresse MAC.

Où cela s'avère utile

L'outil a été créé pour les tâches OSINT et de reconnaissance réseau, mais il est également utile dans des domaines connexes :

  1. Forensique et analyse de dumps réseau. Si l'ordinateur portable étudié a conservé des requêtes probe ou un historique de connexions aux réseaux Wi-Fi, vous pouvez reconstruire l'itinéraire approximatif du appareil par BSSID.
  2. Audit de sécurité et de confidentialité. Il est utile de vérifier votre routeur domestique ou d'entreprise. On découvre souvent qu'un routeur déplacé d'un appartement vers une maison de campagne apparaît toujours à l'ancienne adresse dans les bases de données Google ou Apple.
  3. Géolocalisation des appareils IoT. Lorsqu'un appareil ne signale que la liste des points d'accès visibles, le script convertit cette liste en coordonnées géographiques compréhensibles sans utiliser de module GPS.

Conclusion

geowifi est un outil compact et pratique qui résout une tâche spécifique sans complexité inutile. Le code est simple, les dépendances sont standard et la logique est transparente. Si vous effectuez des investigations OSINT, analysez des dumps de trafic sans fil, ou simplement vous demandez combien de géodonnées fuient à travers les routeurs Wi-Fi, ajoutez cet utilitaire à votre boîte à outils.

Projets similaires