
ESP32 के लिए आधुनिक WiFi ऑडिटिंग लाइब्रेरी, जो उन्नत 802.11 तकनीकों का उपयोग करती है। PMKID निष्कर्षण और CSA इंजेक्शन के माध्यम से WPA/WPA2/WPA3 हैंडशेक कैप्चर करता है (PMF को बायपास करता है)। एंटरप्राइज़ क्रेडेंशियल्स एकत्र करता है, डुअल-बैंड (ESP32-C6 पर 2.4GHz/5GHz) का समर्थन करता है, PCAPNG/Hashcat में निर्यात करता है। स्वच्छ C++ API, 9 उदाहरणों के साथ।
ESP32 माइक्रोकंट्रोलरों के लिए एक उन्नत WiFi सुरक्षा ऑडिटिंग लाइब्रेरी
Politician एक एम्बेडेड C++ लाइब्रेरी है जिसे ESP32 प्लेटफार्मों पर WiFi सुरक्षा ऑडिटिंग के लिए डिज़ाइन किया गया है। यह उन्नत 802.11 प्रोटोकॉल तकनीकों का उपयोग करके WPA/WPA2/WPA3 हैंडशेक कैप्चर करने और एंटरप्राइज़ क्रेडेंशियल्स हार्वेस्ट करने के लिए एक साफ, आधुनिक API प्रदान करता है।
लाइब्रेरी एक नॉन-ब्लॉकिंग स्टेट मशीन के आसपास बनाई गई है जो चैनल हॉपिंग, लक्ष्य चयन, हमला निष्पादन और कैप्चर प्रोसेसिंग का प्रबंधन करती है। सभी ऑपरेशन politician नेमस्पेस के भीतर समाहित हैं।
| घटक | विवरण |
|---|---|
Politician | मुख्य इंजन क्लास जो ऑडिट जीवनचक्र का प्रबंधन करता है |
PoliticianFormat | PCAPNG कैप्चर सीरियलाइज़ेशन; सहायक HC22000 टेक्स्ट एक्सपोर्ट |
PoliticianStorage | वैकल्पिक SD कार्ड लॉगिंग और NVS स्थिरता |
PoliticianStress | डिकपल्ड DoS/व्यवधान पेलोड डिलीवरी (ऑप्ट-इन) |
PoliticianTypes | मुख्य डेटा संरचनाएँ और गणनाएँ |
पारंपरिक डीऑथेंटिकेशन हमले आधुनिक WPA3 और सुरक्षित प्रबंधन फ्रेम (PMF/802.11w) वाले WPA2 नेटवर्कों के खिलाफ अप्रभावी हैं। Politician आधुनिक विकल्पों को लागू करता है:
| तरीका | विवरण | प्रभावशीलता |
|---|---|---|
ATTACK_PMKID | डमी ऑथेंटिकेशन के माध्यम से PMKID निकालें | सभी WPA2/WPA3-ट्रांज़िशन पर काम करता है |
ATTACK_CSA | चैनल स्विच घोषणा इंजेक्शन | PMF सुरक्षाओं को बायपास करता है |
ATTACK_DEAUTH | लीगेसी डीऑथेंटिकेशन (कारण 7) | केवल PMF रहित WPA2 |
ATTACK_STIMULATE | स्लीपिंग क्लाइंट के लिए QoS नल डेटा | गैर-आक्रामक क्लाइंट वेक-अप |
ATTACK_PASSIVE | केवल सुनने का मोड | शून्य ट्रांसमिशन |
ATTACK_ALL | सभी सक्रिय हमला वैक्टर सक्षम करें | अधिकतम आक्रामकता |
अपने platformio.ini में जोड़ें:```ini
[env:myboard]
platform = espressif32
board = esp32dev
framework = arduino
lib_deps =
Politician
या सीधे अपने प्रोजेक्ट की `lib/` निर्देशिका में क्लोन करें:```bash
cd lib/
git clone https://github.com/0ldev/Politician.git
अपने प्रोजेक्ट के components/ डायरेक्टरी में रिपॉजिटरी को क्लोन करें:```bash
cd components/
git clone https://github.com/0ldev/Politician.git
एक `components/Politician/CMakeLists.txt` कॉम्पोनेंट डिस्क्रिप्टर बनाएँ:```cmake
idf_component_register(
SRCS
"src/Politician.cpp"
"src/PoliticianFormat.cpp"
"src/PoliticianStress.cpp"
INCLUDE_DIRS "src"
)
PoliticianStorage.h ESP-IDF के अंतर्गत उपलब्ध नहीं है — यदि Arduino के बाहर शामिल किया जाए तो यह संकलन समय पर #error उत्सर्जित करता है। किसी भी स्थायित्व के लिए सीधे ESP-IDF के VFS और nvs_flash API का उपयोग करें।
#include <Arduino.h> #include <SD.h> #include <Politician.h> #include <PoliticianStorage.h>
using namespace politician; using namespace politician::storage;
Politician engine;
void onHandshake(const HandshakeRecord &rec) { Serial.printf("\n[✓] Captured: %s ch%d rssi=%d type=%d\n", rec.ssid, rec.channel, rec.rssi, rec.type); // Primary output: PCAPNG — open in Wireshark or convert with hcxpcapngtool PcapngFileLogger::append(SD, "/captures.pcapng", rec); }
void setup() { Serial.begin(115200); SD.begin();
engine.setEapolCallback(onHandshake);
Config cfg;
engine.begin(cfg);
engine.setAttackMask(ATTACK_ALL);
}
void loop() { engine.tick(); }
### बेयर ESP-IDF त्वरित प्रारंभ
ESP-IDF के तहत, `begin()` आंतरिक रूप से `esp_wifi_init()` को कॉल करता है, लेकिन अपेक्षा करता है कि NVS और डिफ़ॉल्ट ईवेंट लूप पहले से आरंभीकृत हों। उन्हें `begin()` से पहले कॉल करें, फिर एक FreeRTOS कार्य से इंजन को चलाएं।```cpp
#include <nvs_flash.h>
#include <esp_event.h>
#include <freertos/FreeRTOS.h>
#include <freertos/task.h>
#include <Politician.h>
using namespace politician;
static Politician engine;
static void on_handshake(const HandshakeRecord &rec) {
printf("[+] Captured: %s ch%d rssi=%d type=%d\n",
rec.ssid, rec.channel, rec.rssi, rec.type);
}
static void audit_task(void *) {
Config cfg;
engine.setEapolCallback(on_handshake);
if (engine.begin(cfg) != OK) {
printf("[!] WiFi init failed\n");
vTaskDelete(nullptr);
return;
}
engine.setAttackMask(ATTACK_ALL);
for (;;) {
engine.tick();
vTaskDelay(pdMS_TO_TICKS(1));
}
}
extern "C" void app_main(void) {
nvs_flash_init();
esp_event_loop_create_default();
xTaskCreate(audit_task, "politician", 8192, nullptr, 5, nullptr);
}
मुख्य इंजन वर्ग। अपने मुख्य लूप में tick() को कॉल करना अनिवार्य है।
Error begin(const Config& cfg = Config());
इंजन को आरंभ करें। सफलता पर `OK` या विफलता पर `Error` कोड लौटाता है। किसी भी अन्य विधि से पहले कॉल किया जाना चाहिए।