>_ DevTrendspt

Idioma

Início

Linguagens

Seções

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarcados Segurança
Python

Como Encontrar o Endereço Físico de um Roteador pelo BSSID Usando o geowifi

Toda vez que um smartphone procura uma rede familiar, ele escaneia as ondas de rádio e vê dezenas de roteadores ao redor. Grandes empresas como Google e Apple coletam esses dados combinados com coordenadas GPS há anos para determinar a localização de dispositivos em áreas urbanas densas sem esperar por satélites.

Como resultado, um mapa gigante de todos os pontos de acesso domésticos e de escritórios se formou ao nosso redor. Se você conseguir obter o endereço MAC de um roteador (BSSID) ou um nome de rede raro (SSID), você pode obter suas coordenadas físicas em poucos segundos.

geowifi

O utilitário geowifi cuida dessa rotina. Em vez de verificar manualmente uma dúzia de serviços dispersos, ele envia consultas a todos os bancos de dados de geolocalização Wi-Fi disponíveis de uma vez.

Por que combinar todos os bancos de dados em um único script

Cada banco de dados coleta coordenadas de sua própria forma. O serviço Wigle depende de entusiastas que dirigem pelas cidades com scanners ativados. O banco de dados da Apple é alimentado por smartphones iOS, o do Google por dispositivos Android.

Se você procurar um ponto em apenas um lugar, há uma alta chance de não encontrar nada. Pontos de acesso se movem, aparecem em novos desenvolvimentos ou desaparecem das listas públicas. O utilitário geowifi consulta fontes abertas e semi-fechadas:

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

Um detalhe interessante: consultas à Apple aqui funcionam sem registro e assinaturas pagas, usando uma implementação inspirada no projeto iSniff-GPS. Para Google e Wigle, você precisará de chaves de API, mas eles têm limites gratuitos que são suficientes para tarefas do dia a dia.

Início rápido e configuração

O projeto é escrito em Python. Você pode implantá-lo localmente em um ambiente virtual ou via contêiner Docker.

Para trabalho local, você precisará de git e Python 3:

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

Se você não quiser lidar com o ambiente Python, construa o contêiner:

docker build -t geowifi:latest .

Configuração da API

No diretório gw_utils há um arquivo config.yaml. É aqui que você configura os tokens de acesso:

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

Para trabalho básico com bancos de dados abertos e Apple, as chaves são opcionais, mas com elas a porcentagem de pontos encontrados é perceptivelmente maior.

Como pesquisar coordenadas

O utilitário aceita um identificador de rede e um sinalizador de tipo de pesquisa: por BSSID (endereço MAC) ou SSID (nome da rede).

Pesquisar pelo endereço MAC do roteador:

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

Pesquisar pelo nome da rede:

python3 geowifi.py -s ssid "MyCoffeeShop_Free"

Por padrão, o programa gera um mapa HTML com marcadores de diferentes provedores de dados. Bancos de dados diferentes podem retornar coordenadas com uma leve dispersão, e um mapa visual ajuda a entender a área de cobertura real ou o edifício exato.

Saída do mapa

Se a saída for necessária para automação subsequente ou passagem para outro script, basta adicionar o parâmetro -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
  }
]

Além das coordenadas, o utilitário identifica imediatamente o fabricante do equipamento de rede pelo prefixo OUI do endereço MAC.

Onde isso é útil

A ferramenta foi criada para tarefas de OSINT e reconhecimento de rede, mas também é útil em áreas relacionadas:

  1. Análise forense e de dumps de rede. Se o laptop sob investigação manteve solicitações de probe ou um histórico de conexões de rede Wi-Fi, você pode reconstruir a rota aproximada de movimento do dispositivo pelo BSSID.
  2. Auditoria de segurança e privacidade. É útil verificar seu roteador doméstico ou corporativo. Frequentemente você descobre que um roteador que foi movido de um apartamento para uma casa de campo ainda aparece no endereço antigo nos bancos de dados do Google ou Apple.
  3. Geolocalização de dispositivos IoT. Quando um dispositivo relata apenas a lista de pontos de acesso visíveis, o script converte essa lista em coordenadas geográficas compreensíveis sem usar um módulo GPS.

Conclusão

geowifi é uma ferramenta compacta e prática que resolve uma tarefa específica sem complexidade desnecessária. O código é simples, as dependências são padrão e a lógica é transparente. Se você realiza investigações OSINT, analisa dumps de tráfego sem fio ou simplesmente se pergunta quantos dados geográficos vazam através de roteadores Wi-Fi, adicione este utilitário ao seu kit de ferramentas.

Projetos relacionados