Skip to content

feat: add DHCP Starvation, DNS Spoofer, BLE Tracker, Audio Jammer + custom AP name#2550

Open
quietdom wants to merge 8 commits into
BruceDevices:devfrom
quietdom:dev
Open

feat: add DHCP Starvation, DNS Spoofer, BLE Tracker, Audio Jammer + custom AP name#2550
quietdom wants to merge 8 commits into
BruceDevices:devfrom
quietdom:dev

Conversation

@quietdom

Copy link
Copy Markdown

What this PR does

Adds 4 new attack/monitoring features to Bruce firmware and improves Evil Portal AP naming.

New Features

WiFi Menu

  • DHCP Starvation - Exhausts DHCP pool by flooding with DISCOVER packets using random MAC addresses. Useful for network disruption testing.
  • DNS Spoofer - Runs a captive DNS server that resolves all queries to a chosen IP (gateway or custom). Redirects any device on the network.

BLE Menu

  • BLE Tracker - Passive BLE scanner that detects and tracks nearby Bluetooth devices with RSSI strength. Shows live device list.
  • Audio Jammer - Disrupts BLE audio streams (LE Audio, TWS earbuds) by flooding with noise packets. Three modes: BLE Audio, LE Audio, All.

Evil Portal

  • Now prompts for a custom AP name on every launch instead of defaulting to "Free Wifi". Users can type any SSID they want.

Existing features preserved

  • Cred Forward (WiFi menu)
  • AirTag Spoofer (BLE menu)
  • Notif Spoofer (BLE menu)

All features live in Bruce native menus - no extra submenus or arsenal sections.

@pr3y
pr3y changed the base branch from main to dev June 16, 2026 15:38
The evil-wifi-names picker became unreachable after the "Fix karma" commit added
\`if (apName.isEmpty()) apName = "Free Wifi";\` at the top of setup(), so on launch
you always got the bare keyboard and never the list of saved SSIDs. Show the
picker again (saved names + "Custom Wifi") when launching interactively with no
preset SSID, and drop the now-dead block below. Guard it with !_autoMode so
automated flows (e.g. Karma) never get an interactive prompt.
802.11 limits an SSID to 32 bytes; truncate before it reaches WiFi.softAP() so a
longer name (e.g. from a cloned target) produces a well-formed AP instead of
being silently rejected or mangled.
Prompt for an AP password after the SSID and pass it to WiFi.softAP(), so the
portal can mimic a WPA2 network (same name+password as a real one) instead of
always being open. Empty keeps it open; 8-63 chars enable WPA2, and 1-7 chars are
rejected and re-asked (softAP would otherwise fail). Skipped in autoMode (e.g.
Karma) and in Verify mode, where the AP must stay open so victims can join and
enter the real Wi-Fi password to be verified.
@Pedro-Jesus-Fuentes-Morcillo

Copy link
Copy Markdown
Contributor

Hey @quietdom, I opened a PR on your dev branch (quietdom#4) with a few
Evil Portal improvements on top of your AP-name prompt.

The main one is an optional WPA2 password for the AP. Right now the portal is
always open, so I added a prompt to set a password (empty still = open). The point
is being able to clone both a real network's name AND its password, that's what
makes the Deauth+Clone actually behave like an evil twin, since a phone that has
the real WPA2 network saved won't auto-join an open AP with the same name. It skips
the password prompt in Verify mode, since there the AP has to stay open for the
victim to enter the real password.

I also brought back the saved-name picker (it had been unreachable since the "Fix
karma" commit added the default SSID at the top of setup, so you only ever got the
bare keyboard), and added a small 32-char cap on the SSID. Everything's confined to
evil_portal.cpp/.h. Have a look whenever you get a chance!

@quietdom

Copy link
Copy Markdown
Author

will look at this whenever i get the chance since im out of the country

…tal-wpa2

feat(evil-portal): saved-name picker + SSID cap + optional WPA2 password
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants