README.md

June 25, 2026 ยท View on GitHub

Argus โ€” Deauth & Evil-Twin detector for Flipper Zero

Argus ๐Ÿ‘๏ธ

A hundred eyes on your Wi-Fi.

Flipper Zero ESP32 ufbt MIT

Argus turns your Flipper Zero into a Wi-Fi watchdog. Paired with a cheap ESP32 board over GPIO, it watches the air for deauthentication / disassociation attacks and for rogue "evil-twin" access points cloning your network's SSID โ€” and it sounds the alarm the moment someone starts swinging at your network.

Named after Argus Panoptes, the hundred-eyed giant of Greek myth who never slept and saw everything.


๐Ÿ“Ÿ On the Flipper

Watch โ€” calm ย  Watch โ€” under attack ย  Evil twins ย  Threat log

The Eye โ€” live watch ย ยทย  Alarm โ€” deauth storm detected ย ยทย  Evil Twins โ€” clones of your SSID ย ยทย  Threat Log โ€” timeline of events


โœจ Features

  • ๐Ÿ‘๏ธ The Eye โ€” a beautiful animated radar-iris that sweeps while it watches. Calm when all is well; the pupil narrows and the screen frames itself in an alarm border under attack.
  • ๐Ÿ’ฅ Deauth / disassoc detection โ€” counts hostile management frames and measures their rate. A burst past your threshold = a deauth storm, and Argus screams (sound + vibe + red LED).
  • ๐Ÿ‘ฏ Evil-twin detection โ€” set your network as the Guarded SSID; Argus flags any other BSSID broadcasting that same name (the classic rogue-AP / Wi-Fi-pineapple trick), and highlights security downgrades (e.g. your WPA2 network suddenly appearing as Open).
  • ๐Ÿ“œ Threat log โ€” a scrollable, timestamped timeline of every deauth, disassoc and twin sighting.
  • ๐ŸŽš๏ธ Tunable โ€” lock to one channel or hop all 13, pick alarm sensitivity (High / Medium / Low), toggle sound / vibration / LED independently.
  • ๐Ÿ”Œ Clean ESP32 protocol โ€” a simple, debuggable UART line protocol. The Flipper is the brain + UI, the ESP32 is the radio.
  • ๐Ÿ•ถ๏ธ Local & private โ€” everything runs on your own hardware. No cloud, no accounts, nothing phones home.

๐Ÿง  How it works

The Flipper Zero has no Wi-Fi radio of its own (it does Sub-GHz, NFC, RFID, IR and BLE โ€” not 2.4 GHz Wi-Fi). So Argus splits the job: a tiny ESP32 is the Wi-Fi radio running in promiscuous (monitor) mode, and the Flipper is the brain + UI. They talk over the GPIO UART.

flowchart LR
    subgraph AIR["๐Ÿ“ก The air around you"]
      D[Deauth / disassoc frames]
      B[Beacons / probe responses]
    end
    D & B -- "802.11 mgmt" --> E

    subgraph BOARD["ESP32 Wi-Fi board"]
      E[Promiscuous sniffer] --> C[Parse + classify]
      C --> P1["AXD,<src>,<bssid>,<ch>,<rssi>,<reason>,<kind>"]
      C --> P2["AXAP,<bssid>,<ch>,<rssi>,<enc>,<ssid>"]
    end

    P1 & P2 -- "UART 115200<br/>GPIO 13/14" --> U

    subgraph FLIP["Flipper Zero โ€” Argus.fap"]
      U[UART worker] --> M[(AP table + deauth meter)]
      M --> EYE[The Eye / alarm]
      M --> TW[Evil-twin analysis]
      M --> LOG[Threat log]
    end

Evil-twin logic: Argus keeps a table of every AP it hears. For your Guarded SSID, the strongest signal is assumed to be your real router; any other BSSID broadcasting the same SSID is flagged as a twin โ€” doubly so if it advertises weaker security than your real AP.


๐Ÿงฐ Hardware you need

ItemNotes
Flipper Zerorunning official or a custom firmware
ESP32 boardthe official Flipper Wi-Fi devboard (ESP32-S2) is plug-and-play. Any ESP32 / ESP32-S2 / ESP32-S3 dev board also works with a few jumper wires.
3 jumper wiresonly if you're using a bare ESP32 (the devboard needs none)

Wiring (bare ESP32 โ†’ Flipper GPIO)

Using the official Flipper Wi-Fi devboard? Skip this โ€” just snap it onto the GPIO header.

Flipper pinESP32 pinDirection
13 TXRX (RX0)Flipper โ†’ ESP32
14 RXTX (TX0)ESP32 โ†’ Flipper
8 / 11 / 18 GNDGNDcommon ground
9 3V33V3power (or just power the ESP32 from USB)

Flipper GPIO pinout: docs.flipper.net/gpio-and-modules. TXโ†”RX are crossed โ€” the Flipper's TX goes to the ESP32's RX and vice-versa.


๐Ÿš€ Install

There are two halves: flash the ESP32 firmware, then install the Flipper app.

1 โ€” Flash the ESP32

  1. Install the Arduino IDE and add ESP32 support: File โ†’ Preferences โ†’ Additional Boards Manager URLs โ†’ https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json then Tools โ†’ Board โ†’ Boards Manager โ†’ "esp32" โ†’ Install.
  2. Open esp32/argus_esp32/argus_esp32.ino.
  3. Select your board under Tools โ†’ Board (e.g. ESP32S2 Dev Module for the Flipper devboard) and the right Port.
  4. Click Upload. No external libraries are required โ€” it uses the built-in esp_wifi driver.

