Enabled Multiple attacks + Improved Probe Request

This commit is contained in:
Stefan Kremser
2017-05-16 17:06:14 +02:00
parent 3128dbe83f
commit ff745f6870
8 changed files with 52 additions and 11 deletions

View File

@@ -96,6 +96,8 @@ void Attack::buildProbe(String _ssid, Mac _mac) {
for (int i = 0; i < len; i++) packet[packetSize + i] = _ssid[i];
packetSize += len;
for (int i = 0; i < sizeof(probePacket_RateTag); i++) packet[packetSize + i] = probePacket_RateTag[i];
packetSize += sizeof(probePacket_RateTag);
}
bool Attack::send() {
@@ -218,15 +220,18 @@ void Attack::run() {
for (int a = 0; a < ssidList.len; 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;
macListChangeCounter++;
if (macListChangeCounter >= macChangeInterval && macChangeInterval > 0) {
generate();
macListChangeCounter = 0;
/*ssidList.clear();
ssidList._random();
macListChangeCounter = 0;*/
}
if (debug) Serial.println("done");
if (settings.attackTimeout > 0) {
@@ -248,8 +253,10 @@ void Attack::start(int num) {
refreshLed();
if (debug) Serial.println("starting " + (String)attackNames[num] + " attack...");
if (num == 0) attackMode = "STOP";
for (int i = 0; i < attacksNum; i++){
if(i != num) stop(i);
if(!settings.multiAttacks){
for (int i = 0; i < attacksNum; i++){
if(i != num) stop(i);
}
}
}else stop(num);
}

View File

@@ -18,7 +18,7 @@ extern "C" {
#define attacksNum 3
#define macListLen 64
#define macChangeInterval 4
#define macChangeInterval 6
extern void PrintHex8(uint8_t *data, uint8_t length);
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 attackTimeoutCounter[attacksNum];
int channels[macListLen];

View File

@@ -42,6 +42,7 @@ void Settings::load() {
useLed = (bool)EEPROM.read(useLedAdr);
channelHop = (bool)EEPROM.read(channelHopAdr);
multiAPs = (bool)EEPROM.read(multiAPsAdr);
multiAttacks = (bool)EEPROM.read(multiAttacksAdr);
}
void Settings::reset() {
@@ -65,6 +66,7 @@ void Settings::reset() {
useLed = true;
channelHop = false;
multiAPs = false;
multiAttacks = false;
if (debug) Serial.println("done");
@@ -95,6 +97,7 @@ void Settings::save() {
EEPROM.write(useLedAdr, useLed);
EEPROM.write(channelHopAdr, channelHop);
EEPROM.write(multiAPsAdr, multiAPs);
EEPROM.write(multiAttacksAdr, multiAttacks);
EEPROM.write(checkNumAdr, checkNum);
EEPROM.commit();
@@ -121,6 +124,7 @@ void Settings::info() {
Serial.println("use built-in LED: " + (String)useLed);
Serial.println("channel hopping: " + (String)channelHop);
Serial.println("multiple APs: " + (String)multiAPs);
Serial.println("multiple Attacks: " + (String)multiAttacks);
}
size_t Settings::getSize(){
@@ -139,7 +143,8 @@ size_t Settings::getSize(){
json += "\"attackEncrypted\":" + (String)attackEncrypted + ",";
json += "\"useLed\":" + (String)useLed + ",";
json += "\"channelHop\":" + (String)channelHop + ",";
json += "\"multiAPs\":" + (String)multiAPs + "}";
json += "\"multiAPs\":" + (String)multiAPs + ",";
json += "\"multiAttacks\":" + (String)multiAttacks + "}";
jsonSize += json.length();
return jsonSize;
@@ -162,7 +167,8 @@ void Settings::send() {
json += "\"attackEncrypted\":" + (String)attackEncrypted + ",";
json += "\"useLed\":" + (String)useLed + ",";
json += "\"channelHop\":" + (String)channelHop + ",";
json += "\"multiAPs\":" + (String)multiAPs + "}";
json += "\"multiAPs\":" + (String)multiAPs + ",";
json += "\"multiAttacks\":" + (String)multiAttacks + "}";
sendToBuffer(json);
sendBuffer();

View File

@@ -33,6 +33,7 @@ extern NameList nameList;
#define useLedAdr 1099
#define channelHopAdr 1100
#define multiAPsAdr 1101
#define multiAttacksAdr 1102
#define checkNumAdr 1102
#define checkNum 14
@@ -62,6 +63,7 @@ class Settings
bool useLed;
bool channelHop;
bool multiAPs;
bool multiAttacks;
private:
size_t getSize();

File diff suppressed because one or more lines are too long

View File

@@ -375,6 +375,10 @@ void saveSettings() {
if (server.arg("multiAPs") == "false") settings.multiAPs = false;
else settings.multiAPs = true;
}
if (server.hasArg("multiAttacks")) {
if (server.arg("multiAttacks") == "false") settings.multiAttacks = false;
else settings.multiAttacks = true;
}
settings.save();
server.send( 200, "text/json", "true" );

View File

@@ -13,6 +13,7 @@ var ssidEnc = getE('ssidEnc');
var useLed = getE('useLed');
/*var channelHop = getE('channelHop');*/
var multiAPs = getE('multiAPs');
var multiAttacks = getE('multiAttacks');
var cMac = getE('cMac');
var cName = getE('cName');
var res;
@@ -38,6 +39,7 @@ function getData() {
useLed.checked = res.useLed;
/*channelHop.checked = res.channelHop;*/
multiAPs.checked = res.multiAPs;
multiAttacks.checked = res.multiAttacks;
});
}
@@ -56,7 +58,8 @@ function saveSettings() {
url += "&ssidEnc=" + ssidEnc.checked;
url += "&useLed=" + useLed.checked;
/*url += "&channelHop=" + channelHop.checked;*/
url += "&multiAPs="+ multiAPs.checked;
url += "&multiAPs="+multiAPs.checked;
url += "&multiAttacks="+multiAttacks.checked;
getResponse(url, function(responseText) {
if (responseText == "true") {

View File

@@ -143,6 +143,15 @@
<input type="number" id="packetRate" min="1" max="50"> pkts/s
</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="col-6">