Skip to content

Cyber Controller v2.0.0

Latest

Choose a tag to compare

@LxveAce LxveAce released this 03 Sep 03:11
· 23 commits to master since this release

Cyber Controller v2.0.0

The 2.0 line graduates from beta to stable. This is the reformed single-window GUI, and the release the in-app updater offers to everyone on 1.8.0.

Highlights on top of the reform: the Ace Purple palette, a searchable + category-grouped firmware flasher, BFFB (Flipper expansion) as a one-pick ESP32-C5 board, Marauder support current to v1.15.1, and a Flock map that follows your live GPS.

🔧 Rebuilt 2026-09-03 (same 2.0.0, fixed binaries)

A live-hardware session + two deep red-team passes (whole-project, then firmware-by-firmware and feature-by-feature) turned up real issues; these binaries were rebuilt to include the fixes:

  • Detects the firmware already on a board when you connect (a CYD running Marauder no longer reads as "no firmware").
  • The web password is now shown in Settings ▸ Remote Access (local session only) so you can open the UI from a phone.
  • Flash feedback works — the live socket was dropping right after connecting, so progress/results silently never showed; pinned to long-polling, plus a phase status line, live %, an explicit ✔/✖, and a hold-BOOT callout.
  • Safety consent gate closed a hole — ~65 offensive verbs whose danger is metadata-only could fan out / auto-fire without the authorized-use confirm; the web broadcast/macro/rule gates are now firmware-aware.
  • Firmware profiles — grounded fixes to wrong-chip brick paths (ESP32-DIV cyd/v1 flashed as S3; three Marauder C5 boards), Flipper installing the SDK/scripts package instead of firmware, and Meshtastic phantom boards; MeshCore + CatSniffer version bumps.
  • Hunt — the Wi-Fi Encryption column is live again and web tail/follower detection actually works.
  • UI — the firmware picker is grouped into collapsible categories; the dashboard serial terminal collapses so it stops forcing constant scrolling.

Full detail in the changelog below (see "Fixed — 2026-09-03 re-cut").

Unsigned build — Windows SmartScreen will warn (More info → Run anyway). Verify with the attached SHA256SUMS.txt; VirusTotal results are posted below by CI. Portable .exe = run it, nothing installed; -setup.exe = installer.


[2.0.0] — 2026-09-02

The 2.0 line graduates from beta. This is the first stable cut of the reformed single-window GUI, and the
first release the in-app updater offers to everyone on 1.8.0. See [2.0.0-beta] below for the reform's full
scope; the items here are what landed on top of it.

Added

  • Antenna length calculator--antenna <freq> (e.g. 433, 433MHz, 2.4GHz) prints the free-space
    wavelength and the full / 5-8 / half / quarter / eighth element lengths in cm, in, mm, and m, with a
    best-effort band label and an optional --antenna-vf velocity factor (1.0 free-space, ~0.95 real wire,
    a coax's VF for a stub). Also a GET /api/antenna?freq=&vf= route so a GUI card can reach it later. Pure
    math (src/core/antenna_calc.py), no device I/O, transmits nothing; 23 tests pinned to the 433 MHz worked
    example (69.2 cm / 17.3 cm quarter-wave). Rough-in — the GUI surface comes once the layout is decided.

  • Wardrive: upload a saved WiGLE CSV from the reform UI — MAP▸Wardrive now has an "Upload saved CSV" action
    that hands an already-exported WigleWifi CSV to WiGLE through the existing wardrive_upload core
    (POST /api/wardrive/upload, auth + CSRF gated). Credential-gated: nothing is sent until a WiGLE token is
    set in Settings, and the target is the one fixed HTTPS endpoint (no user-supplied URL). The desktop shell's
    file picker gets a wardrive CSV filter. Starting a live survey still needs a connected GPS device, so those
    buttons stay honestly gated — only uploading an existing CSV is device-independent and now wired.

  • Wardrive export to KML, GPX & GeoJSON--wardrive-kml <csv> / --wardrive-gpx <csv> /
    --wardrive-geojson <csv> convert a WiGLE wardrive CSV to KML (Google Earth), GPX 1.1 waypoints, or a
    GeoJSON FeatureCollection on stdout (one feature per network at its strongest-RSSI position). Pure
    serializers (wigle_csv_to_kml / wigle_csv_to_gpx / wigle_csv_to_geojson) built on the existing
    header-aware WiGLE reader, so 1.4/1.6/Kismet CSVs all work. The attacker-controlled SSID/BSSID are
    XML-escaped + XML-1.0-illegal control chars stripped for KML/GPX (json escaping for GeoJSON), so the
    output always parses. Read-only; transmits nothing.

  • POSEIDON flash profile (GeneralDussDuss/poseidon) — keyboard-first pentest firmware for the M5Stack
    Cardputer-Advance (ESP32-S3). Tracks the latest upstream release and flashes the poseidon-factory.bin
    merged image at 0x0 (the same offset the project's own web installer uses); the poseidon-launcher.bin
    app-slot variant is intentionally not selected. The v0.6.8 factory image is SHA-256-pinned. Labeled
    illegal-tx (it ships a 2.4GHz CW/broadband + sub-GHz jammer among its features) per the same convention
    as the other jammer-bearing profiles — flash-and-study for an authorized lab; CC authors no TX. Brings the
    bundled profile count to 51.

  • M5Launcher flash profile (bmorcelli/Launcher, formerly M5Stick-Launcher) — the multi-board firmware
    launcher / SD app-loader that boots Marauder, Bruce, and any .bin from an SD card. Tracks the latest
    upstream release (v2.8.0 ships ~70 per-board images) and flashes the matching Launcher-<board>.bin merged
    image at 0x0; the chip family is derived from the board name and esptool auto-detects at flash. Covers the
    M5Stack Cardputer/CoreS3/StickC family, the Cheap Yellow Display fleet, and many LilyGo boards across
    ESP32 / S3 / C5 / C6. Labeled non-dangerous — the launcher authors no TX; whatever firmware you load onto it
    carries its own profile + danger label. Brings the bundled profile count to 52. (Requested: "add the
    ability to flash 'launcher' by bmorcelli"; also on ESP Terminator's supported list.)

  • Flock map: Follow GPS. The ALPR-camera map can now center on a connected device's live GPS instead of a
    typed bounding box. Toggle Follow GPS and it loads only a small window (~1 km) around you, drops a "you"
    marker, and recenters as you move. Heavily optimized: it re-fetches from OpenStreetMap only after you've moved
    ~800 m (hysteresis), keeps a small cache of recent windows, and evicts (sleeps) any area you've moved away
    from
    so memory stays bounded. New /api/gps serves the live fix from a GpsTracker fed by every
    connection's NMEA stream (read-only; drives no device, transmits nothing). The manual bbox still works when not
    following. (GpsTracker + endpoint + classifier are unit-tested; the live follow needs a GPS-equipped board.)

  • Flasher picker: search + category grouping. The DEVICE ▸ Firmware list used to be one long
    ~50-row scroll. It now has a live search box and a category dropdown (Wi-Fi/BLE multitools,
    Wardriving, Mesh/LoRa, Sub-GHz/RF & SDR, Detectors, Pwnagotchi, Flipper Zero, Launchers & OS,
    Offensive/lab-only), and the rows are grouped by category. Presentation only — the classifier keys off
    the display name and never changes which binary flashes; the /api/flash + /api/variants contracts
    are untouched.

  • BFFB (Flipper Zero expansion) support — the Marauder profile now lists the BFFB as its own ESP32-C5
    board ("BFFB (Flipper Zero expansion, Dev Board Pro)"), so it flashes with one pick and the correct C5
    0x2000 offsets. New docs/BFFB.md guide (grounded in the koko wiki) covers the board's
    radios (dual CC1101 400/900 MHz, Ebyte NRF24, onboard GPS), flashing via CC, the Flipper WiFi Marauder app
    path, and an honest split of what CC drives over USB serial (Wi-Fi/BLE/GPS) vs. what the Flipper drives over
    GPIO (the CC1101/NRF sub-GHz side).

  • Marauder v1.15.x maintenance commands — the Operate command palette now exposes the four device-local
    verbs added since v1.14.0: protocolinfo (query the firmware's machine-protocol + backup capabilities),
    backupspiffs, backupstatus, and restorespiffs (restore the device SPIFFS from an SD backup; the device
    reboots on success). All SAFE — device-local filesystem/info, no RF — grounded against the real
    CommandLine.cpp at tag v1.15.1. Closes the v1.14.0→v1.15.1 Marauder command gap (the rest was already covered).

Changed

  • GUI palette — "Ace Purple". The reformed GUI's color system is retuned so purple is the primary
    action color
    (buttons, active/selected states, titles), the neutrals carry a purple bias, and green is
    reserved for the live / SAFE / ok signal. The old neutral blue-grays are gone; every color now flows from
    the :root tokens in reform.css. Owner-picked from a five-way palette comparison. (No acid green — the
    test_no_acid_green guard still holds.)
  • ESP32 Dual-Band Wardriver profile updated v2.3.0 → v2.3.2 (justcallmekoko/ESP32DualBandWardriver,
    2026-08-19 release). The app image (c5_wardriver_v2_3_2_20260819_c5_devkit.bin) is re-pinned to its real,
    freshly-downloaded SHA-256 (12a4ec28…); the ESP32-C5 bootloader (0x2000) and partition table (0x8000)
    are byte-identical to v2.3.0 and keep their existing pinned digests. Offsets cross-checked against the
    release's own firmware-manifest.json (sourceCommit 35b3c1b3). Still passive receive-only — CC flashes
    the upstream release and adds no capability. Profile count unchanged (51 — this was already a bundled
    profile, not a new one).

Security

  • safety.py worst_of() now fails closed. An unrecognised danger label ranks above every known level
    (_SEVERITY.get(lvl, len(_SEVERITY))) instead of defaulting to 0/SAFE, so a mislabeled or future danger
    class is treated as most-severe and still hits the consent gate. Matches should_confirm; regression test added.

VirusTotal

Every binary is scanned before release. Unsigned PyInstaller executables normally trip a few heuristic engines — the full reports:

File Detections Report
cyber-controller-v2.0.0-linux-arm64 0/61 report
cyber-controller-v2.0.0-linux-x64 0/60 report
cyber-controller-v2.0.0-macos-arm64 0/61 report
cyber-controller-v2.0.0-windows-x64-setup.exe 1/67 report
cyber-controller-v2.0.0-windows-x64.exe 2/69 report