Skip to content

roozea/esp32-captive-portal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎭 ESP32 Captive Portal Standalone

A standalone Evil Portal for ESP32-S3 — no Flipper Zero, no Marauder, no dependencies. Just flash and go.

Perfect for the Electronic Cats WiFi Dev Board, but works on any ESP32-S3.

License Platform Samsung Flipper


🤔 Why does this exist?

If you've tried running Evil Portal with the Electronic Cats WiFi Dev Board (or any ESP32-S3), you probably hit these walls:

  1. Samsung phones don't auto-popup the captive portal with the default IP
  2. Changing the IP to fix Samsung breaks serial communication — a bug in ESP32-S3's USB-CDC

This firmware says "screw it" and runs completely standalone. No serial needed in the field anyway.

The USB-CDC Bug (for the curious)

On ESP32-S3 with native USB, calling WiFi.softAPConfig() with a custom IP kills USB serial permanently. We've reported this to Espressif.

Our solution: Don't fight it. Run standalone, capture credentials, blink LEDs. Done.


✅ What works

Device Auto-popup? Notes
iPhone ✅ Yes Instant popup
Android (Pixel, etc.) ✅ Yes Instant popup
Samsung ✅ Yes Thanks to IP 4.3.2.1
Windows ✅ Yes Shows notification
Flipper Zero ❌ Not needed This is standalone!

⚡ Quick Start

Requirements

  • ESP32-S3 board (tested on Electronic Cats WiFi Dev Board)
  • Arduino IDE 2.x
  • ESP32 Arduino Core 2.0.x (⚠️ NOT 3.x — causes compilation errors)

Installation

# 1. Install required libraries
cd ~/Documents/Arduino/libraries
git clone https://github.com/mathieucarbou/AsyncTCP
git clone https://github.com/mathieucarbou/ESPAsyncWebServer

# 2. Download this repo
git clone https://github.com/YOUR_USERNAME/esp32-captive-portal
  1. Open EvilPortal_Standalone.ino in Arduino IDE

  2. Configure Arduino IDE:

    • Board: ESP32S3 Dev Module
    • USB CDC On Boot: Enabled
  3. Upload and you're done!


🎨 Customization

Change network name (line ~15):

const char* WIFI_SSID = "Starbucks Wifi";

Change login page: Edit the HTML inside index_html. We include templates in /templates/.

LED pins (for non-Electronic Cats boards):

#define LED_ACCENT_PIN 4   // Blue - change to your pins
#define LED_STATUS_PIN 5   // Green
#define LED_ALERT_PIN  6   // Red

📦 Templates included

Template Description
EvilPortal_Standalone.ino Clean, generic "Free WiFi"
templates/EvilPortal_Starbucks.ino Coffee shop themed

Want to contribute a template? PRs welcome!


🔧 Known Issues

ESP32 Core 3.x doesn't work

Use 2.0.17 or similar. Version 3.x has breaking changes.

Serial stops working after boot

This is expected! The IP change that enables Samsung support breaks USB-CDC. Credentials are still captured — you just can't see them in Serial Monitor.

We've reported this bug to Espressif. See docs/KNOWN_ISSUES.md for the full technical deep-dive.


🤝 Related projects

Project What it does Samsung? Standalone?
ESP32 Marauder Full WiFi/BT toolkit
Flipper Evil Portal Portal via Flipper
This project Just captive portal

Use Marauder if you need the full toolkit. Use this if you just want a working portal that actually triggers on Samsung.


⚠️ Legal

For authorized security testing only. Get permission before testing networks you don't own.


🙏 Credits


📄 License

MIT — Use it, modify it, share it. Just don't sue me.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages