>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
Python

Hoe de fysieke locatie van een router te vinden via BSSID met geowifi

Elke keer dat een smartphone zoekt naar een bekend netwerk, scant het de radiogolven en ziet het tientallen routers in de buurt. Grote bedrijven zoals Google en Apple verzamelen al jaren deze data gekoppeld aan GPS-coördinaten om apparaatlocaties in dichtbevolkte stedelijke gebieden te bepalen zonder te wachten op satellieten.

Als gevolg hiervan is er een enorme kaart ontstaan van alle thuis- en kantoortoegangspunten om ons heen. Als je de MAC-adres (BSSID) van een router of een zeldzame netwerknaam (SSID) te pakken hebt, kun je de fysieke coördinaten binnen enkele seconden ophalen.

geowifi

Het geowifi-hulpprogramma neemt deze routine voor zijn rekening. In plaats van handmatig een dozijn verspreide services te controleren, stuurt het queries naar alle beschikbare Wi-Fi-geolocatiedatabases tegelijk.

Waarom alle databases combineren in één script

Elke database verzamelt coördinaten op zijn eigen manier. De Wigle-service vertrouwt op enthousiastelingen die met ingeschakelde scanners door steden rijden. Apple's database wordt gevuld door iOS-smartphones, Google's door Android-apparaten.

Als je alleen op één plek zoekt, is de kans groot dat je niets vindt. Toegangspunten verplaatsen zich, verschijnen in nieuwe ontwikkelingen, of verdwijnen uit openbare lijsten. Het geowifi-hulpprogramma bevraagt open en semi-gesloten bronnen:

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

Een interessant detail: queries naar Apple werken hier zonder registratie en betaalde abonnementen, met een implementatie geïnspireerd door het iSniff-GPS-project. Voor Google en Wigle heb je API-sleutels nodig, maar ze hebben gratis limieten die voldoende zijn voor dagelijkse taken.

Snelle start en installatie

Het project is geschreven in Python. Je kunt het lokaal implementeren in een virtuele omgeving of via een Docker-container.

Voor lokaal werk heb je git en Python 3 nodig:

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

Als je geen zin hebt in de Python-omgeving, bouw dan de container:

docker build -t geowifi:latest .

API-configuratie

In de gw_utils directory staat een config.yaml bestand. Hier configureer je de toegangstokens:

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

Voor basiswerk met open databases en Apple zijn sleutels optioneel, maar daarmee is het percentage gevonden punten merkbaar hoger.

Hoe zoeken naar coördinaten

Het hulpprogramma accepteert een netwerk-ID en een zoektype-vlag: op BSSID (MAC-adres) of SSID (netwerknaam).

Zoeken op MAC-adres van router:

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

Zoeken op netwerknaam:

python3 geowifi.py -s ssid "MyCoffeeShop_Free"

Standaard genereert het programma een HTML-kaart met markeringen van verschillende dataleveranciers. Verschillende databases kunnen coördinaten met een lichte spreiding retourneren, en een visuele kaart helpt om het werkelijke dekkingsgebied of het exacte gebouw te begrijpen.

Map output

Als de output nodig is voor latere automatisering of doorgeven aan een ander script, voeg dan gewoon de -o json parameter toe:

[
  {
    "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
  }
]

Naast coördinaten identificeert het hulpprogramma ook direct de fabrikant van de netwerkapparatuur via het OUI-voorvoegsel van het MAC-adres.

Waar dit van pas komt

Het hulpmiddel is ontworpen voor OSINT- en netwerkverkenningsdoeleinden, maar het is ook nuttig in verwante gebieden:

  1. Forensisch onderzoek en netwerkdump-analyse. Als de laptop onderzocht nog probe-requests of een geschiedenis van Wi-Fi-netwerkverbindingen heeft bewaard, kun je de geschatte bewegingsroute van het apparaat reconstrueren via BSSID.
  2. Beveiligings- en privacy-audit. Het is nuttig om je thuis- of bedrijfsrouter te controleren. Vaak vind je dat een router die van een appartement naar een vakantiehuis is verhuisd nog steeds op het oude adres wordt weergegeven in Google- of Apple-databases.
  3. IoT-apparaat geolocatie. Wanneer een apparaat alleen de lijst van zichtbare toegangspunten meldt, zet het script deze lijst om in begrijpelijke geografische coördinaten zonder GPS-module te gebruiken.

Conclusie

geowifi is een compact, praktisch hulpmiddel dat één specifieke taak oplost zonder onnodige complexiteit. De code is eenvoudig, de afhankelijkheden zijn standaard en de logica is transparant. Als je OSINT-onderzoeken uitvoert, draadloze verkeersdumps analyseert, of je afvraagt hoeveel geodata er lekt via Wi-Fi-routers, voeg dit hulpmiddel dan toe aan je toolkit.

Gerelateerde projecten