About

geomac helps you to find the geographic location of Wi-Fi access points by their MAC addresses (also known as BSSIDs). geomac receives data about the location of access points from network geolocation providers (such as Yandex Locator, Google, Mylnikov.org, etc.), which, in turn, collect this data through crowdsourcing in their mobile applications.

This program may be useful for OSINT experts, wireless network researchers and wardrivers.

Features

Screenshots

geomac Windows screenshot
geomac Linux screenshot

Downloads

Current version:

Linux

Arch Linux x86_x64

Arch Linux 32 pentium4

Arch Linux ARM aarch64

Arch Linux ARM armv7h

Debian/Ubuntu amd64

Debian/Ubuntu i386

Debian/Ubuntu arm64

Debian/Ubuntu armhf

Statically linked CLI version x86_64

Statically linked CLI version x86

Statically linked CLI version aarch64

Statically linked CLI version armv7

Android

Termux aarch64

Windows

Installer (32/64 bit)

Portable (32-bit)

Portable (64-bit)

Linux installation notes

Linux packages include console and GUI versions of the program. Download the package that matches your distribution and your CPU architecture and install it.

Debian, Ubuntu, Linux Mint and derivatives

Currently the program supports Debian 10 and above, Ubuntu 18.04 and above.
Install using apt:
sudo apt install PATH
for example:
sudo apt install ./geomac-amd64.deb
or using Gdebi.

Arch Linux, Manjaro and similar

Install using pacman:
sudo pacman -U PATH
for example:
sudo pacman -U geomac-0.1-1-x86_64.pkg.tar.zst

Other Linux distributions

  1. Download the static executable that matches your CPU architecture.
  2. Put it in /usr/bin/, for example, /usr/bin/geomac.
  3. Grant execute permission to this file:
    sudo chmod +x /usr/bin/geomac

Android/Termux

Install using:
dpkg -i PATH

Usage

CLI version usage

Command line version is available on Linux and Windows (you should add geomac to PATH during installation).
Usage:
geomac [-P] <bssids>
Examples:
$ geomac 34e8940e3cde
Results for 34:E8:94:0E:3C:DE
Google          | -37.9029556, 144.7619731
Apple           | -37.90275955, 144.76197814
$ geomac -P 34e8940e3cde
Results for 34:E8:94:0E:3C:DE
Google          | -37.9029556, 144.7619731
Yandex Locator  | not found
Microsoft       | not found
Apple           | -37.90275955, 144.76197814
Mylnikov.org    | not found
$ geomac 0c:b5:27:d9:d5:cc f8:e9:03:14:30:4a
Results for 0C:B5:27:D9:D5:CC
Google          | 33.5072744, -7.6533991
Apple           | 33.50793457, -7.65461874

Results for F8:E9:03:14:30:4A
Google          | 32.0674328, 34.8164628
Yandex Locator  | 32.0674324, 34.8162308
Apple           | 32.06740188, 34.81635284

GUI version usage

On Linux freedesktop platforms, the graphical version is available via
Applications → Internet → geomac
or
Applications → Accessories → geomac

You can also launch it from the terminal using

geomac-gui

On Windows, the graphical version is avaliable via Start menu → geomac

FAQ

How does the program work?

In order to find the location of a Wi-Fi access point, you need to know its BSSID (Wi-Fi MAC address), which, in fact, is its unique identifier. After the program receives the BSSID, it sends specially generated HTTP requests to the servers of geolocation providers and in response receives location information, from which it allocates latitude and longitude. The program includes different location providers to cover as many access points as possible, as well as to give the user the opportunity to compare the results. Providers such as Yandex Locator, Google, Apple, Microsoft collect access point location data from users of smartphones, tablets, laptops with satellite navigation using their mobile applications and services.

What network location providers does the program use?

Currently geomac includes 5 location providers: Yandex Locator, Mylnikov.org, Apple, Microsoft and Google.

How do I find the BSSID (MAC address) of an access point?

To find out the BSSID of an access point that is located near you, you can use Wi-Fi scanners, such as LinSSID, iw, wireless-tools (Linux), WiFi Analyzer (Android), inSSIDer (Microsoft Windows), or specialized software for auditing the security of wireless networks and wardriving: Kismet, airodump-ng, wash, Wifite, OneShot (Linux), WPSApp, WiFi Warden, WIFI WPS WPA TESTER (Android).

How to find the access point on the map?

When you know the coordinates of the access point (two fractional numbers, latitude and longitude), copy them to the clipboard and paste them into the search field on the Google Maps or Yandex.Maps and press Enter.

How accurately does geomac determine the location?

The accuracy of the detection depends on many conditions: location of the router, network location provider, weather conditions during the crowdsourcing scan, crowdsourcing equipment, etc. In most cases, the accuracy is 10-50 meters.

The program did not find my access point. What can I do?

Wait a while and then search again. You may have encountered a case where the access point appeared on the air recently, and none of the network location providers have yet managed to register it. You can also try using other services, for example, WiGLE.

Why is the program proprietary (the author does not share the source code)?

The program implements an original solution that has not been presented anywhere in the public domain. As the author of this program, I respect the owners of the services that the program uses, and I do not want to publish information that they do not publish. I may publish the source code in the future.

Author

This program was developed by Victor Golovanenko with the hope of making the world a little better.
Contact me:

Telegram
GitHub

Acknowledgements

Special thanks to the person under the nickname Jemacivan for starting to create the Windows installer, helping with testing, with building geomac for different platforms, with creating this web page.

Many thanks to the developers and community of the Nim programming language, this program was built using Nim and the following open source libraries:

thanks to their developers.

Also, a special thanks to the person under the nickname Yardanico, thanks to whom I learned about Nim and wanted to study it. He also helped me solve some problems with Nim.