espilon-source/espilon_bot/components/mod_redteam/rt_attack.h
Eun0us 2315979db0
Some checks failed
Discord Push Notification / notify (push) Has been cancelled
ε - Add WiFi offensive capabilities to mod_redteam
Phase 1 of v0.4.0 offensive modules:

- Promiscuous dispatcher (rt_promisc): shared IRAM callback multiplexer
  for stealth scan, karma, capture — solves single-callback ESP-IDF limit
- Attack manager (rt_attack): mutual exclusion ensuring only one
  offensive operation runs at a time
- Deauth refactored to use shared promisc dispatcher + attack lock
- Stealth passive scan migrated to promisc dispatcher
- Karma attack (rt_karma): probe request listener + probe response
  injection + rogue SoftAP with most-requested SSID + DNS responder
- WPA handshake capture (rt_capture): EAPOL frame capture via
  promiscuous DATA filter, 4-way handshake identification, optional
  deauth burst to trigger reconnection
- Kconfig: RT_BEACON, RT_KARMA, RT_CAPTURE toggle options
- 5 new C2 commands: rt_karma, rt_karma_stop, rt_karma_clients,
  rt_capture, rt_capture_stop (14 total in mod_redteam)
2026-03-01 02:08:28 +01:00

50 lines
1.1 KiB
C

/*
* rt_attack.h
* Mutual exclusion for offensive operations.
*
* Only one attack (deauth, beacon, karma, capture) can run at a time.
* Each attack calls rt_attack_start() before launching its task and
* rt_attack_stop() when it finishes or is aborted.
*/
#pragma once
#include <stdbool.h>
#include "esp_err.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef enum {
RT_ATTACK_NONE = 0,
RT_ATTACK_DEAUTH,
RT_ATTACK_BEACON,
RT_ATTACK_KARMA,
RT_ATTACK_CAPTURE,
} rt_attack_type_t;
/* Initialise the attack manager (call once, idempotent). */
void rt_attack_init(void);
/*
* Try to start an attack. Returns ESP_OK if acquired, or
* ESP_ERR_INVALID_STATE if another attack is already running.
*/
esp_err_t rt_attack_start(rt_attack_type_t type);
/* Release the attack lock (call from the stopping attack). */
void rt_attack_stop(void);
/* Current attack type (NONE if idle). */
rt_attack_type_t rt_attack_current(void);
/* Human-readable name for the current attack. */
const char *rt_attack_name(void);
/* True if any attack is in progress. */
bool rt_attack_is_active(void);
#ifdef __cplusplus
}
#endif