Skip to content

EVIL-ESP

A super portable evil device based on the ESP8266, running MicroPython, with a single button and small OLED display.

Source

Attacks

AttackBehavior
Beacon spammerFloods fake WiFi beacons so many phantom APs appear nearby
Captive portalHosts a “free hotspot” and redirects users to a registration page (credentials logged, no real sign-in)
Evil twinClones a protected network’s ESSID as an open AP; captive portal asks for the WiFi password “to complete a firmware upgrade”

Credentials land in data/captive_portal/log.csv and data/evil_twin/log.csv (viewable on-device or on the MicroPython console at startup).

Installation

  1. Wire an I2C OLED and push button (pin with pull-up)
  2. Flash MicroPython from the repo firmware/ folder
  3. Edit data/config/config.json for hardware and preferences
  4. Upload the project tree (ampy or similar)

Optional external antenna and power bank for portability. Headless mode: disable display/button in config and set the startup attack (evil twin needs target SSID in config).

Configuration mode

Start config mode, join the board’s setup AP, and change attack options in the captive config page without reflashing.

Deauthentication note

MicroPython cannot send 802.11 deauth frames on current Espressif SDK versions. For evil-twin workflows, the repo includes a separate Arduino deauther sketch for another ESP8266, or use authorized lab tooling on Linux.

Use responsibly and only on networks you own or are permitted to test.

Curated technical notes — open source on GitHub