Я делаю свой маленький приборчик (деауфер) из esp32. Уже реализовал скан wifi сетей вокруг, но никак не могу понять как отправлять на выбраную wifi сеть (не подключаясь к ней) пакеты деаунтетификации. Я много всякого прочитал, и все смутно понятно, но как это реализовать воооообще не ясно. Я понял что сначала нужно получить mac адрес пользователя в этой сети, но я не нашел никаких функций для этого.
Для управления я сделал приложение в MIT App Inventor. Но по факту все общение происходит через Serial.
SCAN_ON - сканирует сети вокруг и добавляет в список names_of_wifis
ATTACK_ON - меняет перемменную на true и в цикле начинается атака
ATTACK_OFF - выключает атаку соответственно
Если вы не хотите разбираться в коде, и просто знаете как создать и отправить пакет деаунтетификации, то ваше знание тоже мне пригодиться :)
#include "WiFi.h"
#include "esp_wifi.h"
bool wifi_deauth = false;
String receive_data;
String names_of_wifis[30] = {};
int t;
void ScanWIFI(){
int n = WiFi.scanNetworks();
if (n == 0) {
Serial.println("no networks found");
} else {
for (int i = 0; i < n; ++i) {
// names_of_wifis[i] = WiFi.SSID(i);
names_of_wifis[i] = WiFi.BSSIDstr(i);
}
for (int i = 0; i < (sizeof(names_of_wifis) / sizeof(names_of_wifis[0])); ++i){
if (names_of_wifis[i] != ""){
Serial.print(names_of_wifis[i] + " ");
}
}
Serial.print("END_SCAN");
}
WiFi.scanDelete();
}
void DeauthWIFI(){
// эта функция должна создавать и отправлять пакеты деаунтетификации
esp_wifi_80211_tx(WIFI_IF_STA, &broadcast, sizeof(broadcast), false); // вроде эта строка отправляет необработаные пакеты, но не понятно куда
}
void setup() {
WiFi.mode(WIFI_STA);
WiFi.disconnect();
Serial.begin(115200);
Serial.setTimeout(20);
}
void loop() {
receive_data = Serial.readStringUntil('\n');
receive_data.trim();
if(receive_data == "SCAN_ON"){
ScanWIFI();
}
else if (receive_data == "ATTACK_ON"){ // if send ATTACK_ON
}
else if (receive_data == "ATTACK_OFF"){ // if send ATTACK_OFF
}
if (wifi_deauth == true){
DeauthWIFI();
}
}