mirror of
https://github.com/SpacehuhnTech/esp8266_deauther.git
synced 2025-12-22 06:29:59 +01:00
Enabled Multiple attacks + Improved Probe Request
This commit is contained in:
@@ -96,6 +96,8 @@ void Attack::buildProbe(String _ssid, Mac _mac) {
|
|||||||
for (int i = 0; i < len; i++) packet[packetSize + i] = _ssid[i];
|
for (int i = 0; i < len; i++) packet[packetSize + i] = _ssid[i];
|
||||||
packetSize += len;
|
packetSize += len;
|
||||||
|
|
||||||
|
for (int i = 0; i < sizeof(probePacket_RateTag); i++) packet[packetSize + i] = probePacket_RateTag[i];
|
||||||
|
packetSize += sizeof(probePacket_RateTag);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Attack::send() {
|
bool Attack::send() {
|
||||||
@@ -218,15 +220,18 @@ void Attack::run() {
|
|||||||
|
|
||||||
for (int a = 0; a < ssidList.len; a++) {
|
for (int a = 0; a < ssidList.len; a++) {
|
||||||
buildProbe(ssidList.get(a), beaconAdrs._get(a));
|
buildProbe(ssidList.get(a), beaconAdrs._get(a));
|
||||||
if (send()) packetsCounter[2]++;
|
if(send()) packetsCounter[2]++;
|
||||||
|
if(send()) packetsCounter[2]++;
|
||||||
}
|
}
|
||||||
|
|
||||||
stati[2] = (String)(packetsCounter[2] * 10) + "pkts/s";
|
stati[2] = (String)(packetsCounter[2]) + "pkts/s";
|
||||||
packetsCounter[2] = 0;
|
packetsCounter[2] = 0;
|
||||||
macListChangeCounter++;
|
macListChangeCounter++;
|
||||||
if (macListChangeCounter >= macChangeInterval && macChangeInterval > 0) {
|
if (macListChangeCounter >= macChangeInterval && macChangeInterval > 0) {
|
||||||
generate();
|
generate();
|
||||||
macListChangeCounter = 0;
|
/*ssidList.clear();
|
||||||
|
ssidList._random();
|
||||||
|
macListChangeCounter = 0;*/
|
||||||
}
|
}
|
||||||
if (debug) Serial.println("done");
|
if (debug) Serial.println("done");
|
||||||
if (settings.attackTimeout > 0) {
|
if (settings.attackTimeout > 0) {
|
||||||
@@ -248,8 +253,10 @@ void Attack::start(int num) {
|
|||||||
refreshLed();
|
refreshLed();
|
||||||
if (debug) Serial.println("starting " + (String)attackNames[num] + " attack...");
|
if (debug) Serial.println("starting " + (String)attackNames[num] + " attack...");
|
||||||
if (num == 0) attackMode = "STOP";
|
if (num == 0) attackMode = "STOP";
|
||||||
for (int i = 0; i < attacksNum; i++){
|
if(!settings.multiAttacks){
|
||||||
if(i != num) stop(i);
|
for (int i = 0; i < attacksNum; i++){
|
||||||
|
if(i != num) stop(i);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}else stop(num);
|
}else stop(num);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ extern "C" {
|
|||||||
|
|
||||||
#define attacksNum 3
|
#define attacksNum 3
|
||||||
#define macListLen 64
|
#define macListLen 64
|
||||||
#define macChangeInterval 4
|
#define macChangeInterval 6
|
||||||
|
|
||||||
extern void PrintHex8(uint8_t *data, uint8_t length);
|
extern void PrintHex8(uint8_t *data, uint8_t length);
|
||||||
extern void getRandomVendorMac(uint8_t *buf);
|
extern void getRandomVendorMac(uint8_t *buf);
|
||||||
@@ -131,6 +131,16 @@ class Attack
|
|||||||
*/
|
*/
|
||||||
};
|
};
|
||||||
|
|
||||||
|
uint8_t probePacket_RateTag[6] = {
|
||||||
|
0x01, //Tag Number: Supported Rates (1)
|
||||||
|
0x04, //Tag length: 4
|
||||||
|
//Supported Rates:
|
||||||
|
0x82, //1Mbit/s
|
||||||
|
0x84, //2Mbit/s
|
||||||
|
0x8b, //5.5Mbit/s
|
||||||
|
0x96 //11Mbit/s
|
||||||
|
};
|
||||||
|
|
||||||
int macListChangeCounter = 0;
|
int macListChangeCounter = 0;
|
||||||
int attackTimeoutCounter[attacksNum];
|
int attackTimeoutCounter[attacksNum];
|
||||||
int channels[macListLen];
|
int channels[macListLen];
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ void Settings::load() {
|
|||||||
useLed = (bool)EEPROM.read(useLedAdr);
|
useLed = (bool)EEPROM.read(useLedAdr);
|
||||||
channelHop = (bool)EEPROM.read(channelHopAdr);
|
channelHop = (bool)EEPROM.read(channelHopAdr);
|
||||||
multiAPs = (bool)EEPROM.read(multiAPsAdr);
|
multiAPs = (bool)EEPROM.read(multiAPsAdr);
|
||||||
|
multiAttacks = (bool)EEPROM.read(multiAttacksAdr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Settings::reset() {
|
void Settings::reset() {
|
||||||
@@ -65,6 +66,7 @@ void Settings::reset() {
|
|||||||
useLed = true;
|
useLed = true;
|
||||||
channelHop = false;
|
channelHop = false;
|
||||||
multiAPs = false;
|
multiAPs = false;
|
||||||
|
multiAttacks = false;
|
||||||
|
|
||||||
if (debug) Serial.println("done");
|
if (debug) Serial.println("done");
|
||||||
|
|
||||||
@@ -95,6 +97,7 @@ void Settings::save() {
|
|||||||
EEPROM.write(useLedAdr, useLed);
|
EEPROM.write(useLedAdr, useLed);
|
||||||
EEPROM.write(channelHopAdr, channelHop);
|
EEPROM.write(channelHopAdr, channelHop);
|
||||||
EEPROM.write(multiAPsAdr, multiAPs);
|
EEPROM.write(multiAPsAdr, multiAPs);
|
||||||
|
EEPROM.write(multiAttacksAdr, multiAttacks);
|
||||||
EEPROM.write(checkNumAdr, checkNum);
|
EEPROM.write(checkNumAdr, checkNum);
|
||||||
EEPROM.commit();
|
EEPROM.commit();
|
||||||
|
|
||||||
@@ -121,6 +124,7 @@ void Settings::info() {
|
|||||||
Serial.println("use built-in LED: " + (String)useLed);
|
Serial.println("use built-in LED: " + (String)useLed);
|
||||||
Serial.println("channel hopping: " + (String)channelHop);
|
Serial.println("channel hopping: " + (String)channelHop);
|
||||||
Serial.println("multiple APs: " + (String)multiAPs);
|
Serial.println("multiple APs: " + (String)multiAPs);
|
||||||
|
Serial.println("multiple Attacks: " + (String)multiAttacks);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t Settings::getSize(){
|
size_t Settings::getSize(){
|
||||||
@@ -139,7 +143,8 @@ size_t Settings::getSize(){
|
|||||||
json += "\"attackEncrypted\":" + (String)attackEncrypted + ",";
|
json += "\"attackEncrypted\":" + (String)attackEncrypted + ",";
|
||||||
json += "\"useLed\":" + (String)useLed + ",";
|
json += "\"useLed\":" + (String)useLed + ",";
|
||||||
json += "\"channelHop\":" + (String)channelHop + ",";
|
json += "\"channelHop\":" + (String)channelHop + ",";
|
||||||
json += "\"multiAPs\":" + (String)multiAPs + "}";
|
json += "\"multiAPs\":" + (String)multiAPs + ",";
|
||||||
|
json += "\"multiAttacks\":" + (String)multiAttacks + "}";
|
||||||
jsonSize += json.length();
|
jsonSize += json.length();
|
||||||
|
|
||||||
return jsonSize;
|
return jsonSize;
|
||||||
@@ -162,7 +167,8 @@ void Settings::send() {
|
|||||||
json += "\"attackEncrypted\":" + (String)attackEncrypted + ",";
|
json += "\"attackEncrypted\":" + (String)attackEncrypted + ",";
|
||||||
json += "\"useLed\":" + (String)useLed + ",";
|
json += "\"useLed\":" + (String)useLed + ",";
|
||||||
json += "\"channelHop\":" + (String)channelHop + ",";
|
json += "\"channelHop\":" + (String)channelHop + ",";
|
||||||
json += "\"multiAPs\":" + (String)multiAPs + "}";
|
json += "\"multiAPs\":" + (String)multiAPs + ",";
|
||||||
|
json += "\"multiAttacks\":" + (String)multiAttacks + "}";
|
||||||
sendToBuffer(json);
|
sendToBuffer(json);
|
||||||
sendBuffer();
|
sendBuffer();
|
||||||
|
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ extern NameList nameList;
|
|||||||
#define useLedAdr 1099
|
#define useLedAdr 1099
|
||||||
#define channelHopAdr 1100
|
#define channelHopAdr 1100
|
||||||
#define multiAPsAdr 1101
|
#define multiAPsAdr 1101
|
||||||
|
#define multiAttacksAdr 1102
|
||||||
|
|
||||||
#define checkNumAdr 1102
|
#define checkNumAdr 1102
|
||||||
#define checkNum 14
|
#define checkNum 14
|
||||||
@@ -62,6 +63,7 @@ class Settings
|
|||||||
bool useLed;
|
bool useLed;
|
||||||
bool channelHop;
|
bool channelHop;
|
||||||
bool multiAPs;
|
bool multiAPs;
|
||||||
|
bool multiAttacks;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
size_t getSize();
|
size_t getSize();
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -375,6 +375,10 @@ void saveSettings() {
|
|||||||
if (server.arg("multiAPs") == "false") settings.multiAPs = false;
|
if (server.arg("multiAPs") == "false") settings.multiAPs = false;
|
||||||
else settings.multiAPs = true;
|
else settings.multiAPs = true;
|
||||||
}
|
}
|
||||||
|
if (server.hasArg("multiAttacks")) {
|
||||||
|
if (server.arg("multiAttacks") == "false") settings.multiAttacks = false;
|
||||||
|
else settings.multiAttacks = true;
|
||||||
|
}
|
||||||
|
|
||||||
settings.save();
|
settings.save();
|
||||||
server.send( 200, "text/json", "true" );
|
server.send( 200, "text/json", "true" );
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ var ssidEnc = getE('ssidEnc');
|
|||||||
var useLed = getE('useLed');
|
var useLed = getE('useLed');
|
||||||
/*var channelHop = getE('channelHop');*/
|
/*var channelHop = getE('channelHop');*/
|
||||||
var multiAPs = getE('multiAPs');
|
var multiAPs = getE('multiAPs');
|
||||||
|
var multiAttacks = getE('multiAttacks');
|
||||||
var cMac = getE('cMac');
|
var cMac = getE('cMac');
|
||||||
var cName = getE('cName');
|
var cName = getE('cName');
|
||||||
var res;
|
var res;
|
||||||
@@ -38,6 +39,7 @@ function getData() {
|
|||||||
useLed.checked = res.useLed;
|
useLed.checked = res.useLed;
|
||||||
/*channelHop.checked = res.channelHop;*/
|
/*channelHop.checked = res.channelHop;*/
|
||||||
multiAPs.checked = res.multiAPs;
|
multiAPs.checked = res.multiAPs;
|
||||||
|
multiAttacks.checked = res.multiAttacks;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -56,7 +58,8 @@ function saveSettings() {
|
|||||||
url += "&ssidEnc=" + ssidEnc.checked;
|
url += "&ssidEnc=" + ssidEnc.checked;
|
||||||
url += "&useLed=" + useLed.checked;
|
url += "&useLed=" + useLed.checked;
|
||||||
/*url += "&channelHop=" + channelHop.checked;*/
|
/*url += "&channelHop=" + channelHop.checked;*/
|
||||||
url += "&multiAPs="+ multiAPs.checked;
|
url += "&multiAPs="+multiAPs.checked;
|
||||||
|
url += "&multiAttacks="+multiAttacks.checked;
|
||||||
|
|
||||||
getResponse(url, function(responseText) {
|
getResponse(url, function(responseText) {
|
||||||
if (responseText == "true") {
|
if (responseText == "true") {
|
||||||
|
|||||||
@@ -143,6 +143,15 @@
|
|||||||
<input type="number" id="packetRate" min="1" max="50"> pkts/s
|
<input type="number" id="packetRate" min="1" max="50"> pkts/s
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-6">
|
||||||
|
<label for="multiAttacks">Multiple Attacks</label>
|
||||||
|
</div>
|
||||||
|
<div class="col-6">
|
||||||
|
<input type="checkbox" name="multiAttacks" id="multiAttacks" value="false">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-6">
|
<div class="col-6">
|
||||||
|
|||||||
Reference in New Issue
Block a user