Build your own dedicated wardriving rig using Raspberry Pi, ESP32, or other microcontrollers. From simple scanners to AI-powered Pwnagotchi.
Choose a project that matches your skill level and goals. From beginner-friendly builds to advanced AI-powered systems.
An AI-powered Raspberry Pi wardriving companion that learns from its environment. Uses bettercap to capture WPA handshakes and PMKID hashes while displaying an adorable face on an e-ink screen.
A portable Kismet setup running on Raspberry Pi. Full-featured wireless detection with web UI accessible from your phone. Great for dedicated, always-on wardriving.
Ultra-compact and cheap WiFi scanner using ESP32 microcontroller. Perfect for a first DIY project or creating multiple distributed sensors.
Pre-built ESP32 development kit with screen and battery. Just flash the firmware and go. Great balance of ease and capability.
The most popular homebrew wardriving project. Here's everything you need to build your own AI-powered wardriving companion.
Download the latest Pwnagotchi image and flash it to your microSD card using Balena Etcher or Raspberry Pi Imager. The image includes all necessary software pre-configured.
Edit the config.toml file on the boot partition. Set your name, whitelist your home network, configure plugins, and set up GPS if you have one. The config file is well-documented.
Attach the e-ink display HAT to the Pi's GPIO pins. Connect the UPS HAT for portable power. If using a case, install everything securely. No soldering required for basic builds.
Insert the SD card, connect power, and wait. First boot takes 5-10 minutes as the AI initializes. You'll see the face appear on the e-ink display when ready.
Connect via USB (RNDIS/SSH) or Bluetooth to access the web UI. Fine-tune settings, install plugins, and start your wardriving adventures. The web UI shows real-time stats.
# /etc/pwnagotchi/config.toml main.name = "YourPwny" main.lang = "en" main.whitelist = [ "YourHomeNetwork", "FriendsNetwork" ] main.plugins.grid.enabled = true main.plugins.grid.report = true main.plugins.grid.exclude = [ "YourHomeNetwork" ] # GPS Plugin (if you have GPS module) main.plugins.gps.enabled = true main.plugins.gps.speed = 19200 main.plugins.gps.device = "/dev/ttyUSB0" # Web UI ui.web.enabled = true ui.web.address = "0.0.0.0" ui.web.port = 8080 ui.web.username = "changeme" ui.web.password = "changeme" # Display settings ui.display.enabled = true ui.display.type = "waveshare_2" ui.display.color = "black"
Build an ultra-compact, battery-powered WiFi scanner for under $30. Perfect for a weekend project.
ESP32 -> GPS (TX/RX), SD Card (SPI), Battery (5V/GND)
Simple Arduino sketch to scan WiFi networks and log to SD card:
// ESP32 WiFi Scanner - Basic Example #include "WiFi.h" #include "SD.h" #include "TinyGPS++.h" TinyGPSPlus gps; File logFile; void setup() { Serial.begin(115200); Serial2.begin(9600); // GPS on Serial2 WiFi.mode(WIFI_STA); WiFi.disconnect(); if (!SD.begin(5)) { // CS pin 5 Serial.println("SD Card failed!"); return; } logFile = SD.open("/wigle.csv", FILE_APPEND); if (logFile) { logFile.println("MAC,SSID,AuthMode,Channel,RSSI,Lat,Lon"); logFile.close(); } } void loop() { // Update GPS while (Serial2.available() > 0) { gps.encode(Serial2.read()); } int n = WiFi.scanNetworks(); logFile = SD.open("/wigle.csv", FILE_APPEND); for (int i = 0; i < n; i++) { String line = WiFi.BSSIDstr(i) + ","; line += WiFi.SSID(i) + ","; line += getEncryption(WiFi.encryptionType(i)) + ","; line += String(WiFi.channel(i)) + ","; line += String(WiFi.RSSI(i)) + ","; line += String(gps.location.lat(), 6) + ","; line += String(gps.location.lng(), 6); logFile.println(line); } logFile.close(); delay(5000); // Scan every 5 seconds }