From 98deeb503bd4489bd613c59faece674de0f1e773 Mon Sep 17 00:00:00 2001 From: N0vaPixel Date: Sun, 14 May 2017 19:26:52 +0200 Subject: [PATCH] Prevent ClientScan to pick the broadcast address as a client + Clarified nameList --- esp8266_deauther/ClientScan.cpp | 17 ++++++++--------- esp8266_deauther/NameList.cpp | 23 ++++++++++++++++------- esp8266_deauther/NameList.h | 5 +++-- 3 files changed, 27 insertions(+), 18 deletions(-) diff --git a/esp8266_deauther/ClientScan.cpp b/esp8266_deauther/ClientScan.cpp index c53ab13..e544dfb 100644 --- a/esp8266_deauther/ClientScan.cpp +++ b/esp8266_deauther/ClientScan.cpp @@ -99,7 +99,7 @@ void ClientScan::packetSniffer(uint8_t *buf, uint16_t len) { for (int i = 0; i < apScan.results; i++) { if (apScan.isSelected(i)) { - if (apScan.aps._get(i).compare(from)) { + if (apScan.aps._get(i).compare(from) && !broadcast.compare(to)) { int clientNum = add(to); connectedToAp[clientNum] = i; packets[clientNum]++; @@ -115,12 +115,11 @@ void ClientScan::packetSniffer(uint8_t *buf, uint16_t len) { } } } - } } String ClientScan::getClientName(int num) { - return nameList.getName(nameList.get(clients._get(num))); + return nameList.getByMac(getClientMac(num)); } int ClientScan::getClientPackets(int num) { return packets[clients.getNum(clients._get(num))]; @@ -169,8 +168,8 @@ size_t ClientScan::getSize(){ json += "\"i\":" + (String)i + ","; json += "\"p\":" + (String)getClientPackets(i) + ","; json += "\"m\":\"" + getClientMac(i).toString() + "\","; - json += "\"n\":\"" + (String)nameList.getName(nameList.get(getClientMac(i))) + "\","; - json += "\"l\":" + (String)nameList.get(getClientMac(i)) + ","; + json += "\"n\":\"" + (String)nameList.getByMac(getClientMac(i)) + "\","; + json += "\"l\":" + (String)nameList.getNumByMac(getClientMac(i)) + ","; json += "\"v\":\"" + (String)getClientVendor(i) + "\","; json += "\"s\":" + (String)getClientSelected(i) + ","; if(getClientConnectedAp(i)>=0) json += "\"a\":\"" + (String)apScan.getAPName(getClientConnectedAp(i)) + "\""; @@ -184,7 +183,7 @@ size_t ClientScan::getSize(){ for (int i = 0; i < nameList.len; i++) { json = "{"; - json += "\"n\":\"" + nameList.getName(i) + "\","; + json += "\"n\":\"" + nameList.get(i) + "\","; json += "\"m\":\"" + nameList.getMac(i).toString() + "\""; //json += "\"v\":\"" + data_getVendor(nameList.getMac(i)._get(0), nameList.getMac(i)._get(1), nameList.getMac(i)._get(2)) + "\""; json += "}"; @@ -208,8 +207,8 @@ void ClientScan::send() { json += "\"i\":" + (String)i + ","; json += "\"p\":" + (String)getClientPackets(i) + ","; json += "\"m\":\"" + getClientMac(i).toString() + "\","; - json += "\"n\":\"" + (String)nameList.getName(nameList.get(getClientMac(i))) + "\","; - json += "\"l\":" + (String)nameList.get(getClientMac(i)) + ","; + json += "\"n\":\"" + (String)nameList.getByMac(getClientMac(i)) + "\","; + json += "\"l\":" + (String)nameList.getNumByMac(getClientMac(i)) + ","; json += "\"v\":\"" + (String)getClientVendor(i) + "\","; json += "\"s\":" + (String)getClientSelected(i) + ","; if(getClientConnectedAp(i)>=0) json += "\"a\":\"" + (String)apScan.getAPName(getClientConnectedAp(i)) + "\""; @@ -222,7 +221,7 @@ void ClientScan::send() { for (int i = 0; i < nameList.len; i++) { json = "{"; - json += "\"n\":\"" + nameList.getName(i) + "\","; + json += "\"n\":\"" + nameList.get(i) + "\","; json += "\"m\":\"" + nameList.getMac(i).toString() + "\""; //json += "\"v\":\"" + data_getVendor(nameList.getMac(i)._get(0), nameList.getMac(i)._get(1), nameList.getMac(i)._get(2)) + "\""; json += "}"; diff --git a/esp8266_deauther/NameList.cpp b/esp8266_deauther/NameList.cpp index 6033202..451748f 100644 --- a/esp8266_deauther/NameList.cpp +++ b/esp8266_deauther/NameList.cpp @@ -50,13 +50,7 @@ void NameList::add(Mac client, String name) { NameList::save(); } -int NameList::get(Mac client) { - String returnStr; - int clientNum = clients.getNum(client); - return clientNum; -} - -String NameList::getName(int num) { +String NameList::get(int num) { String returnStr; if (num >= 0) { for (int h = 0; h < nameLength; h++) { @@ -71,6 +65,21 @@ Mac NameList::getMac(int num) { return clients._get(num); } +String NameList::getByMac(Mac client) { + String returnStr; + int clientNum = clients.getNum(client); + if (clientNum > -1) { + for (int h = 0; h < nameLength; h++) { + if (names[clientNum][h] != 0x00) returnStr += (char)names[clientNum][h]; + } + } +return returnStr; +} + +int NameList::getNumByMac(Mac client) { + return clients.getNum(client); +} + void NameList::remove(int num) { for (int i = num; i < len - 1; i++) { clients.set(num, clients._get(num + 1)); diff --git a/esp8266_deauther/NameList.h b/esp8266_deauther/NameList.h index 63e8814..11eab2e 100644 --- a/esp8266_deauther/NameList.h +++ b/esp8266_deauther/NameList.h @@ -25,8 +25,9 @@ class NameList void clear(); void add(Mac client, String name); void edit(int num, String name); - int get(Mac client); - String getName(int num); + String get(int num); + String getByMac(Mac client); + int getNumByMac(Mac client); Mac getMac(int num); void remove(int num); int len = 0;