๐Ÿ’ก Verify it works: open the Arduino Serial Monitor at 115200 baud. You should see AXHELLO,1.0 on boot and a stream of AXAP,... / AXD,... lines as it sniffs.

2 โ€” Install the Flipper app

Option A โ€” prebuilt .fap (easiest)

  1. Grab argus.fap from the Releases page.
  2. Open qFlipper, drag the file onto SD Card / apps / GPIO /.
  3. On the Flipper: Apps โ†’ GPIO โ†’ Argus.

Option B โ€” build it yourself with ufbt

# one-time
python3 -m pip install --upgrade ufbt

# from the repo root, with your Flipper plugged in over USB:
ufbt            # build argus.fap into ./dist
ufbt launch     # build, upload to the Flipper and open it

The .fap lands in dist/argus.fap; ufbt launch copies it to apps/GPIO/ and starts it for you.

Icons in icons/ and screenshots in images/ are generated โ€” regenerate with python3 tools_gen_icons.py and python3 tools_gen_mockups.py (needs pillow).


๐ŸŽฎ Using it

  1. Plug the ESP32 into the Flipper's GPIO and launch Argus.
  2. Guarded SSID โ†’ type your own network's name. (This is what evil-twin detection compares against.)
  3. Settings โ†’ choose channel mode (start with Hop), alarm sensitivity and feedback.
  4. Watch โ†’ arm the Eye. The header shows LIVE with a filled dot once the ESP32 is talking.
    • All quiet โ†’ the iris sweeps calmly, blips are nearby APs.
    • Under attack โ†’ the pupil narrows, the screen frames in an alarm border, and ! DEAUTH ATTACK flashes with the live rate.
    • Press OK to jump straight to the Threat Log.
  5. Evil Twin Scan โ†’ list every AP carrying your SSID. Your real router shows a โ€ข; impostors are marked TWIN.

Leaving a screen back to the menu disarms the radio and frees the UART.


๐Ÿ”Œ Wire protocol

Plain newline-terminated ASCII at 115200 8N1. SSIDs are sanitised to strip commas/control chars.

ESP32 โ†’ Flipper

LineMeaning
AXHELLO,<ver>sent on boot / on PING
AXD,<src>,<bssid>,<ch>,<rssi>,<reason>,<kind>deauth (kind=0) / disassoc (kind=1) frame
AXAP,<bssid>,<ch>,<rssi>,<enc>,<ssid>a beacon / probe-response (enc: 0 Open ยท 1 WEP ยท 2 WPA ยท 3 WPA2 ยท 4 WPA3)

Flipper โ†’ ESP32

CommandMeaning
START / STOPbegin / pause sniffing
CHAN:<0-13>0 = hop all channels, 1..13 = lock to that channel
GUARD:<ssid>inform the board which SSID you're protecting
PINGask the board to re-announce AXHELLO

๐Ÿ—‚๏ธ Project layout

Argus-FlipperZero/
โ”œโ”€โ”€ application.fam            # Flipper app manifest
โ”œโ”€โ”€ argus.c / argus_i.h        # app entry, wiring, alarm logic
โ”œโ”€โ”€ helpers/
โ”‚   โ”œโ”€โ”€ argus_db.{c,h}         # AP table, deauth meter, evil-twin analysis
โ”‚   โ””โ”€โ”€ uart_link.{c,h}        # ESP32 serial link (worker thread + parser)
โ”œโ”€โ”€ views/
โ”‚   โ”œโ”€โ”€ monitor_view.{c,h}     # "The Eye" โ€” the live watch screen
โ”‚   โ”œโ”€โ”€ ap_list_view.{c,h}     # evil-twin / AP list
โ”‚   โ””โ”€โ”€ threat_log_view.{c,h}  # event timeline
โ”œโ”€โ”€ scenes/                    # scene-manager navigation
โ”œโ”€โ”€ icons/                     # 1-bit Flipper icons (generated)
โ”œโ”€โ”€ images/                    # banner + screen mockups (generated)
โ”œโ”€โ”€ esp32/argus_esp32/         # ESP32 promiscuous-sniffer firmware
โ””โ”€โ”€ tools_gen_*.py             # regenerate icons / mockups

๐Ÿ”ฌ Honest limitations

  • It detects deauth floods, not single surgical frames โ€” a couple of stray deauths are normal Wi-Fi life; Argus alarms on a rate, which you tune.
  • Evil-twin detection is heuristic: "same SSID, different BSSID (+ weaker crypto)". A legitimate mesh/extender that reuses your SSID on a different BSSID can show up โ€” that's working as intended; you confirm which BSSID is yours.
  • 2.4 GHz only (channels 1โ€“13) โ€” the ESP32's radio doesn't do 5 GHz.
  • While hopping channels the ESP32 only hears one channel at a time, so a very short burst on another channel can be missed. Lock the channel for focused monitoring.

Argus is a defensive tool โ€” it only listens. It never transmits, deauths or jams anything. Use it to monitor networks you own or are explicitly authorised to test. Passively capturing frames may still be regulated where you live; know your local laws. You are responsible for how you use it.


๐Ÿ—บ๏ธ Roadmap

  • Persist the Guarded SSID + settings across reboots
  • "Trust this BSSID" pinning so known extenders stop flagging
  • Capture-to-file (.csv) of the threat log on the SD card
  • Per-AP detail screen (vendor OUI lookup, first/last seen)
  • Optional 5 GHz via an ESP32-C5 board

๐Ÿ™ Credits

๐Ÿ“„ License

MIT ยฉ 2026 at0m-b0mb