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.
- searches for a location using data from five network location providers
- has console and GUI versions
- sends HTTP requests asynchronously to speed up lookups
- accepts MAC addresses in various formats
Arch Linux x86_x64
Arch Linux 32 pentium4
Arch Linux ARM aarch64
Arch Linux ARM armv7h
Statically linked CLI version x86_64
Statically linked CLI version x86
Statically linked CLI version aarch64
Statically linked CLI version armv7
Installer (32/64 bit)
Linux installation notesLinux 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 derivativesCurrently the program supports Debian 10 and above, Ubuntu 18.04 and above.
Install using apt:
sudo apt install PATHfor example:
sudo apt install ./geomac-amd64.debor using Gdebi.
Arch Linux, Manjaro and similarInstall using pacman:
sudo pacman -U PATHfor example:
sudo pacman -U geomac-0.1-1-x86_64.pkg.tar.zst
Other Linux distributions
- Download the static executable that matches your CPU architecture.
- Put it in /usr/bin/, for example, /usr/bin/geomac.
Grant execute permission to this file:
sudo chmod +x /usr/bin/geomac
dpkg -i PATH
CLI version usageCommand line version is available on Linux and Windows (you should add geomac to PATH during installation).
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
Applications → Accessories → geomac
You can also launch it from the terminal using
On Windows, the graphical version is avaliable via Start menu → geomac
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.
AuthorThis program was developed by Victor Golovanenko with the hope of making the world a little better.
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:
- argparse [MIT License]
- NiGui [MIT License]
- protobuf [MIT License]
- nimpb [MIT License]
- struct [MIT License]
- zippy [MIT License]
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.