11#include " Settings.h"
22
33Settings::Settings () {
4+ uint8_t tempMAC[6 ];
5+ defaultMacAP.set (WiFi.softAPmacAddress (tempMAC));
6+ if (!defaultMacAP.valid ()) defaultMacAP.randomize ();
7+ }
48
9+ void Settings::syncMacInterface (){
10+ if (debug) Serial.println (" Trying to sync the MAC addr with settings" );
11+ if (isSettingsLoaded){
12+ Mac macToSync;
13+ if (isMacAPRand){
14+ macToSync.randomize ();
15+ wifi_set_macaddr (SOFTAP_IF, macToSync._get ());
16+ if (debug) Serial.println (" Synced with a random mac addr : " + macToSync.toString ());
17+ }else if (macAP.valid ()){
18+ macToSync = macAP;
19+ wifi_set_macaddr (SOFTAP_IF, macToSync._get ());
20+ if (debug) Serial.println (" Synced with saved mac addr : " + macToSync.toString ());
21+ }else {
22+ if (debug) Serial.println (" Could not sync because of invalid settings !" );
23+ }
24+ }else {
25+ if (debug) Serial.println (" Could not sync because settings are not loaded !" );
26+ }
27+ }
28+
29+ void Settings::setLedPin (int newLedPin){
30+ prevLedPin = ledPin;
31+ if (newLedPin > 0 && newLedPin != prevLedPin){
32+ ledPin = newLedPin;
33+ pinMode (ledPin, OUTPUT);
34+ if (!prevLedPin == 0 ){
35+ digitalWrite (ledPin, digitalRead (prevLedPin));
36+ digitalWrite (prevLedPin, pinStateOff);
37+ pinMode (prevLedPin, INPUT);
38+ }else {
39+ digitalWrite (ledPin, pinStateOff);
40+ }
41+ }
542}
643
744void Settings::load () {
@@ -31,6 +68,11 @@ void Settings::load() {
3168 } else {
3269 apChannel = 1 ;
3370 }
71+ for (int i=0 ; i<6 ; i++){
72+ macAP.setAt ((uint8_t )EEPROM.read (macAPAdr+i),i);
73+ }
74+ if (!macAP.valid ()) macAP.set (defaultMacAP);
75+ isMacAPRand = (bool )EEPROM.read (isMacAPRandAdr);
3476
3577 apScanHidden = (bool )EEPROM.read (apScanHiddenAdr);
3678
@@ -45,7 +87,8 @@ void Settings::load() {
4587 multiAttacks = (bool )EEPROM.read (multiAttacksAdr);
4688 macInterval = eepromReadInt (macIntervalAdr);
4789 beaconInterval = (bool )EEPROM.read (beaconIntervalAdr);
48- ledPin = (int )EEPROM.read (ledPinAdr);
90+ setLedPin ((int )EEPROM.read (ledPinAdr));
91+ isSettingsLoaded = 1 ;
4992}
5093
5194void Settings::reset () {
@@ -58,6 +101,8 @@ void Settings::reset() {
58101
59102 ssidLen = ssid.length ();
60103 passwordLen = password.length ();
104+ macAP = defaultMacAP;
105+ isMacAPRand = 0 ;
61106
62107 apScanHidden = true ;
63108
@@ -91,6 +136,12 @@ void Settings::save() {
91136 EEPROM.write (ssidHiddenAdr, ssidHidden);
92137 EEPROM.write (apChannelAdr, apChannel);
93138
139+ EEPROM.write (isMacAPRandAdr, isMacAPRand);
140+
141+ for (int i=0 ; i<6 ; i++){
142+ EEPROM.write (macAPAdr+i, macAP._get (i));
143+ }
144+
94145 EEPROM.write (apScanHiddenAdr, apScanHidden);
95146
96147 EEPROM.write (deauthReasonAdr, deauthReason);
@@ -124,6 +175,9 @@ void Settings::info() {
124175 Serial.println (" password: " + password);
125176 Serial.println (" password length: " + (String)passwordLen);
126177 Serial.println (" channel: " + (String)apChannel);
178+ Serial.println (" Default MAC AP: " + defaultMacAP.toString ());
179+ Serial.println (" Saved MAC AP: " + macAP.toString ());
180+ Serial.println (" MAC AP random: " + (String)isMacAPRand);
127181 Serial.println (" Scan hidden APs: " + (String)apScanHidden);
128182 Serial.println (" deauth reson: " + (String)(int )deauthReason);
129183 Serial.println (" attack timeout: " + (String)attackTimeout);
@@ -147,6 +201,8 @@ size_t Settings::getSize() {
147201 json += " \" ssidHidden\" :" + (String)ssidHidden + " ," ;
148202 json += " \" password\" :\" " + password + " \" ," ;
149203 json += " \" apChannel\" :" + (String)apChannel + " ," ;
204+ json += " \" macAp\" :\" " + macAP.toString () + " \" ," ;
205+ json += " \" randMacAp\" :" + (String)isMacAPRand + " ," ;
150206 json += " \" apScanHidden\" :" + (String)apScanHidden + " ," ;
151207 json += " \" deauthReason\" :" + (String)(int )deauthReason + " ," ;
152208 json += " \" attackTimeout\" :" + (String)attackTimeout + " ," ;
@@ -174,6 +230,8 @@ void Settings::send() {
174230 json += " \" ssidHidden\" :" + (String)ssidHidden + " ," ;
175231 json += " \" password\" :\" " + password + " \" ," ;
176232 json += " \" apChannel\" :" + (String)apChannel + " ," ;
233+ json += " \" macAp\" :\" " + macAP.toString () + " \" ," ;
234+ json += " \" randMacAp\" :" + (String)isMacAPRand + " ," ;
177235 json += " \" apScanHidden\" :" + (String)apScanHidden + " ," ;
178236 json += " \" deauthReason\" :" + (String)(int )deauthReason + " ," ;
179237 json += " \" attackTimeout\" :" + (String)attackTimeout + " ," ;
0 commit comments