DSTIKE Hackheld · Volume 6

DSTIKE Hackheld Volume 6 — Web Interface — Full Users Guide

Every page, every button, default credentials, troubleshooting

Contents

SectionTopic
1First connection
2Default credentials
3URL map
4The Home page
5The Scan page
6The SSIDs page
7The Stations page
8The Names page
9The Attack page
10The Settings page
11The Info page
12JSON API endpoints
13Multi-browser support
14Troubleshooting
15What’s next

1. First connection

The Hackheld boots as a Wi-Fi access point. The connection flow on any device with a Wi-Fi radio (laptop, phone, tablet, another ESP):

  1. Power on the Hackheld (slide power switch or plug in USB-C — the firmware boots in ~3 seconds).
  2. The OLED shows the home menu: Scan / SSIDs / Stations / Names / Attack / Settings / Info.
  3. On your client device, open the Wi-Fi picker. The Hackheld’s SSID pwned appears.
  4. Connect with password deauther. Your client device gets DHCP-assigned an IP in the 192.168.4.x/24 range.
  5. Open a browser. Navigate to http://192.168.4.1 (the SoftAP gateway IP).
  6. The Deauther web UI loads.

The captive-portal trick that some “evil” portals use — automatic redirect to the captive page — is not implemented in Spacehuhn’s firmware. You have to type the URL manually. Most modern OS Wi-Fi clients (iOS / Android / macOS / Windows 10+) detect that the SoftAP has no internet uplink and pop a captive-portal banner; clicking the banner takes you to a captive-detect endpoint, which the firmware does not serve. Just close the banner and type the URL.

iOS captive-portal nag: iOS will detect “no internet” on the Hackheld’s SoftAP and prompt every minute or so. The fix is to enable “Use This Network Without Internet” in Wi-Fi settings → tap the (i) → “Auto-Join” off / “Use Without Internet” on. Same on Android.

2. Default credentials

Out of the box, the firmware ships with:

FieldValue
SSIDpwned
Passworddeauther
AuthenticationWPA2-PSK
Channel1
IP (the Hackheld)192.168.4.1
DHCP range (clients)192.168.4.2 – 192.168.4.10
Web UI URLhttp://192.168.4.1

These are universally known and trivially found via nmcli or any Wi-Fi scanner. Before any real fieldwork, change them from the Settings page (§10).

3. URL map

The full list of URLs the firmware serves:

URLTypePurpose
http://192.168.4.1/static HTMLHome / launcher
http://192.168.4.1/scan.htmlstatic HTMLScan page
http://192.168.4.1/ssids.htmlstatic HTMLSSID list editor
http://192.168.4.1/stations.htmlstatic HTMLStation list
http://192.168.4.1/names.htmlstatic HTMLNamed target editor
http://192.168.4.1/attack.htmlstatic HTMLAttack launcher
http://192.168.4.1/settings.htmlstatic HTMLSettings
http://192.168.4.1/info.htmlstatic HTMLInfo
http://192.168.4.1/api/*JSONThe control plane — see §12

All static HTML lives in SPIFFS; the firmware serves it via the embedded HTTP server. The JS frontend bundle (~30 KB) is loaded once and stays cached in the browser; subsequent navigation between tabs is JS-driven and doesn’t re-fetch HTML.

4. The Home page

