Politician 1.0.0
WiFi Auditing Library for ESP32
Loading...
Searching...
No Matches
PoliticianWPS.h File Reference

Opt-in WPS M1 capture utilities for the Politician engine. More...

#include "PoliticianTypes.h"
#include <Arduino.h>
+ Include dependency graph for PoliticianWPS.h:

Go to the source code of this file.

Namespaces

namespace  politician
 
namespace  politician::PoliticianWPS
 

Functions

const char * politician::PoliticianWPS::devTypeCatStr (uint16_t cat)
 
const char * politician::PoliticianWPS::configMethodsStr (uint16_t methods, char *buf, size_t bufSz)
 Returns a compact human-readable string of supported WPS setup methods.
 
const char * politician::PoliticianWPS::configMethodsStr (uint16_t methods)
 Compatibility overload using a static buffer (not thread-safe).
 
template<typename TStream >
void politician::PoliticianWPS::print (TStream &out, const WpsRecord &rec)
 Pretty-prints a WpsRecord to any Print-compatible stream (Serial, etc.).
 

Variables

static const uint16_t politician::PoliticianWPS::CFG_USBA = 0x0001
 
static const uint16_t politician::PoliticianWPS::CFG_ETHERNET = 0x0002
 
static const uint16_t politician::PoliticianWPS::CFG_LABEL = 0x0004
 
static const uint16_t politician::PoliticianWPS::CFG_DISPLAY = 0x0008
 
static const uint16_t politician::PoliticianWPS::CFG_EXT_NFC = 0x0010
 
static const uint16_t politician::PoliticianWPS::CFG_INT_NFC = 0x0020
 
static const uint16_t politician::PoliticianWPS::CFG_NFC_IFACE = 0x0040
 
static const uint16_t politician::PoliticianWPS::CFG_PUSH_BUTTON = 0x0080
 
static const uint16_t politician::PoliticianWPS::CFG_KEYPAD = 0x0100
 
static const uint16_t politician::PoliticianWPS::CFG_VIRTUAL_PBC = 0x0200
 
static const uint16_t politician::PoliticianWPS::CFG_PHYSICAL_PBC = 0x0400
 
static const uint16_t politician::PoliticianWPS::CFG_VIRTUAL_PIN = 0x2000
 
static const uint16_t politician::PoliticianWPS::CFG_PHYSICAL_PIN = 0x4000
 
static const uint16_t politician::PoliticianWPS::AUTH_OPEN = 0x0001
 Open (no authentication)
 
static const uint16_t politician::PoliticianWPS::AUTH_WPAPSK = 0x0002
 WPA Personal (PSK)
 
static const uint16_t politician::PoliticianWPS::AUTH_SHARED = 0x0004
 Shared Key (deprecated WEP-era)
 
static const uint16_t politician::PoliticianWPS::AUTH_WPA = 0x0008
 WPA Enterprise (802.1X)
 
static const uint16_t politician::PoliticianWPS::AUTH_WPA2 = 0x0010
 WPA2 Enterprise (802.1X)
 
static const uint16_t politician::PoliticianWPS::AUTH_WPA2PSK = 0x0020
 WPA2 Personal (PSK)
 

Detailed Description

Opt-in WPS M1 capture utilities for the Politician engine.

Include this header alongside Politician.h to enable WPS M1 device fingerprinting. The engine passively captures the first unencrypted EAP-WSC message (M1) sent by a WPS Enrollee, exposing device attributes without any active interaction.

Usage: #include "Politician.h" #include "PoliticianWPS.h" // Add this line

engine.setWpsCallback([](const WpsRecord &rec) { Serial.printf("[WPS] %s by %s (%s)\n", rec.device_name, rec.manufacturer, PoliticianWPS::configMethodsStr(rec.config_methods)); PoliticianWPS::print(Serial, rec); });

Notes:

  • Only M1 (Enrollee → AP) is unencrypted and parseable passively.
  • Subsequent WPS messages (M2-M8) are encrypted; PIN cracking is not possible passively.
  • Enable by calling engine.setWpsCallback() — zero overhead if callback is null.
  • WPS exchange occurs during association; channel hopping must be active for discovery.

Definition in file PoliticianWPS.h.