README.md
June 25, 2026 ยท View on GitHub
Argus ๐๏ธ
A hundred eyes on your Wi-Fi.
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
ย
ย
ย
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
| Item | Notes |
|---|---|
| Flipper Zero | running official or a custom firmware |
| ESP32 board | the 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 wires | only 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 pin | ESP32 pin | Direction |
|---|---|---|
13 TX | RX (RX0) | Flipper โ ESP32 |
14 RX | TX (TX0) | ESP32 โ Flipper |
8 / 11 / 18 GND | GND | common ground |
9 3V3 | 3V3 | power (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
- 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.jsonthen Tools โ Board โ Boards Manager โ "esp32" โ Install. - Open
esp32/argus_esp32/argus_esp32.ino. - Select your board under Tools โ Board (e.g. ESP32S2 Dev Module for the Flipper devboard) and the right Port.
- Click Upload. No external libraries are required โ it uses the built-in
esp_wifidriver.
๐ก Verify it works: open the Arduino Serial Monitor at 115200 baud. You should see
AXHELLO,1.0on boot and a stream ofAXAP,.../AXD,...lines as it sniffs.
2 โ Install the Flipper app
Option A โ prebuilt .fap (easiest)
- Grab
argus.fapfrom the Releases page. - Open qFlipper, drag the file onto
SD Card / apps / GPIO /. - 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 inimages/are generated โ regenerate withpython3 tools_gen_icons.pyandpython3 tools_gen_mockups.py(needspillow).
๐ฎ Using it
- Plug the ESP32 into the Flipper's GPIO and launch Argus.
- Guarded SSID โ type your own network's name. (This is what evil-twin detection compares against.)
- Settings โ choose channel mode (start with Hop), alarm sensitivity and feedback.
- 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 ATTACKflashes with the live rate. - Press OK to jump straight to the Threat Log.
- 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
| Line | Meaning |
|---|---|
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
| Command | Meaning |
|---|---|
START / STOP | begin / 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 |
PING | ask 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.
โ๏ธ Legal & ethical
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
- Built by at0m-b0mb.
- Pairs naturally with AirDriver (Wi-Fi adapter driver auto-installer) and GhostTag (BLE anti-stalking hunter).
- Powered by the Flipper Zero firmware + ufbt and Espressif's
esp_wifi.
๐ License
MIT ยฉ 2026 at0m-b0mb