SkyLift is a low-cost Wi-Fi geolocation spoofing device. It uses the ESP8266 to broadcast Wi-Fi Beacon Frames that exploit a longstanding (2008) vulnerability in Wi-Fi geolocation services. Using SkyLift you can trick your phone to appearing almost anywhere in the connected world. Locations can be collected on-site or remotely using the Wigle.net API.
SkyLift has been used and tested for art exhibitions at galleries (Zoo Galerie, FACT, Eigen Lab), a museum show (La Gaîté Lyrique), and at events and performances (Transmediale, Cryptoraves, CCC).
How Well Does it Work?
In environments where cellular strength is poor and there are few Wi-Fi networks (less than 5) SkyLift works well, sometimes perfectly spoofing everyone's location. In dense urban environments where there are dozens of Wi-Fi networks SkyLift may have little or no ability to spoof locations. In such cases using multiple devices has shown slight improvements. Multiple devices can be used with multiple scan sources to cover larger areas.
Ideal locations are generally where Wi-Fi, GPS, and cellular signals are attenuated either by the building or by bodies. Parties and conference can work well, especially when rooms are located away from roads. Basements also work well because cellular and GPS signals are typically attenuated from metal in the floors, walls, or ceilings. Outdoor street-level areas with dozens of Wi-Fi networks and strong cellular signals tend to not work at all. Locations, such as open parks, with strong overhead GPS but weak/moderate cellular signal and minimal Wi-Fi networks sometimes works well. Basically, crowded indoor areas away from streets will yield better results. This is partially due to people (60% water) acting as Wi-Fi absorbers at 2.4GHz (the resonant frequency of H2O molecules).
A geolocation demo is provided in
arduino/skylift_demo. To run the firmware:
http://arduino.esp8266.com/stable/package_esp8266com_index.jsonto boards manager
NodeMCU 1.0 (ESP12-E Module)
arduino/skylift_demoin Arduino and upload sketch
wifi_tx_status = 1;to enable Wi-Fi
place_idx_cur = 1;to you preferred starting location
git clone https://github.com/adamhrv/skylift
python skylift/cli_jobs.py wigle_api --wigle_api_name [your_username] --wigle_api_key [your_api_key] --jobs data/jobs/wigle_api.csv
python skylift/cli_jobs.py arduino --jobs data/jobs/arduino.csv
You can run SkyLift using only the minimal NodeMCU Lua ESP8266 12E device (for less than $5). The OLED, PCB, switches, and case are all optional though recommended if you want to run multiple locations. For either option there are three main parts to setting up SkyLift:
Follow the guides (in progress) to setup each step:
You can also build your own PCBs
Or read up on more of the research on how Beacon Frames and Wi-Fi geolocation works
Original concept developed for and in collaboration with !Mediengruppe Bitnik and Surya Mattu for "Welcome to Ecuador" installation (2016) curated by Aude Launay for Zoo Galerie. Initial technical advisement from Julian Oliver, development research contributions from Leon Eckert, and beacon broadcasting code (for ESP8266) by https://github.com/kripthor/WiFiBeaconJam.
SkyLift began as an experiment trying to use a Raspberry Pi with a USB Wi-Fi dongle to spoof Wi-Fi access points to reproduce the research from PacketBrücke and Spoofing WiFi Geolocation services. After much frustration using an entire Linux computer for the highly-specialized task of only broadcasting Beacon Frames, the code from https://github.com/kripthor/WiFiBeaconJam provided a neat opportunity to try spoofing geolocation services with the ESP8266 and it actually worked. After comparing all other ESP Wi-Fi modules the NodeMCU 12E was chosen for this project because it has the lowest entry-level price for the highest functionality (USB serial converters, on-board LED, no assembly required, mass produced / easy to source). The antennae isn't as strong as the newer ESP modules but it is possible to cut the antennae's GND/PWR traces and solder in an antennae connector if you really need a long-range amplifier.
SkyLift is open source project developed and maintained by Adam Harvey