mirror of
https://github.com/SpacehuhnTech/esp8266_deauther.git
synced 2025-12-22 22:49:58 +01:00
functional settings site
This commit is contained in:
@@ -144,10 +144,11 @@ void Attack::run(){
|
|||||||
|
|
||||||
stati[0] = (String)packetsCounter[0]+"pkts/s";
|
stati[0] = (String)packetsCounter[0]+"pkts/s";
|
||||||
packetsCounter[0] = 0;
|
packetsCounter[0] = 0;
|
||||||
attackTimeoutCounter[0]++;
|
|
||||||
if(debug) Serial.println(" done");
|
if(debug) Serial.println(" done");
|
||||||
attackTimeoutCounter[0]++;
|
if(settings.attackTimeout > 0){
|
||||||
if(attackTimeoutCounter[0] > settings.attackTimeout) stop(1);
|
attackTimeoutCounter[0]++;
|
||||||
|
if(attackTimeoutCounter[0] > settings.attackTimeout) stop(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* =============== Beacon Attack =============== */
|
/* =============== Beacon Attack =============== */
|
||||||
@@ -198,8 +199,10 @@ void Attack::run(){
|
|||||||
macListChangeCounter = 0;
|
macListChangeCounter = 0;
|
||||||
}
|
}
|
||||||
if(debug) Serial.println(" done ");
|
if(debug) Serial.println(" done ");
|
||||||
attackTimeoutCounter[1]++;
|
if(settings.attackTimeout > 0){
|
||||||
if(attackTimeoutCounter[1]/10 > settings.attackTimeout) stop(1);
|
attackTimeoutCounter[1]++;
|
||||||
|
if(attackTimeoutCounter[1]/10 > settings.attackTimeout) stop(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,3 +56,8 @@ void MacList::remove(Mac adr){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MacList::set(int num, Mac adr){
|
||||||
|
macAdrs[num].setMac(adr);
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ class MacList
|
|||||||
MacList();
|
MacList();
|
||||||
int add(Mac adr);
|
int add(Mac adr);
|
||||||
void remove(Mac adr);
|
void remove(Mac adr);
|
||||||
|
void set(int num, Mac adr);
|
||||||
void info();
|
void info();
|
||||||
bool contains(Mac adr);
|
bool contains(Mac adr);
|
||||||
int getNum(Mac adr);
|
int getNum(Mac adr);
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ void NameList::add(Mac client, String name){
|
|||||||
name.getBytes(_buf,nameLength);
|
name.getBytes(_buf,nameLength);
|
||||||
for(int i=0;i<nameLength;i++){
|
for(int i=0;i<nameLength;i++){
|
||||||
if(i<name.length()) names[clients.getNum(client)][i] = _buf[i];
|
if(i<name.length()) names[clients.getNum(client)][i] = _buf[i];
|
||||||
else names[clients.getNum(client)][i] = 32;
|
else names[clients.getNum(client)][i] = 0x00;
|
||||||
}
|
}
|
||||||
NameList::save();
|
NameList::save();
|
||||||
}
|
}
|
||||||
@@ -60,3 +60,27 @@ String NameList::get(Mac client){
|
|||||||
}
|
}
|
||||||
return returnStr;
|
return returnStr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String NameList::getName(int num){
|
||||||
|
String returnStr;
|
||||||
|
for(int h=0;h<nameLength;h++){
|
||||||
|
if(names[num][h] != 0x00) returnStr += (char)names[num][h];
|
||||||
|
}
|
||||||
|
return returnStr;
|
||||||
|
}
|
||||||
|
|
||||||
|
Mac NameList::getMac(int num){
|
||||||
|
return clients._get(num);
|
||||||
|
}
|
||||||
|
|
||||||
|
void NameList::remove(int num){
|
||||||
|
for(int i=num;i<len-1;i++){
|
||||||
|
clients.set(num, clients._get(num+1));
|
||||||
|
for(int h=0;h<nameLength;h++) names[num][h] = names[num+1][h];
|
||||||
|
}
|
||||||
|
clients.remove(clients._get(len));
|
||||||
|
clients.num--;
|
||||||
|
len--;
|
||||||
|
save();
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,10 +25,13 @@ class NameList
|
|||||||
void clear();
|
void clear();
|
||||||
void add(Mac client, String name);
|
void add(Mac client, String name);
|
||||||
String get(Mac client);
|
String get(Mac client);
|
||||||
|
String getName(int num);
|
||||||
|
Mac getMac(int num);
|
||||||
|
void remove(int num);
|
||||||
|
int len = 0;
|
||||||
private:
|
private:
|
||||||
void save();
|
void save();
|
||||||
|
|
||||||
int len = 0;
|
|
||||||
MacList clients;
|
MacList clients;
|
||||||
uint8_t names[listLength][nameLength];
|
uint8_t names[listLength][nameLength];
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ void Settings::load(){
|
|||||||
|
|
||||||
if(ssidLen < 1 || ssidLen > 32 || passwordLen < 8 || passwordLen > 32) reset();
|
if(ssidLen < 1 || ssidLen > 32 || passwordLen < 8 || passwordLen > 32) reset();
|
||||||
else{
|
else{
|
||||||
|
ssid = "";
|
||||||
|
password = "";
|
||||||
for(int i=0;i<ssidLen;i++) ssid += (char)EEPROM.read(ssidAdr+i);
|
for(int i=0;i<ssidLen;i++) ssid += (char)EEPROM.read(ssidAdr+i);
|
||||||
for(int i=0;i<passwordLen;i++) password += (char)EEPROM.read(passwordAdr+i);
|
for(int i=0;i<passwordLen;i++) password += (char)EEPROM.read(passwordAdr+i);
|
||||||
|
|
||||||
@@ -40,7 +42,8 @@ void Settings::reset(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Settings::save(){
|
void Settings::save(){
|
||||||
if(debug) Serial.print("saving settings...");
|
ssidLen = ssid.length();
|
||||||
|
passwordLen = password.length();
|
||||||
|
|
||||||
EEPROM.write(ssidLenAdr,ssidLen);
|
EEPROM.write(ssidLenAdr,ssidLen);
|
||||||
EEPROM.write(passwordLenAdr,passwordLen);
|
EEPROM.write(passwordLenAdr,passwordLen);
|
||||||
@@ -48,19 +51,18 @@ void Settings::save(){
|
|||||||
for(int i=0;i<ssidLen;i++) EEPROM.write(ssidAdr+i,ssid[i]);
|
for(int i=0;i<ssidLen;i++) EEPROM.write(ssidAdr+i,ssid[i]);
|
||||||
for(int i=0;i<passwordLen;i++) EEPROM.write(passwordAdr+i,password[i]);
|
for(int i=0;i<passwordLen;i++) EEPROM.write(passwordAdr+i,password[i]);
|
||||||
|
|
||||||
EEPROM.write(deauthReasonAdr, deauthReason);
|
|
||||||
EEPROM.write(deauthReasonAdr, deauthReason);
|
EEPROM.write(deauthReasonAdr, deauthReason);
|
||||||
|
|
||||||
eepromWriteInt(attackTimeoutAdr, attackTimeout);
|
eepromWriteInt(attackTimeoutAdr, attackTimeout);
|
||||||
|
|
||||||
EEPROM.write(attackPacketRateAdr, attackPacketRate);
|
EEPROM.write(attackPacketRateAdr, attackPacketRate);
|
||||||
EEPROM.write(clientScanTimeAdr, clientScanTime);
|
EEPROM.write(clientScanTimeAdr, clientScanTime);
|
||||||
|
EEPROM.commit();
|
||||||
|
|
||||||
if(debug){
|
if(debug){
|
||||||
info();
|
info();
|
||||||
Serial.println("done");
|
Serial.println("settings saved");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Settings::info(){
|
void Settings::info(){
|
||||||
@@ -75,3 +77,28 @@ void Settings::info(){
|
|||||||
Serial.println("client scan time: "+(String)clientScanTime);
|
Serial.println("client scan time: "+(String)clientScanTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String Settings::get(){
|
||||||
|
String json = "{";
|
||||||
|
//\"
|
||||||
|
json += "\"ssid\":\""+ssid+"\",";
|
||||||
|
json += "\"password\":\""+password+"\",";
|
||||||
|
json += "\"deauthReason\":"+(String)(int)deauthReason+",";
|
||||||
|
json += "\"attackTimeout\":"+(String)attackTimeout+",";
|
||||||
|
json += "\"attackPacketRate\":"+(String)attackPacketRate+",";
|
||||||
|
json += "\"clientScanTime\":"+(String)clientScanTime+",";
|
||||||
|
|
||||||
|
json += "\"nameList\":[";
|
||||||
|
for(int i=0;i<nameList.len;i++){
|
||||||
|
json += "{";
|
||||||
|
json += "\"id\":"+(String)i+",";
|
||||||
|
json += "\"name\":\""+nameList.getName(i)+"\",";
|
||||||
|
json += "\"mac\":\""+nameList.getMac(i).toString()+"\",";
|
||||||
|
json += "\"vendor\":\""+data_getVendor(nameList.getMac(i)._get(0), nameList.getMac(i)._get(1), nameList.getMac(i)._get(2))+"\"";
|
||||||
|
json += "}";
|
||||||
|
if(i!=nameList.len-1) json += ",";
|
||||||
|
}
|
||||||
|
json += "]";
|
||||||
|
|
||||||
|
json += "}";
|
||||||
|
return json;
|
||||||
|
}
|
||||||
|
|||||||
@@ -4,10 +4,13 @@
|
|||||||
#include <EEPROM.h>
|
#include <EEPROM.h>
|
||||||
#include "Mac.h"
|
#include "Mac.h"
|
||||||
#include "MacList.h"
|
#include "MacList.h"
|
||||||
|
#include "NameList.h"
|
||||||
|
|
||||||
extern const bool debug;
|
extern const bool debug;
|
||||||
|
extern String data_getVendor(uint8_t first,uint8_t second,uint8_t third);
|
||||||
extern void eepromWriteInt(int adr, int val);
|
extern void eepromWriteInt(int adr, int val);
|
||||||
extern int eepromReadInt(int adr);
|
extern int eepromReadInt(int adr);
|
||||||
|
extern NameList nameList;
|
||||||
|
|
||||||
#define ssidLenAdr 1024
|
#define ssidLenAdr 1024
|
||||||
#define ssidAdr 1025
|
#define ssidAdr 1025
|
||||||
@@ -25,6 +28,7 @@ class Settings
|
|||||||
void load();
|
void load();
|
||||||
void reset();
|
void reset();
|
||||||
void save();
|
void save();
|
||||||
|
String get();
|
||||||
void info();
|
void info();
|
||||||
|
|
||||||
int ssidLen;
|
int ssidLen;
|
||||||
@@ -33,7 +37,7 @@ class Settings
|
|||||||
String password = "";
|
String password = "";
|
||||||
|
|
||||||
uint8_t deauthReason;
|
uint8_t deauthReason;
|
||||||
int attackTimeout;
|
unsigned int attackTimeout;
|
||||||
int attackPacketRate;
|
int attackPacketRate;
|
||||||
|
|
||||||
int clientScanTime;
|
int clientScanTime;
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -16,7 +16,7 @@ extern "C" {
|
|||||||
#include "Attack.h"
|
#include "Attack.h"
|
||||||
#include "Settings.h"
|
#include "Settings.h"
|
||||||
|
|
||||||
const bool debug = false;
|
const bool debug = true;
|
||||||
|
|
||||||
ESP8266WebServer server(80);
|
ESP8266WebServer server(80);
|
||||||
|
|
||||||
@@ -56,6 +56,7 @@ void setup(){
|
|||||||
EEPROM.begin(4096);
|
EEPROM.begin(4096);
|
||||||
|
|
||||||
settings.load();
|
settings.load();
|
||||||
|
if(debug) settings.info();
|
||||||
nameList.load();
|
nameList.load();
|
||||||
|
|
||||||
Serial.println("");
|
Serial.println("");
|
||||||
@@ -74,6 +75,7 @@ void setup(){
|
|||||||
server.on("/index.html", loadIndex);
|
server.on("/index.html", loadIndex);
|
||||||
server.on("/clients.html", loadClients);
|
server.on("/clients.html", loadClients);
|
||||||
server.on("/attack.html", loadAttack);
|
server.on("/attack.html", loadAttack);
|
||||||
|
server.on("/settings.html", loadSettings);
|
||||||
server.on("/functions.js", loadFunctionsJS);
|
server.on("/functions.js", loadFunctionsJS);
|
||||||
|
|
||||||
/* header links */
|
/* header links */
|
||||||
@@ -90,6 +92,9 @@ void setup(){
|
|||||||
server.on("/setName.json", setClientName);
|
server.on("/setName.json", setClientName);
|
||||||
server.on("/attackInfo.json", sendAttackInfo);
|
server.on("/attackInfo.json", sendAttackInfo);
|
||||||
server.on("/attackStart.json", startAttack);
|
server.on("/attackStart.json", startAttack);
|
||||||
|
server.on("/settings.json", getSettings);
|
||||||
|
server.on("/settingsSave.json", saveSettings);
|
||||||
|
server.on("/deleteName.json", deleteName);
|
||||||
|
|
||||||
server.begin();
|
server.begin();
|
||||||
}
|
}
|
||||||
@@ -109,6 +114,8 @@ void loadClients(){ server.send ( 200, "text/html", data_getClientsHTML()); }
|
|||||||
void loadAttack(){ server.send ( 200, "text/html", data_getAttackHTML() ); }
|
void loadAttack(){ server.send ( 200, "text/html", data_getAttackHTML() ); }
|
||||||
void loadFunctionsJS(){ server.send( 200, "text/javascript", data_getFunctionsJS() ); }
|
void loadFunctionsJS(){ server.send( 200, "text/javascript", data_getFunctionsJS() ); }
|
||||||
void loadStyle(){ server.send ( 200, "text/css", data_getStyle() ); }
|
void loadStyle(){ server.send ( 200, "text/css", data_getStyle() ); }
|
||||||
|
void loadSettings(){ server.send( 200, "text/html", data_getSettingsHTML() ); }
|
||||||
|
|
||||||
|
|
||||||
//==========AP-Scan==========
|
//==========AP-Scan==========
|
||||||
void startAPScan(){
|
void startAPScan(){
|
||||||
@@ -167,3 +174,27 @@ void startAttack(){
|
|||||||
}else server.send ( 200, "text/json", "false");
|
}else server.send ( 200, "text/json", "false");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//==========Settings==========
|
||||||
|
void getSettings(){ server.send ( 200, "text/json", settings.get() ); }
|
||||||
|
void saveSettings(){
|
||||||
|
if(server.hasArg("ssid")) settings.ssid = server.arg("ssid");
|
||||||
|
if(server.hasArg("password")) settings.password = server.arg("password");
|
||||||
|
if(server.hasArg("scanTime")) settings.clientScanTime = server.arg("scanTime").toInt();
|
||||||
|
if(server.hasArg("timeout")) settings.attackTimeout = server.arg("timeout").toInt();
|
||||||
|
if(server.hasArg("deauthReason")) settings.deauthReason = server.arg("deauthReason").toInt();
|
||||||
|
if(server.hasArg("packetRate")) settings.attackPacketRate = server.arg("packetRate").toInt();
|
||||||
|
|
||||||
|
settings.save();
|
||||||
|
server.send ( 200, "text/json", "true" );
|
||||||
|
}
|
||||||
|
|
||||||
|
void deleteName(){
|
||||||
|
if(server.hasArg("num")) {
|
||||||
|
int _num = server.arg("num").toInt();
|
||||||
|
nameList.remove(_num);
|
||||||
|
server.send ( 200, "text/json", "true");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
<a href="index.html">APs</a>
|
<a href="index.html">APs</a>
|
||||||
<a href="clients.html">Clients</a>
|
<a href="clients.html">Clients</a>
|
||||||
<a href="attack.html">Attack</a>
|
<a href="attack.html">Attack</a>
|
||||||
|
<a href="settings.html">Settings</a>
|
||||||
</nav>
|
</nav>
|
||||||
<div id="content">
|
<div id="content">
|
||||||
<h1>Attack</h1>
|
<h1>Attack</h1>
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
#clientScanStart{
|
#clientScanStart{
|
||||||
margin-left: 30px;
|
margin-left: 30px;
|
||||||
}
|
}
|
||||||
#clientScanTime{
|
#scanTime{
|
||||||
width: 60px;
|
width: 60px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
@@ -25,11 +25,12 @@
|
|||||||
<a href="index.html">APs</a>
|
<a href="index.html">APs</a>
|
||||||
<a href="clients.html">Clients</a>
|
<a href="clients.html">Clients</a>
|
||||||
<a href="attack.html">Attack</a>
|
<a href="attack.html">Attack</a>
|
||||||
|
<a href="settings.html">Settings</a>
|
||||||
</nav>
|
</nav>
|
||||||
<div id="content">
|
<div id="content">
|
||||||
<h1>Scan for client devices</h1>
|
<h1>Scan for client devices</h1>
|
||||||
|
|
||||||
<label for="clientScanTime">Scan time:</label>
|
<label for="scanTime">Scan time:</label>
|
||||||
<input type="number" id="scanTime" value="10">s
|
<input type="number" id="scanTime" value="10">s
|
||||||
|
|
||||||
<button onclick="scan()" id="startScan">start</button>
|
<button onclick="scan()" id="startScan">start</button>
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
<a href="index.html">APs</a>
|
<a href="index.html">APs</a>
|
||||||
<a href="clients.html">Clients</a>
|
<a href="clients.html">Clients</a>
|
||||||
<a href="attack.html">Attack</a>
|
<a href="attack.html">Attack</a>
|
||||||
|
<a href="settings.html">Settings</a>
|
||||||
</nav>
|
</nav>
|
||||||
<div id="content">
|
<div id="content">
|
||||||
<h1>Scan for WiFi access points</h1>
|
<h1>Scan for WiFi access points</h1>
|
||||||
|
|||||||
@@ -11,6 +11,10 @@
|
|||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 135px;
|
width: 135px;
|
||||||
}
|
}
|
||||||
|
#saved{
|
||||||
|
display: inline;
|
||||||
|
margin-left: 20px;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
<script src="functions.js"></script>
|
<script src="functions.js"></script>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=0.8">
|
<meta name="viewport" content="width=device-width, initial-scale=0.8">
|
||||||
@@ -27,36 +31,44 @@
|
|||||||
|
|
||||||
<p class="block bold">WiFi</p>
|
<p class="block bold">WiFi</p>
|
||||||
|
|
||||||
<label for="clientScanTime">SSID:</label>
|
<label for="ssid">SSID:</label>
|
||||||
<input type="text" id="scanTime" minlength="1" maxlength="32">
|
<input type="text" id="ssid" minlength="1" maxlength="32">
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
<label for="clientScanTime">password:</label>
|
<label for="password">password:</label>
|
||||||
<input type="text" id="scanTime" minlength="8" maxlength="32">
|
<input type="text" id="password" minlength="8" maxlength="32">
|
||||||
<p class="small">must have at least 8 characters!</p>
|
<p class="small">must have at least 8 characters! (needs restart)</p>
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
<p class="block bold">Client Scan</p>
|
<p class="block bold">Client Scan</p>
|
||||||
|
|
||||||
<label for="clientScanTime">default scan time:</label>
|
<label for="scanTime">default scan time:</label>
|
||||||
<input type="number" id="scanTime" min="1" max="255">s
|
<input type="number" id="scanTime" min="1" max="255">s
|
||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
<p class="block bold">Attack</p>
|
<p class="block bold">Attack</p>
|
||||||
|
|
||||||
<label for="clientScanTime">timeout:</label>
|
<label for="timeout">timeout:</label>
|
||||||
<input type="number" id="scanTime" min="-1" max="32768">s
|
<input type="number" id="timeout" min="-1" max="65536">s
|
||||||
<p class="small">-1 for no timeout</p>
|
<p class="small">0 = no timeout</p>
|
||||||
|
|
||||||
<label for="clientScanTime">deauth reason:</label>
|
<label for="deauthReason">deauth reason:</label>
|
||||||
<input type="number" id="scanTime" min="1" max="45">
|
<input type="number" id="deauthReason" min="1" max="45">
|
||||||
<p class="small">reason codes: <a target="_blank" href="http://www.aboutcher.co.uk/2012/07/linux-wifi-deauthenticated-reason-codes/">click</a></p>
|
<p class="small">reason codes: <a target="_blank" href="http://www.aboutcher.co.uk/2012/07/linux-wifi-deauthenticated-reason-codes/">click</a></p>
|
||||||
|
|
||||||
<label for="clientScanTime">packetrate:</label>
|
<label for="packetRate">packetrate:</label>
|
||||||
<input type="number" id="scanTime" min="1" max="100">pkts/s
|
<input type="number" id="packetRate" min="1" max="100">pkts/s
|
||||||
|
<p class="small">only for deauth attack - may cause instability!</p>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<button onclick="saveSettings()">save</button><p class="small" id="saved"></p>
|
||||||
|
<br />
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
|
<p class="block bold">Client Names</p>
|
||||||
|
<table id="nameList">
|
||||||
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
@@ -64,6 +76,81 @@
|
|||||||
|
|
||||||
</body>
|
</body>
|
||||||
<script>
|
<script>
|
||||||
|
var nameListTable = document.getElementById('nameList');
|
||||||
|
var ssid = document.getElementById('ssid');
|
||||||
|
var password = document.getElementById('password');
|
||||||
|
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 res;
|
||||||
|
|
||||||
|
function getData(){
|
||||||
|
getResponse("settings.json",function(responseText){
|
||||||
|
res = JSON.parse(responseText);
|
||||||
|
|
||||||
|
ssid.value = res.ssid;
|
||||||
|
password.value = res.password;
|
||||||
|
scanTime.value = res.clientScanTime;
|
||||||
|
timeout.value = res.attackTimeout;
|
||||||
|
deauthReason.value = res.deauthReason;
|
||||||
|
packetRate.value = res.attackPacketRate;
|
||||||
|
|
||||||
|
var tr = '';
|
||||||
|
if(res.nameList.length > 0) 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].mac+'</td>';
|
||||||
|
tr += '<td>'+res.nameList[i].vendor+'</td>';
|
||||||
|
tr += '<td>'+res.nameList[i].name+' <a class="blue" onclick="changeName('+res.nameList[i].id+')">edit</a></td>';
|
||||||
|
tr += '<td><button class="marginNull warnBtn" onclick="deleteName('+res.nameList[i].id+')">x</button></td>';
|
||||||
|
|
||||||
|
tr += '</tr>';
|
||||||
|
}
|
||||||
|
|
||||||
|
nameListTable.innerHTML = tr;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function changeName(id){
|
||||||
|
var newName = prompt("Name for "+res.nameList[id].mac);
|
||||||
|
if(newName != null){
|
||||||
|
getResponse("setName.json?id="+id+"&name="+newName,function(responseText){
|
||||||
|
if(responseText == "true") getResults();
|
||||||
|
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 += "&password="+password.value;
|
||||||
|
url += "&scanTime="+scanTime.value;
|
||||||
|
url += "&timeout="+timeout.value;
|
||||||
|
url += "&deauthReason="+deauthReason.value;
|
||||||
|
url += "&packetRate="+packetRate.value;
|
||||||
|
|
||||||
|
getResponse(url, function(responseText){
|
||||||
|
if(responseText == "true"){
|
||||||
|
getData();
|
||||||
|
saved.innerHTML = "saved";
|
||||||
|
}
|
||||||
|
else alert("error");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
getData();
|
||||||
</script>
|
</script>
|
||||||
</html>
|
</html>
|
||||||
Reference in New Issue
Block a user