The landing page (http://192.168.4.1/). What you see:

  • Top banner: “WiFi Deauther” with a version string (e.g. v2.6.1).
  • Six large rectangular buttons leading to the other pages — Scan, SSIDs, Stations, Names, Attack, Settings.
  • A small Info link at the bottom.

Click any of the six rectangles to navigate. The buttons are styled with the firmware’s signature black/red colour scheme (red highlight on hover; black background; monospace font).

Mobile-responsive: the page reflows on narrow screens (phone in portrait) — the buttons stack vertically. Works on iOS Safari, Android Chrome, desktop Chrome / Edge / Firefox / Safari.

5. The Scan page

The Scan page is the entry point for everything else — discover what’s around before deciding what to do.

UI elements (top to bottom):

  • Mode selector: radio buttons for AP / Stations / Names. The default is AP (most-common starting point).
  • Channel-range field: text input, default 1-14. Constrains the channels scanned.
  • Scan time field: text input, default 15 seconds. Longer = more thorough station-discovery; default is sufficient for AP scan.
  • Start scan button: red rectangle. Click to begin.
  • Result table: appears below after scan completes. Columns:
    • Selection checkbox (left)
    • Index #
    • For AP mode: SSID, MAC (BSSID), Channel, RSSI, Encryption type, Vendor
    • For Station mode: MAC, Vendor, RSSI, Channel, Associated AP
    • For Names mode: Index, Name, MAC, “Selected” checkbox
  • Save selected to Names button: bottom — converts selected entries into named targets.

Typical workflow:

  1. Click Scan / Start scan. The status changes to “Scanning…” for ~3 seconds. The OLED on the Hackheld also updates (you’ll see the channel cycling on the device’s display).
  2. Result table populates with visible APs.
  3. Tick the checkboxes next to interesting APs.
  4. Click Save selected to Names. The selected entries land on the Names page.
  5. Repeat for Stations mode if you want client-MAC-level targets.

Status bar at top shows realtime info: scan in progress, time remaining, total found.

Edge cases:

  • Empty result: no APs visible. Move closer to a known AP and re-scan. The Hackheld’s 25 dBm PA is TX-side; receive sensitivity is a different chain and is governed by the LNA.
  • Many APs in dense environments: result table can show 60+ entries. The firmware caps at 60; if you have more in range, older entries are evicted.

6. The SSIDs page

The SSID list is the input to the beacon spam attack. The page is a simple editor:

UI elements:

  • Search box: filter the list by substring.
  • Add SSID field: text input.
  • Random SSID button: generates a random 8-character SSID and adds it.
  • Random-clone button: generates several variations of an existing SSID (case mixing, character substitution) — useful for confusion attacks against a target network.
  • Clear all button: empty the list.
  • List table: rows with SSID + encryption type (open / WPA2) + WPA2-randomized BSSID prefix + remove button.

Typical workflow:

  1. Click Random SSID a few times to get a list of fake SSIDs.
  2. Or paste in a CSV of known venue SSIDs (xfinitywifi, attwifi, Starbucks WiFi, etc.) that you want to spam.
  3. Save → the list persists in SPIFFS (/ssids.txt).
  4. Go to the Attack page to launch beacon spam against this list.

Capacity (v2.6.1): ~200 SSIDs max — limited by SPIFFS partition size.

7. The Stations page

The Stations page shows the list of client devices observed during station scans. Same UI structure as the AP table on the Scan page; this is the data source for client-targeting deauth attacks.

Columns:

  • Index
  • MAC address (the client’s MAC)
  • Vendor (from OUI lookup)
  • RSSI (last seen)
  • Associated AP (BSSID)
  • Channel
  • Last-seen timestamp (in seconds-ago format)

Workflow: select the stations to target → save them to Names → go to Attack page → select Deauth attack targeting these stations.

8. The Names page

The Names page is the persistent target list. APs and stations from RAM-only tables get promoted to Names with friendly labels.

Columns:

  • Index
  • Name (editable)
  • MAC
  • Type (AP / Station / Group)
  • Selected checkbox

Group is a feature for grouping multiple MACs under one name — e.g. “Living room” might be a group containing the TV’s MAC + a laptop’s MAC. Attacks can target groups.

Persistent: lives in SPIFFS (/names.txt). Survives reboot.

9. The Attack page

The attack launcher. This is where you actually start a deauth / beacon spam / probe spam.

Three attack-type tabs:

TabSelects targets fromEffect
DeauthNames (Type: Station or AP)Forge deauth frames against each target
BeaconSSIDs pageSpam fake beacons advertising those SSIDs
ProbeSSIDs page (re-used as probe SSIDs)Spam fake probe requests for those SSIDs

For each tab:

  • Target selection (which Names or SSIDs to attack)
  • Frame rate dropdown: Slow / Medium / Fast (≈1, 10, 50 frames/sec/target)
  • Start attack button

Once running:

  • The OLED shows the attack name + target count + frame rate.
  • The web UI’s Attack tab shows a “Running” status with live frame count.
  • A Stop button replaces the Start button.

Stopping is essential — attacks continue until you press Stop or reboot the device. Multiple attacks can run simultaneously (deauth + beacon spam, for example) but each adds memory pressure and TX duty-cycle pressure on the radio.

10. The Settings page

Configurable from the web UI; changes persist to SPIFFS.

Categories:

Wi-Fi:

  • SSID (default pwned) — change this immediately
  • Password (default deauther)
  • Channel (default 1)
  • Hide SSID (boolean — hides the SoftAP from clients’ Wi-Fi-picker; useful for stealth)

Display:

  • Display on/off
  • Display timeout (auto-off after N seconds; default 0 = never)
  • Display rotate (180° flip)

Scan:

  • Default scan time (seconds)
  • Default channel range

Attack:

  • Default frame rate
  • Random source MAC (for beacon/probe spam — use random vs sequential)

Authentication:

  • Web-UI password — secondary password gating the web UI (separate from the Wi-Fi password)

System:

  • Reset to factory defaults (wipes Names, SSIDs, settings)
  • Reboot

11. The Info page

Read-only status:

  • Firmware version
  • ESP8266 chip ID
  • Free heap
  • Uptime
  • Wi-Fi mode (currently SoftAP, STA, both)
  • Wi-Fi channel
  • Connected clients to SoftAP
  • IP address
  • SoftAP MAC
  • Settings file path
  • SPIFFS used/free space
  • A link to the Spacehuhn GitHub for source

12. JSON API endpoints

Anything the web UI does, the JS makes via JSON-over-HTTP. You can use these endpoints from curl, Python requests, or your own automation. Examples:

# Get list of APs from the last scan
curl http://192.168.4.1/api/scan/aps

# Start a scan
curl -X POST http://192.168.4.1/api/scan/start

# Start a deauth attack against named target #2
curl -X POST 'http://192.168.4.1/api/attack/start?type=deauth&target=2'

# Stop all attacks
curl -X POST http://192.168.4.1/api/attack/stop

# Get current status
curl http://192.168.4.1/api/info

Full endpoint list (v2.6.1):

EndpointMethodResponse
/api/infoGETJSON status
/api/scan/startPOSTstarts scan
/api/scan/apsGETAP list as JSON
/api/scan/stationsGETstation list
/api/namesGET / POSTnamed targets
/api/names/savePOSTpersist names
/api/ssidsGET / POSTSSID list
/api/attack/startPOSTstart attack (params: type, target)
/api/attack/stopPOSTstop all attacks
/api/attack/statusGETrunning attacks
/api/settingsGET / POSTsettings
/api/resetPOSTfactory reset
/api/rebootPOSTsoft reboot

Useful for scripting — see Vol 11 § Automation for a Python script that drives a scan + attack cycle.

13. Multi-browser support

The Hackheld’s SoftAP supports up to 4 simultaneously-connected clients (the SDK default). The web UI tolerates 2 simultaneous browser connections without problems. Beyond that, memory pressure becomes visible — page loads slow, JSON responses time out occasionally.

For a real ops session, connect from one browser, do the work, disconnect. Don’t keep three tablets, two laptops, and your phone all on the SoftAP at once.

14. Troubleshooting

SymptomLikely causeFix
pwned SSID isn’t visible from my phoneHackheld booting; OLED off; battery deadPlug in USB-C, wait 3 seconds, confirm OLED lights up
Page won’t load — 192.168.4.1 says “not reachable”Captive-portal redirector interceptingDisable captive-portal detection on the client (iOS: “Use without internet”; Android: similar)
Page loads, but Start Scan does nothingWeb UI cached an older version after a firmware updateHard-refresh the browser (Cmd-Shift-R / Ctrl-Shift-R)
Scan returns “0 APs” but I know APs are aroundPower-cycle the Hackheld; check antenna is intactIf still 0 APs after power-cycle, suspect a firmware corruption — re-flash 2.6.1
Attack starts but no targets are deauthenticatedTargeted clients are using WPA3 or MFP-protected WPA2This attack doesn’t work against MFP; confirm target is plain WPA2 / WEP
Attack starts but the Hackheld reboots mid-attackBattery near depleted; brownout under TX peakPlug in USB-C and re-launch — or stop the attack until charged
OLED is dim or pixels missingOLED burn-in from long static displayReduce contrast (Settings → Display) or replace the panel (Vol 3 §12)
Web UI Password is set, forgot itFactory reset clears itConnect via USB-C, use the CLI clear command (Vol 7), or fully reflash

15. What’s next

Vol 7 — CLI Command Reference — every serial command, syntax, examples, and scriptable workflows. The CLI is the same engine as the web UI, just over a different transport.