mirror of
https://github.com/SpacehuhnTech/esp8266_deauther.git
synced 2025-12-21 22:19:59 +01:00
Added Random-SSID Mode
also fixed the attack stati
This commit is contained in:
@@ -123,6 +123,18 @@ bool Attack::send() {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Attack::changeRandom(int num){
|
||||||
|
randomMode = !randomMode;
|
||||||
|
randomInterval = num;
|
||||||
|
if(debug) Serial.println("changing randomMode: " + (String)randomMode);
|
||||||
|
if(randomMode){
|
||||||
|
if(debug) Serial.println(" generate random SSIDs");
|
||||||
|
ssidList.clear();
|
||||||
|
ssidList._random();
|
||||||
|
randomCounter = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Attack::sendDeauths(Mac from, Mac to){
|
void Attack::sendDeauths(Mac from, Mac to){
|
||||||
for(int i=0;i<settings.attackPacketRate;i++){
|
for(int i=0;i<settings.attackPacketRate;i++){
|
||||||
buildDeauth(from, to, 0xc0, settings.deauthReason );
|
buildDeauth(from, to, 0xc0, settings.deauthReason );
|
||||||
@@ -240,9 +252,6 @@ void Attack::run() {
|
|||||||
macListChangeCounter++;
|
macListChangeCounter++;
|
||||||
if(settings.macInterval > 0){
|
if(settings.macInterval > 0){
|
||||||
if (macListChangeCounter >= settings.macInterval) generate();
|
if (macListChangeCounter >= settings.macInterval) generate();
|
||||||
/*ssidList.clear();
|
|
||||||
ssidList._random();
|
|
||||||
macListChangeCounter = 0;*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (debug) Serial.println("done");
|
if (debug) Serial.println("done");
|
||||||
@@ -252,6 +261,18 @@ void Attack::run() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Random-Mode Interval
|
||||||
|
if((isRunning[1] || isRunning[2]) && randomMode && currentMillis - randomTime >= 1000){
|
||||||
|
randomTime = millis();
|
||||||
|
if(randomCounter >= randomInterval){
|
||||||
|
if(debug) Serial.println(" generate random SSIDs");
|
||||||
|
ssidList.clear();
|
||||||
|
ssidList._random();
|
||||||
|
randomCounter = 0;
|
||||||
|
}
|
||||||
|
else randomCounter++;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Attack::start(int num) {
|
void Attack::start(int num) {
|
||||||
@@ -281,7 +302,6 @@ void Attack::stop(int num) {
|
|||||||
prevTime[num] = millis();
|
prevTime[num] = millis();
|
||||||
refreshLed();
|
refreshLed();
|
||||||
}
|
}
|
||||||
|
|
||||||
stati[num] = "ready";
|
stati[num] = "ready";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -309,6 +329,8 @@ void Attack::_log(int num){
|
|||||||
}
|
}
|
||||||
|
|
||||||
size_t Attack::getSize(){
|
size_t Attack::getSize(){
|
||||||
|
if(apScan.selectedSum == 0) stati[0] = "no AP";
|
||||||
|
|
||||||
size_t jsonSize = 0;
|
size_t jsonSize = 0;
|
||||||
|
|
||||||
String json = "{\"aps\":[";
|
String json = "{\"aps\":[";
|
||||||
@@ -358,7 +380,8 @@ size_t Attack::getSize(){
|
|||||||
jsonSize += json.length();
|
jsonSize += json.length();
|
||||||
}
|
}
|
||||||
|
|
||||||
json = "]}";
|
json = "],";
|
||||||
|
json += "\"randomMode\":" + (String)randomMode + "}";
|
||||||
jsonSize += json.length();
|
jsonSize += json.length();
|
||||||
|
|
||||||
return jsonSize;
|
return jsonSize;
|
||||||
@@ -413,7 +436,8 @@ void Attack::sendResults(){
|
|||||||
if (i != ssidList.len - 1) json += ",";
|
if (i != ssidList.len - 1) json += ",";
|
||||||
sendToBuffer(json);
|
sendToBuffer(json);
|
||||||
}
|
}
|
||||||
json = "]}";
|
json = "],";
|
||||||
|
json += "\"randomMode\":" + (String)randomMode + "}";
|
||||||
sendToBuffer(json);
|
sendToBuffer(json);
|
||||||
|
|
||||||
sendBuffer();
|
sendBuffer();
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ class Attack
|
|||||||
void sendResults();
|
void sendResults();
|
||||||
size_t getSize();
|
size_t getSize();
|
||||||
void refreshLed();
|
void refreshLed();
|
||||||
|
void changeRandom(int num);
|
||||||
private:
|
private:
|
||||||
|
|
||||||
void buildDeauth(Mac _ap, Mac _client, uint8_t type, uint8_t reason);
|
void buildDeauth(Mac _ap, Mac _client, uint8_t type, uint8_t reason);
|
||||||
@@ -137,13 +138,18 @@ class Attack
|
|||||||
0x82, //1Mbit/s
|
0x82, //1Mbit/s
|
||||||
0x84, //2Mbit/s
|
0x84, //2Mbit/s
|
||||||
0x8b, //5.5Mbit/s
|
0x8b, //5.5Mbit/s
|
||||||
0x96 //11Mbit/s
|
0x96 //11Mbit/s
|
||||||
};
|
};
|
||||||
|
|
||||||
int macListChangeCounter = 0;
|
int macListChangeCounter = 0;
|
||||||
int attackTimeoutCounter[attacksNum];
|
int attackTimeoutCounter[attacksNum];
|
||||||
int channels[macListLen];
|
int channels[macListLen];
|
||||||
bool buildInLedStatus = false;
|
bool buildInLedStatus = false;
|
||||||
|
|
||||||
|
bool randomMode = false;
|
||||||
|
int randomInterval = 5;
|
||||||
|
int randomCounter = 0;
|
||||||
|
long randomTime = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -32,11 +32,11 @@ void SSIDList::add(String name) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SSIDList::addClone(String name) {
|
void SSIDList::addClone(String name, int num) {
|
||||||
int _restSSIDLen = SSIDLength - name.length();
|
int _restSSIDLen = SSIDLength - name.length();
|
||||||
String _apName;
|
String _apName;
|
||||||
|
|
||||||
for (int c = 0; c < SSIDListLength; c++) {
|
for (int c = 0; c < SSIDListLength && c < num; c++) {
|
||||||
_apName = name;
|
_apName = name;
|
||||||
|
|
||||||
if (c < _restSSIDLen) for (int d = 0; d < _restSSIDLen - c; d++) _apName += " "; //e.g. "SAMPLEAP "
|
if (c < _restSSIDLen) for (int d = 0; d < _restSSIDLen - c; d++) _apName += " "; //e.g. "SAMPLEAP "
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ class SSIDList
|
|||||||
void load();
|
void load();
|
||||||
void clear();
|
void clear();
|
||||||
void add(String name);
|
void add(String name);
|
||||||
void addClone(String name);
|
void addClone(String name, int num);
|
||||||
void edit(int num, String name);
|
void edit(int num, String name);
|
||||||
String get(int num);
|
String get(int num);
|
||||||
void remove(int num);
|
void remove(int num);
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -294,13 +294,15 @@ void startAttack() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void addSSID() {
|
void addSSID() {
|
||||||
ssidList.add(server.arg("name"));
|
if(server.hasArg("ssid") && server.hasArg("num")){
|
||||||
server.send( 200, "text/json", "true");
|
int num = server.arg("num").toInt();
|
||||||
}
|
if(num > 0){
|
||||||
|
ssidList.addClone(server.arg("ssid"),num);
|
||||||
void cloneSSID() {
|
}else{
|
||||||
ssidList.addClone(server.arg("name"));
|
ssidList.add(server.arg("ssid"));
|
||||||
server.send( 200, "text/json", "true");
|
}
|
||||||
|
server.send( 200, "text/json", "true");
|
||||||
|
}else server.send( 200, "text/json", "false");
|
||||||
}
|
}
|
||||||
|
|
||||||
void deleteSSID() {
|
void deleteSSID() {
|
||||||
@@ -333,6 +335,11 @@ void restartESP() {
|
|||||||
ESP.reset();
|
ESP.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void enableRandom(){
|
||||||
|
attack.changeRandom(server.arg("interval").toInt());
|
||||||
|
server.send( 200, "text/json", "true");
|
||||||
|
}
|
||||||
|
|
||||||
//==========Settings==========
|
//==========Settings==========
|
||||||
void getSettings() {
|
void getSettings() {
|
||||||
settings.send();
|
settings.send();
|
||||||
@@ -501,7 +508,6 @@ void setup() {
|
|||||||
server.on("/clearNameList.json", clearNameList);
|
server.on("/clearNameList.json", clearNameList);
|
||||||
server.on("/editNameList.json", editClientName);
|
server.on("/editNameList.json", editClientName);
|
||||||
server.on("/addSSID.json", addSSID);
|
server.on("/addSSID.json", addSSID);
|
||||||
server.on("/cloneSSID.json", cloneSSID);
|
|
||||||
server.on("/deleteSSID.json", deleteSSID);
|
server.on("/deleteSSID.json", deleteSSID);
|
||||||
server.on("/randomSSID.json", randomSSID);
|
server.on("/randomSSID.json", randomSSID);
|
||||||
server.on("/clearSSID.json", clearSSID);
|
server.on("/clearSSID.json", clearSSID);
|
||||||
@@ -509,6 +515,7 @@ void setup() {
|
|||||||
server.on("/saveSSID.json", saveSSID);
|
server.on("/saveSSID.json", saveSSID);
|
||||||
server.on("/restartESP.json", restartESP);
|
server.on("/restartESP.json", restartESP);
|
||||||
server.on("/addClient.json",addClient);
|
server.on("/addClient.json",addClient);
|
||||||
|
server.on("/enableRandom.json",enableRandom);
|
||||||
|
|
||||||
server.begin();
|
server.begin();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,6 +42,9 @@
|
|||||||
<table></table>
|
<table></table>
|
||||||
|
|
||||||
<p class="small">
|
<p class="small">
|
||||||
|
<span class="warn">INFO: </span><span class="bold">You may have to reload the site to see the results.</span>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
WPA* = WPA/WPA2 auto mode
|
WPA* = WPA/WPA2 auto mode
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|||||||
@@ -38,10 +38,61 @@
|
|||||||
<table>
|
<table>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<p>
|
<br />
|
||||||
|
|
||||||
|
<label class="left"><input type="number" id="randomIntrvl" value="5" min="1" max="65000"/>s</label>
|
||||||
|
<button class="right" id="randomBtn" onclick="random()">Enable Random</button>
|
||||||
|
|
||||||
|
<p class="clear">
|
||||||
|
<br />
|
||||||
<span class="warn">INFO: </span><span class="bold">You may loose connection when starting the attack.</span><br />
|
<span class="warn">INFO: </span><span class="bold">You may loose connection when starting the attack.</span><br />
|
||||||
Change the channel in the settings to the same of the selected AP to prevent this.
|
Change the channel in the settings to the same of the selected AP to prevent this.
|
||||||
<br />
|
</p>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-6">
|
||||||
|
<label for="ssid">SSID</label>
|
||||||
|
</div>
|
||||||
|
<div class="col-6">
|
||||||
|
<input type="text" id="ssid" minlength="1" maxlength="32" placeholder="SSID">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-6">
|
||||||
|
<label for="num">Number of Clones</label>
|
||||||
|
</div>
|
||||||
|
<div class="col-6">
|
||||||
|
<input type="number" id="num" min="0" max="48" value="0">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12">
|
||||||
|
|
||||||
|
<button class="button-primary col-4" onclick="addSSID()">add</button>
|
||||||
|
|
||||||
|
<br class="clear" />
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<p class="left">SSIDs: <span id="ssidCounter">0/48</span>
|
||||||
|
<div class="right">
|
||||||
|
<button class="button-warn" onclick="clearSSID()">clear</button>
|
||||||
|
<button onclick="randomSSID()">random</button>
|
||||||
|
</div>
|
||||||
|
</p>
|
||||||
|
<br />
|
||||||
|
<table></table>
|
||||||
|
<br />
|
||||||
|
<button class="marginNull button-warn" onclick="resetSSID()">reset</button>
|
||||||
|
<button class="marginNull button-primary right" onclick="saveSSID()">save</button>
|
||||||
|
<p class="small" id="saved">saved</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
<br />
|
<br />
|
||||||
<span class="bold">Deauth [deauthentication attack]:</span><br />
|
<span class="bold">Deauth [deauthentication attack]:</span><br />
|
||||||
Sends deauthentication and dissociation frames to the selected station(s) and access point(s).<br />
|
Sends deauthentication and dissociation frames to the selected station(s) and access point(s).<br />
|
||||||
@@ -52,21 +103,6 @@
|
|||||||
<span class="bold">Probe-Request [probe request flood]:</span><br />
|
<span class="bold">Probe-Request [probe request flood]:</span><br />
|
||||||
Sends probe request frames with the SSIDs in the list below.
|
Sends probe request frames with the SSIDs in the list below.
|
||||||
</p>
|
</p>
|
||||||
<br />
|
|
||||||
<p class="left">SSIDs: <span id="ssidCounter">0/48</span>
|
|
||||||
<div class="right">
|
|
||||||
<button class="button-warn" onclick="clearSSID()">clear</button>
|
|
||||||
<button onclick="randomSSID()">random</button>
|
|
||||||
<button onclick="cloneSSID(prompt('new SSID:'))">clone</button>
|
|
||||||
<button class="button-primary" onclick="addSSID()">add</button></p>
|
|
||||||
</div>
|
|
||||||
<br />
|
|
||||||
<table></table>
|
|
||||||
<br />
|
|
||||||
<button class="marginNull button-warn" onclick="resetSSID()">reset</button>
|
|
||||||
<button class="marginNull button-primary right" onclick="saveSSID()">save</button>
|
|
||||||
<p class="small" id="saved">saved</p>
|
|
||||||
|
|
||||||
<div id="copyright">
|
<div id="copyright">
|
||||||
version 1.4<br />
|
version 1.4<br />
|
||||||
Copyright (c) 2017 Stefan Kremser<br />
|
Copyright (c) 2017 Stefan Kremser<br />
|
||||||
|
|||||||
@@ -4,9 +4,12 @@ var table = document.getElementsByTagName("table")[0];
|
|||||||
var ssidList = document.getElementsByTagName("table")[1];
|
var ssidList = document.getElementsByTagName("table")[1];
|
||||||
var saved = getE("saved");
|
var saved = getE("saved");
|
||||||
var ssidCounter = getE("ssidCounter");
|
var ssidCounter = getE("ssidCounter");
|
||||||
|
var ssid = getE("ssid");
|
||||||
|
var num = getE("num");
|
||||||
|
var randomIntrvl = getE("randomIntrvl");
|
||||||
|
var randomBtn = getE("randomBtn");
|
||||||
var resultInterval;
|
var resultInterval;
|
||||||
var res;
|
var res;
|
||||||
|
|
||||||
function getResults() {
|
function getResults() {
|
||||||
getResponse("attackInfo.json", function(responseText) {
|
getResponse("attackInfo.json", function(responseText) {
|
||||||
res = JSON.parse(responseText);
|
res = JSON.parse(responseText);
|
||||||
@@ -19,13 +22,16 @@ function getResults() {
|
|||||||
selectedAPs.innerHTML = aps;
|
selectedAPs.innerHTML = aps;
|
||||||
selectedClients.innerHTML = clients;
|
selectedClients.innerHTML = clients;
|
||||||
|
|
||||||
|
if(res.randomMode == 1) randomBtn.innerHTML = "Disable Random";
|
||||||
|
else randomBtn.innerHTML = "Enable Random";
|
||||||
|
|
||||||
for (var i = 0; i < res.attacks.length; i++) {
|
for (var i = 0; i < res.attacks.length; i++) {
|
||||||
if (res.attacks[i].running) tr += "<tr class='selected'>";
|
if (res.attacks[i].running) tr += "<tr class='selected'>";
|
||||||
else tr += "<tr>";
|
else tr += "<tr>";
|
||||||
|
|
||||||
tr += "<td>" + res.attacks[i].name + "</td>";
|
tr += "<td>" + res.attacks[i].name + "</td>";
|
||||||
if (res.attacks[i].status == "ready") tr += "<td class='green'>" + res.attacks[i].status + "</td>";
|
if (res.attacks[i].status == "ready") tr += "<td class='green' id='status"+i+"'>" + res.attacks[i].status + "</td>";
|
||||||
else tr += "<td class='red'>" + res.attacks[i].status + "</td>";
|
else tr += "<td class='red' id='status"+i+"'>" + res.attacks[i].status + "</td>";
|
||||||
if (res.attacks[i].running) tr += "<td><button class='marginNull selectedBtn' onclick='startStop(" + i + ")'>stop</button></td>";
|
if (res.attacks[i].running) tr += "<td><button class='marginNull selectedBtn' onclick='startStop(" + i + ")'>stop</button></td>";
|
||||||
else tr += "<td><button class='marginNull' onclick='startStop(" + i + ")'>start</button></td>";
|
else tr += "<td><button class='marginNull' onclick='startStop(" + i + ")'>start</button></td>";
|
||||||
|
|
||||||
@@ -52,24 +58,27 @@ function getResults() {
|
|||||||
|
|
||||||
function startStop(num) {
|
function startStop(num) {
|
||||||
getResponse("attackStart.json?num=" + num, function(responseText) {
|
getResponse("attackStart.json?num=" + num, function(responseText) {
|
||||||
|
getE("status"+num).innerHTML = "loading";
|
||||||
if (responseText == "true") getResults();
|
if (responseText == "true") getResults();
|
||||||
else showMessage("response error attackStart.json");
|
else showMessage("response error attackStart.json");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function addSSID() {
|
function addSSID() {
|
||||||
saved.innerHTML = "";
|
|
||||||
if (res.ssid.length >= 64) showMessage("SSID list full :(", 2500);
|
var _ssidName = ssid.value;
|
||||||
else {
|
if(_ssidName.length > 0){
|
||||||
var _ssidName = prompt("new SSID:");
|
if(res.ssid.length >= 64) showMessage("SSID list full :(", 2500);
|
||||||
if (_ssidName != null) getResponse("addSSID.json?name=" + _ssidName, getResults);
|
else{
|
||||||
}
|
saved.innerHTML = "";
|
||||||
|
getResponse("addSSID.json?ssid=" + _ssidName + "&num="+num.value, getResults);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function cloneSSID(_ssidName) {
|
function cloneSSID(_ssidName) {
|
||||||
saved.innerHTML = "";
|
ssid.value = _ssidName;
|
||||||
if (res.ssid.length >= 64) showMessage("SSID list full :(", 2500);
|
num.value = 48 - res.ssid.length;
|
||||||
else if(_ssidName != null) getResponse("cloneSSID.json?name=" + _ssidName, getResults);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function deleteSSID(num) {
|
function deleteSSID(num) {
|
||||||
@@ -93,6 +102,9 @@ function resetSSID() {
|
|||||||
saved.innerHTML = "saved";
|
saved.innerHTML = "saved";
|
||||||
getResponse("resetSSID.json", getResults);
|
getResponse("resetSSID.json", getResults);
|
||||||
}
|
}
|
||||||
|
function random(){
|
||||||
|
getResponse("enableRandom.json?interval="+randomIntrvl.value, getResults);
|
||||||
|
}
|
||||||
|
|
||||||
getResults();
|
getResults();
|
||||||
resultInterval = setInterval(getResults, 1000);
|
resultInterval = setInterval(getResults, 2000);
|
||||||
Reference in New Issue
Block a user