mirror of
https://github.com/SpacehuhnTech/esp8266_deauther.git
synced 2025-12-22 22:49:58 +01:00
Splitted JS part of the HTML files
This commit is contained in:
101
web_server/js/attack.js
Normal file
101
web_server/js/attack.js
Normal file
@@ -0,0 +1,101 @@
|
||||
var selectedAPs = document.getElementById("selectedAPs");
|
||||
var selectedClients = document.getElementById("selectedClients");
|
||||
var table = document.getElementsByTagName("table")[0];
|
||||
var ssidList = document.getElementsByTagName("table")[1];
|
||||
var saved = document.getElementById("saved");
|
||||
var ssidCounter = document.getElementById("ssidCounter");
|
||||
var resultInterval;
|
||||
var res;
|
||||
|
||||
function getResults() {
|
||||
getResponse("attackInfo.json", function(responseText) {
|
||||
res = JSON.parse(responseText);
|
||||
var aps = "";
|
||||
var clients = "";
|
||||
var tr = "<tr><th>Attack</th><th>Status</th><th>Start/Stop</th></tr>";
|
||||
for (var i = 0; i < res.aps.length; i++) aps += "<li>" + res.aps[i] + "</li>";
|
||||
for (var i = 0; i < res.clients.length; i++) clients += "<li>" + res.clients[i] + "</li>";
|
||||
|
||||
selectedAPs.innerHTML = aps;
|
||||
selectedClients.innerHTML = clients;
|
||||
|
||||
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 style='color:#1ecb1e'>" + res.attacks[i].status + "</td>";
|
||||
else tr += "<td style='color:#f00'>" + 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>";
|
||||
|
||||
tr += "</tr>";
|
||||
}
|
||||
table.innerHTML = tr;
|
||||
|
||||
ssidCounter.innerHTML = res.ssid.length + "/64";
|
||||
|
||||
var tr = "<tr><th>Name</th><th>X</th></tr>";
|
||||
for (var i = 0; i < res.ssid.length; i++) {
|
||||
tr += "<tr>";
|
||||
tr += "<td>" + res.ssid[i] + "</td>";
|
||||
tr += '<td><button class="marginNull warnBtn" onclick="deleteSSID(' + i + ')">x</button></td>';
|
||||
tr += "</tr>";
|
||||
}
|
||||
ssidList.innerHTML = tr;
|
||||
|
||||
}, function() {
|
||||
clearInterval(resultInterval);
|
||||
location.reload();
|
||||
});
|
||||
}
|
||||
|
||||
function startStop(num) {
|
||||
getResponse("attackStart.json?num=" + num, function(responseText) {
|
||||
if (responseText == "true") getResults();
|
||||
else alert("error");
|
||||
});
|
||||
}
|
||||
|
||||
function addSSID() {
|
||||
saved.innerHTML = "";
|
||||
if (res.ssid.length >= 64) alert("SSID list full :(");
|
||||
else {
|
||||
var _ssidName = prompt("new SSID:");
|
||||
if (_ssidName != null) getResponse("addSSID.json?name=" + _ssidName, getResults);
|
||||
}
|
||||
}
|
||||
|
||||
function cloneSSID() {
|
||||
saved.innerHTML = "";
|
||||
if (res.ssid.length >= 64) alert("SSID list full :(");
|
||||
else {
|
||||
var _ssidName = prompt("new SSID:");
|
||||
if (_ssidName != null) getResponse("cloneSSID.json?name=" + _ssidName, getResults);
|
||||
}
|
||||
}
|
||||
|
||||
function deleteSSID(num) {
|
||||
saved.innerHTML = "";
|
||||
getResponse("deleteSSID.json?num=" + num, getResults);
|
||||
}
|
||||
|
||||
function randomSSID() {
|
||||
saved.innerHTML = "";
|
||||
getResponse("randomSSID.json", getResults);
|
||||
}
|
||||
function clearSSID() {
|
||||
saved.innerHTML = "";
|
||||
getResponse("clearSSID.json", getResults);
|
||||
}
|
||||
function saveSSID() {
|
||||
saved.innerHTML = "saved";
|
||||
getResponse("saveSSID.json", getResults);
|
||||
}
|
||||
function resetSSID() {
|
||||
saved.innerHTML = "saved";
|
||||
getResponse("resetSSID.json", getResults);
|
||||
}
|
||||
|
||||
getResults();
|
||||
resultInterval = setInterval(getResults, 3000);
|
||||
98
web_server/js/clients.js
Normal file
98
web_server/js/clients.js
Normal file
@@ -0,0 +1,98 @@
|
||||
var table = document.getElementsByTagName('table')[0];
|
||||
var scanBtn = document.getElementById("startScan");
|
||||
var scanTime = document.getElementById("scanTime");
|
||||
var clientsFound = document.getElementById("clientsFound");
|
||||
var scanStatus = document.getElementById("clientScanStatus");
|
||||
|
||||
var res;
|
||||
|
||||
function compare(a, b) {
|
||||
if (a.p > b.p) return -1;
|
||||
if (a.p < b.p) return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
function toggleBtn(onoff) {
|
||||
if (onoff) {
|
||||
scanBtn.style.visibility = 'visible';
|
||||
} else {
|
||||
scanBtn.style.visibility = 'hidden';
|
||||
}
|
||||
}
|
||||
|
||||
function getResults(reload) {
|
||||
if (reload == undefined) {
|
||||
reload = false;
|
||||
}
|
||||
getResponse("ClientScanResults.json", function(responseText) {
|
||||
res = JSON.parse(responseText);
|
||||
res.clients = res.clients.sort(compare);
|
||||
|
||||
clientsFound.innerHTML = "Client devices found: " + res.clients.length;
|
||||
|
||||
var tr = '';
|
||||
if (res.clients.length > 0) tr += '<tr><th>Pkts</th><th>Vendor</th><th>Name</th><th>MAC</th><th>AP</th><th>Select</th></tr>';
|
||||
|
||||
for (var i = 0; i < res.clients.length; i++) {
|
||||
|
||||
if (res.clients[i].s == 1) tr += '<tr class="selected">';
|
||||
else tr += '<tr>';
|
||||
tr += '<td>' + res.clients[i].p + '</td>';
|
||||
tr += '<td>' + res.clients[i].v + '</td>';
|
||||
tr += '<td>' + res.clients[i].n + ' <a class="blue" onclick="changeName(' + res.clients[i].i + ')">edit</a></td>';
|
||||
tr += '<td>' + res.clients[i].m + '</td>';
|
||||
tr += '<td>' + res.clients[i].a + '</td>';
|
||||
|
||||
if (res.clients[i].s == 1) tr += '<td><button class="marginNull selectedBtn" onclick="select(' + res.clients[i].i + ')">deselect</button></td>';
|
||||
else tr += '<td><button class="marginNull" onclick="select(' + res.clients[i].i + ')">select</button></td>';
|
||||
|
||||
tr += '</tr>';
|
||||
}
|
||||
table.innerHTML = tr;
|
||||
toggleBtn(true);
|
||||
scanStatus.innerHTML = "";
|
||||
|
||||
if (reload == true) location.reload();
|
||||
|
||||
}, function() {
|
||||
location.reload();
|
||||
}, 6000);
|
||||
|
||||
}
|
||||
|
||||
function scan() {
|
||||
getResponse("ClientScan.json?time=" + scanTime.value, function(responseText) {
|
||||
if (responseText == "true") {
|
||||
scanStatus.innerHTML = "scanning...";
|
||||
toggleBtn(false);
|
||||
setTimeout(function() {
|
||||
scanStatus.innerHTML = "reconnecting...";
|
||||
getResults(true);
|
||||
}, scanTime.value * 1000);
|
||||
}
|
||||
else alert(responseText);
|
||||
});
|
||||
}
|
||||
|
||||
function select(num) {
|
||||
getResponse("clientSelect.json?num=" + num, function(responseText) {
|
||||
if (responseText == "true") getResults();
|
||||
else alert("error :/");
|
||||
});
|
||||
}
|
||||
|
||||
function changeName(id) {
|
||||
var newName = prompt("Name for " + res.clients[id].m);
|
||||
if (newName != null) {
|
||||
getResponse("setName.json?id=" + id + "&name=" + newName, function(responseText) {
|
||||
if (responseText == "true") getResults();
|
||||
else alert("error");
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
getResponse("ClientScanTime.json", function(responseText) {
|
||||
scanTime.value = responseText;
|
||||
});
|
||||
|
||||
getResults();
|
||||
28
web_server/js/functions.js
Normal file
28
web_server/js/functions.js
Normal file
@@ -0,0 +1,28 @@
|
||||
function getResponse(adr, callback, timeoutCallback, timeout){
|
||||
if(timeoutCallback === undefined) {
|
||||
timeoutCallback = function(){
|
||||
location.reload()
|
||||
};
|
||||
}
|
||||
if(timeout === undefined) {
|
||||
timeout = 8000;
|
||||
}
|
||||
var xmlhttp = new XMLHttpRequest();
|
||||
xmlhttp.onreadystatechange = function() {
|
||||
if(xmlhttp.readyState == 4){
|
||||
if(xmlhttp.status == 200) callback(xmlhttp.responseText);
|
||||
else timeoutCallback();
|
||||
}
|
||||
};
|
||||
xmlhttp.open("GET", adr, true);
|
||||
xmlhttp.send();
|
||||
xmlhttp.timeout = timeout;
|
||||
xmlhttp.ontimeout = timeoutCallback;
|
||||
}
|
||||
|
||||
function restartESP() {
|
||||
getResponse("restartESP.json", function(responseText) {
|
||||
if (responseText == "true") getData();
|
||||
else alert("error");
|
||||
});
|
||||
}
|
||||
99
web_server/js/index.js
Normal file
99
web_server/js/index.js
Normal file
@@ -0,0 +1,99 @@
|
||||
var table = document.getElementsByTagName('table')[0];
|
||||
var networkInfo = document.getElementById('networksFound');
|
||||
var scanBtn = document.getElementById('apScanStart');
|
||||
var scanInfo = document.getElementById('scanInfo');
|
||||
var apMAC = document.getElementById('apMAC');
|
||||
var startStopScan = document.getElementById('startStopScan');
|
||||
var autoScan = false;
|
||||
var canScan = true;
|
||||
|
||||
function toggleBtn(onoff) {
|
||||
if (onoff && !autoScan) {
|
||||
scanInfo.style.visibility = 'hidden';
|
||||
scanBtn.style.visibility = 'visible';
|
||||
} else {
|
||||
scanInfo.style.visibility = 'visible';
|
||||
scanBtn.style.visibility = 'hidden';
|
||||
}
|
||||
}
|
||||
|
||||
function compare(a, b) {
|
||||
if (a.r > b.r) return -1;
|
||||
if (a.r < b.r) return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
function getEncryption(num) {
|
||||
if (num == 8) return "WPA*";
|
||||
else if (num == 4) return "WPA2";
|
||||
else if (num == 2) return "WPA";
|
||||
else if (num == 7) return "none";
|
||||
else if (num == 5) return "WEP";
|
||||
}
|
||||
|
||||
function getResults() {
|
||||
toggleBtn(true);
|
||||
getResponse("APScanResults.json", function(responseText) {
|
||||
var res = JSON.parse(responseText);
|
||||
res.aps = res.aps.sort(compare);
|
||||
networkInfo.innerHTML = "Networks found: " + res.aps.length;
|
||||
apMAC.innerHTML = "";
|
||||
|
||||
var tr = '';
|
||||
if (res.aps.length > 0) tr += '<tr><th>Ch</th><th>SSID</th><th>RSSI</th><th>Encrypt.</th><th>Select</th></tr>';
|
||||
|
||||
for (var i = 0; i < res.aps.length; i++) {
|
||||
|
||||
if (res.aps[i].se == 1) tr += '<tr class="selected">';
|
||||
else tr += '<tr>';
|
||||
tr += '<td>' + res.aps[i].c + '</td>';
|
||||
tr += '<td>' + res.aps[i].ss + '</td>';
|
||||
tr += '<td>' + res.aps[i].r + ' <meter value="' + res.aps[i].r + '" max="-30" min="-100" low="-80" high="-60" optimum="-50"></meter></td>';
|
||||
tr += '<td>' + getEncryption(res.aps[i].e) + '</td>';
|
||||
|
||||
if (res.aps[i].se) {
|
||||
tr += '<td><button class="marginNull selectedBtn" onclick="select(' + res.aps[i].i + ')">deselect</button></td>';
|
||||
apMAC.innerHTML = res.aps[i].m;
|
||||
}
|
||||
else tr += '<td><button class="marginNull" onclick="select(' + res.aps[i].i + ')">select</button></td>';
|
||||
tr += '</tr>';
|
||||
}
|
||||
table.innerHTML = tr;
|
||||
canScan = true;
|
||||
});
|
||||
}
|
||||
|
||||
function scan() {
|
||||
canScan = false;
|
||||
toggleBtn(false);
|
||||
getResponse("APScan.json", function(responseText) {
|
||||
if (responseText == "true") getResults();
|
||||
else alert("error");
|
||||
toggleBtn(true);
|
||||
});
|
||||
}
|
||||
|
||||
function startConScan() {
|
||||
if (autoScan) {
|
||||
autoScan = false;
|
||||
startStopScan.innerHTML = "start";
|
||||
toggleBtn(true);
|
||||
} else {
|
||||
autoScan = true;
|
||||
startStopScan.innerHTML = "stop";
|
||||
toggleBtn(false);
|
||||
}
|
||||
}
|
||||
|
||||
function select(num) {
|
||||
getResponse("APSelect.json?num=" + num, function(responseText) {
|
||||
if (responseText == "true") getResults();
|
||||
else alert("error");
|
||||
});
|
||||
}
|
||||
|
||||
getResults();
|
||||
|
||||
setInterval(function() {
|
||||
if (autoScan && canScan) scan();
|
||||
}, 1000);
|
||||
114
web_server/js/settings.js
Normal file
114
web_server/js/settings.js
Normal file
@@ -0,0 +1,114 @@
|
||||
var nameListTable = document.getElementById('nameList');
|
||||
var ssid = document.getElementById('ssid');
|
||||
var ssidHidden = document.getElementById('ssidHidden');
|
||||
var password = document.getElementById('password');
|
||||
var apChannel = document.getElementById('apChannel');
|
||||
var apScanHidden = document.getElementById('apScanHidden');
|
||||
var scanTime = document.getElementById('scanTime');
|
||||
var timeout = document.getElementById('timeout');
|
||||
var deauthReason = document.getElementById('deauthReason');
|
||||
var packetRate = document.getElementById('packetRate');
|
||||
var saved = document.getElementById('saved');
|
||||
var clientNames = document.getElementById('clientNames');
|
||||
var ssidEnc = document.getElementById('ssidEnc');
|
||||
var useLed = document.getElementById('useLed');
|
||||
var channelHop = document.getElementById('channelHop');
|
||||
var res;
|
||||
|
||||
function getData() {
|
||||
getResponse("settings.json", function(responseText) {
|
||||
res = JSON.parse(responseText);
|
||||
|
||||
ssid.value = res.ssid;
|
||||
ssidHidden.checked = res.ssidHidden;
|
||||
password.value = res.password;
|
||||
apChannel.value = res.apChannel;
|
||||
apScanHidden.checked = res.apScanHidden;
|
||||
scanTime.value = res.clientScanTime;
|
||||
timeout.value = res.attackTimeout;
|
||||
deauthReason.value = res.deauthReason;
|
||||
packetRate.value = res.attackPacketRate;
|
||||
ssidEnc.checked = res.attackEncrypted;
|
||||
useLed.checked = res.useLed;
|
||||
channelHop.checked = res.channelHop;
|
||||
|
||||
|
||||
clientNames.innerHTML = "Client Names " + res.nameList.length + "/50";
|
||||
|
||||
var tr = '<tr><th>MAC</th><th>Vendor</th><th>Name</th><th>X</th></tr>';
|
||||
|
||||
for (var i = 0; i < res.nameList.length; i++) {
|
||||
|
||||
tr += '<tr>';
|
||||
tr += '<td>' + res.nameList[i].m + '</td>';
|
||||
tr += '<td>' + res.nameList[i].v + '</td>';
|
||||
tr += '<td>' + res.nameList[i].n + ' <a class="blue" onclick="changeName(' + i + ')">edit</a></td>';
|
||||
tr += '<td><button class="marginNull warnBtn" onclick="deleteName(' + i + ')">x</button></td>';
|
||||
|
||||
tr += '</tr>';
|
||||
}
|
||||
|
||||
nameListTable.innerHTML = tr;
|
||||
});
|
||||
}
|
||||
|
||||
function changeName(id) {
|
||||
var newName = prompt("Name for " + res.nameList[id].m);
|
||||
if (newName != null) {
|
||||
getResponse("editNameList.json?id=" + id + "&name=" + newName, function(responseText) {
|
||||
if (responseText == "true") getData();
|
||||
else alert("error");
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function deleteName(id) {
|
||||
getResponse("deleteName.json?num=" + id, function(responseText) {
|
||||
if (responseText == "true") getData();
|
||||
else alert("error");
|
||||
});
|
||||
}
|
||||
|
||||
function saveSettings() {
|
||||
saved.innerHTML = "saving...";
|
||||
var url = "settingsSave.json";
|
||||
url += "?ssid=" + ssid.value;
|
||||
url += "&ssidHidden=" + ssidHidden.checked;
|
||||
url += "&password=" + password.value;
|
||||
url += "&apChannel=" + apChannel.value;
|
||||
url += "&apScanHidden=" + apScanHidden.checked;
|
||||
url += "&scanTime=" + scanTime.value;
|
||||
url += "&timeout=" + timeout.value;
|
||||
url += "&deauthReason=" + deauthReason.value;
|
||||
url += "&packetRate=" + packetRate.value;
|
||||
url += "&ssidEnc=" + ssidEnc.checked;
|
||||
url += "&useLed=" + useLed.checked;
|
||||
url += "&channelHop=" + channelHop.checked;
|
||||
|
||||
getResponse(url, function(responseText) {
|
||||
if (responseText == "true") {
|
||||
getData();
|
||||
saved.innerHTML = "saved";
|
||||
}
|
||||
else alert("error");
|
||||
});
|
||||
}
|
||||
|
||||
function resetSettings() {
|
||||
getResponse("settingsReset.json", function(responseText) {
|
||||
if (responseText == "true") {
|
||||
getData();
|
||||
saved.innerHTML = "saved";
|
||||
}
|
||||
else alert("error");
|
||||
});
|
||||
}
|
||||
|
||||
function clearNameList() {
|
||||
getResponse("clearNameList.json", function(responseText) {
|
||||
if (responseText == "true") getData();
|
||||
else alert("error");
|
||||
});
|
||||
}
|
||||
|
||||
getData();
|
||||
Reference in New Issue
Block a user