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;
|
||||
}
|
||||
|
||||
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){
|
||||
for(int i=0;i<settings.attackPacketRate;i++){
|
||||
buildDeauth(from, to, 0xc0, settings.deauthReason );
|
||||
@@ -240,9 +252,6 @@ void Attack::run() {
|
||||
macListChangeCounter++;
|
||||
if(settings.macInterval > 0){
|
||||
if (macListChangeCounter >= settings.macInterval) generate();
|
||||
/*ssidList.clear();
|
||||
ssidList._random();
|
||||
macListChangeCounter = 0;*/
|
||||
}
|
||||
|
||||
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) {
|
||||
@@ -281,7 +302,6 @@ void Attack::stop(int num) {
|
||||
prevTime[num] = millis();
|
||||
refreshLed();
|
||||
}
|
||||
|
||||
stati[num] = "ready";
|
||||
}
|
||||
|
||||
@@ -309,6 +329,8 @@ void Attack::_log(int num){
|
||||
}
|
||||
|
||||
size_t Attack::getSize(){
|
||||
if(apScan.selectedSum == 0) stati[0] = "no AP";
|
||||
|
||||
size_t jsonSize = 0;
|
||||
|
||||
String json = "{\"aps\":[";
|
||||
@@ -358,7 +380,8 @@ size_t Attack::getSize(){
|
||||
jsonSize += json.length();
|
||||
}
|
||||
|
||||
json = "]}";
|
||||
json = "],";
|
||||
json += "\"randomMode\":" + (String)randomMode + "}";
|
||||
jsonSize += json.length();
|
||||
|
||||
return jsonSize;
|
||||
@@ -413,7 +436,8 @@ void Attack::sendResults(){
|
||||
if (i != ssidList.len - 1) json += ",";
|
||||
sendToBuffer(json);
|
||||
}
|
||||
json = "]}";
|
||||
json = "],";
|
||||
json += "\"randomMode\":" + (String)randomMode + "}";
|
||||
sendToBuffer(json);
|
||||
|
||||
sendBuffer();
|
||||
|
||||
@@ -45,6 +45,7 @@ class Attack
|
||||
void sendResults();
|
||||
size_t getSize();
|
||||
void refreshLed();
|
||||
void changeRandom(int num);
|
||||
private:
|
||||
|
||||
void buildDeauth(Mac _ap, Mac _client, uint8_t type, uint8_t reason);
|
||||
@@ -137,13 +138,18 @@ class Attack
|
||||
0x82, //1Mbit/s
|
||||
0x84, //2Mbit/s
|
||||
0x8b, //5.5Mbit/s
|
||||
0x96 //11Mbit/s
|
||||
0x96 //11Mbit/s
|
||||
};
|
||||
|
||||
int macListChangeCounter = 0;
|
||||
int attackTimeoutCounter[attacksNum];
|
||||
int channels[macListLen];
|
||||
bool buildInLedStatus = false;
|
||||
|
||||
bool randomMode = false;
|
||||
int randomInterval = 5;
|
||||
int randomCounter = 0;
|
||||
long randomTime = 0;
|
||||
};
|
||||
|
||||
#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();
|
||||
String _apName;
|
||||
|
||||
for (int c = 0; c < SSIDListLength; c++) {
|
||||
for (int c = 0; c < SSIDListLength && c < num; c++) {
|
||||
_apName = name;
|
||||
|
||||
if (c < _restSSIDLen) for (int d = 0; d < _restSSIDLen - c; d++) _apName += " "; //e.g. "SAMPLEAP "
|
||||
@@ -102,4 +102,4 @@ void SSIDList::_random() {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ class SSIDList
|
||||
void load();
|
||||
void clear();
|
||||
void add(String name);
|
||||
void addClone(String name);
|
||||
void addClone(String name, int num);
|
||||
void edit(int num, String name);
|
||||
String get(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() {
|
||||
ssidList.add(server.arg("name"));
|
||||
server.send( 200, "text/json", "true");
|
||||
}
|
||||
|
||||
void cloneSSID() {
|
||||
ssidList.addClone(server.arg("name"));
|
||||
server.send( 200, "text/json", "true");
|
||||
if(server.hasArg("ssid") && server.hasArg("num")){
|
||||
int num = server.arg("num").toInt();
|
||||
if(num > 0){
|
||||
ssidList.addClone(server.arg("ssid"),num);
|
||||
}else{
|
||||
ssidList.add(server.arg("ssid"));
|
||||
}
|
||||
server.send( 200, "text/json", "true");
|
||||
}else server.send( 200, "text/json", "false");
|
||||
}
|
||||
|
||||
void deleteSSID() {
|
||||
@@ -333,6 +335,11 @@ void restartESP() {
|
||||
ESP.reset();
|
||||
}
|
||||
|
||||
void enableRandom(){
|
||||
attack.changeRandom(server.arg("interval").toInt());
|
||||
server.send( 200, "text/json", "true");
|
||||
}
|
||||
|
||||
//==========Settings==========
|
||||
void getSettings() {
|
||||
settings.send();
|
||||
@@ -501,7 +508,6 @@ void setup() {
|
||||
server.on("/clearNameList.json", clearNameList);
|
||||
server.on("/editNameList.json", editClientName);
|
||||
server.on("/addSSID.json", addSSID);
|
||||
server.on("/cloneSSID.json", cloneSSID);
|
||||
server.on("/deleteSSID.json", deleteSSID);
|
||||
server.on("/randomSSID.json", randomSSID);
|
||||
server.on("/clearSSID.json", clearSSID);
|
||||
@@ -509,6 +515,7 @@ void setup() {
|
||||
server.on("/saveSSID.json", saveSSID);
|
||||
server.on("/restartESP.json", restartESP);
|
||||
server.on("/addClient.json",addClient);
|
||||
server.on("/enableRandom.json",enableRandom);
|
||||
|
||||
server.begin();
|
||||
}
|
||||
|
||||
@@ -42,6 +42,9 @@
|
||||
<table></table>
|
||||
|
||||
<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
|
||||
</p>
|
||||
|
||||
|
||||
@@ -38,10 +38,61 @@
|
||||
<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 />
|
||||
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 />
|
||||
<span class="bold">Deauth [deauthentication attack]:</span><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 />
|
||||
Sends probe request frames with the SSIDs in the list below.
|
||||
</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">
|
||||
version 1.4<br />
|
||||
Copyright (c) 2017 Stefan Kremser<br />
|
||||
|
||||
@@ -4,9 +4,12 @@ var table = document.getElementsByTagName("table")[0];
|
||||
var ssidList = document.getElementsByTagName("table")[1];
|
||||
var saved = getE("saved");
|
||||
var ssidCounter = getE("ssidCounter");
|
||||
var ssid = getE("ssid");
|
||||
var num = getE("num");
|
||||
var randomIntrvl = getE("randomIntrvl");
|
||||
var randomBtn = getE("randomBtn");
|
||||
var resultInterval;
|
||||
var res;
|
||||
|
||||
function getResults() {
|
||||
getResponse("attackInfo.json", function(responseText) {
|
||||
res = JSON.parse(responseText);
|
||||
@@ -18,14 +21,17 @@ function getResults() {
|
||||
|
||||
selectedAPs.innerHTML = aps;
|
||||
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++) {
|
||||
if (res.attacks[i].running) tr += "<tr class='selected'>";
|
||||
else tr += "<tr>";
|
||||
|
||||
tr += "<td>" + res.attacks[i].name + "</td>";
|
||||
if (res.attacks[i].status == "ready") tr += "<td class='green'>" + res.attacks[i].status + "</td>";
|
||||
else tr += "<td class='red'>" + 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' 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>";
|
||||
else tr += "<td><button class='marginNull' onclick='startStop(" + i + ")'>start</button></td>";
|
||||
|
||||
@@ -52,24 +58,27 @@ function getResults() {
|
||||
|
||||
function startStop(num) {
|
||||
getResponse("attackStart.json?num=" + num, function(responseText) {
|
||||
getE("status"+num).innerHTML = "loading";
|
||||
if (responseText == "true") getResults();
|
||||
else showMessage("response error attackStart.json");
|
||||
});
|
||||
}
|
||||
|
||||
function addSSID() {
|
||||
saved.innerHTML = "";
|
||||
if (res.ssid.length >= 64) showMessage("SSID list full :(", 2500);
|
||||
else {
|
||||
var _ssidName = prompt("new SSID:");
|
||||
if (_ssidName != null) getResponse("addSSID.json?name=" + _ssidName, getResults);
|
||||
}
|
||||
|
||||
var _ssidName = ssid.value;
|
||||
if(_ssidName.length > 0){
|
||||
if(res.ssid.length >= 64) showMessage("SSID list full :(", 2500);
|
||||
else{
|
||||
saved.innerHTML = "";
|
||||
getResponse("addSSID.json?ssid=" + _ssidName + "&num="+num.value, getResults);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function cloneSSID(_ssidName) {
|
||||
saved.innerHTML = "";
|
||||
if (res.ssid.length >= 64) showMessage("SSID list full :(", 2500);
|
||||
else if(_ssidName != null) getResponse("cloneSSID.json?name=" + _ssidName, getResults);
|
||||
ssid.value = _ssidName;
|
||||
num.value = 48 - res.ssid.length;
|
||||
}
|
||||
|
||||
function deleteSSID(num) {
|
||||
@@ -93,6 +102,9 @@ function resetSSID() {
|
||||
saved.innerHTML = "saved";
|
||||
getResponse("resetSSID.json", getResults);
|
||||
}
|
||||
function random(){
|
||||
getResponse("enableRandom.json?interval="+randomIntrvl.value, getResults);
|
||||
}
|
||||
|
||||
getResults();
|
||||
resultInterval = setInterval(getResults, 1000);
|
||||
resultInterval = setInterval(getResults, 2000);
|
||||
Reference in New Issue
Block a user