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+ }
527}
628
729void Settings::load () {
@@ -31,6 +53,11 @@ void Settings::load() {
3153 } else {
3254 apChannel = 1 ;
3355 }
56+ for (int i=0 ; i<6 ; i++){
57+ macAP.setAt ((uint8_t )EEPROM.read (macAPAdr+i),i);
58+ }
59+ if (!macAP.valid ()) macAP.set (defaultMacAP);
60+ isMacAPRand = (bool )EEPROM.read (isMacAPRandAdr);
3461
3562 apScanHidden = (bool )EEPROM.read (apScanHiddenAdr);
3663
@@ -46,6 +73,7 @@ void Settings::load() {
4673 macInterval = eepromReadInt (macIntervalAdr);
4774 beaconInterval = (bool )EEPROM.read (beaconIntervalAdr);
4875 ledPin = (int )EEPROM.read (ledPinAdr);
76+ isSettingsLoaded = 1 ;
4977}
5078
5179void Settings::reset () {
@@ -58,6 +86,8 @@ void Settings::reset() {
5886
5987 ssidLen = ssid.length ();
6088 passwordLen = password.length ();
89+ macAP = defaultMacAP;
90+ isMacAPRand = 0 ;
6191
6292 apScanHidden = true ;
6393
@@ -91,6 +121,12 @@ void Settings::save() {
91121 EEPROM.write (ssidHiddenAdr, ssidHidden);
92122 EEPROM.write (apChannelAdr, apChannel);
93123
124+ EEPROM.write (isMacAPRandAdr, isMacAPRand);
125+
126+ for (int i=0 ; i<6 ; i++){
127+ EEPROM.write (macAPAdr+i, macAP._get (i));
128+ }
129+
94130 EEPROM.write (apScanHiddenAdr, apScanHidden);
95131
96132 EEPROM.write (deauthReasonAdr, deauthReason);
@@ -124,6 +160,9 @@ void Settings::info() {
124160 Serial.println (" password: " + password);
125161 Serial.println (" password length: " + (String)passwordLen);
126162 Serial.println (" channel: " + (String)apChannel);
163+ Serial.println (" Default MAC AP: " + defaultMacAP.toString ());
164+ Serial.println (" Saved MAC AP: " + macAP.toString ());
165+ Serial.println (" MAC AP random: " + (String)isMacAPRand);
127166 Serial.println (" Scan hidden APs: " + (String)apScanHidden);
128167 Serial.println (" deauth reson: " + (String)(int )deauthReason);
129168 Serial.println (" attack timeout: " + (String)attackTimeout);
@@ -147,6 +186,8 @@ size_t Settings::getSize() {
147186 json += " \" ssidHidden\" :" + (String)ssidHidden + " ," ;
148187 json += " \" password\" :\" " + password + " \" ," ;
149188 json += " \" apChannel\" :" + (String)apChannel + " ," ;
189+ json += " \" macAp\" :\" " + macAP.toString () + " \" ," ;
190+ json += " \" randMacAp\" :" + (String)isMacAPRand + " ," ;
150191 json += " \" apScanHidden\" :" + (String)apScanHidden + " ," ;
151192 json += " \" deauthReason\" :" + (String)(int )deauthReason + " ," ;
152193 json += " \" attackTimeout\" :" + (String)attackTimeout + " ," ;
@@ -174,6 +215,8 @@ void Settings::send() {
174215 json += " \" ssidHidden\" :" + (String)ssidHidden + " ," ;
175216 json += " \" password\" :\" " + password + " \" ," ;
176217 json += " \" apChannel\" :" + (String)apChannel + " ," ;
218+ json += " \" macAp\" :\" " + macAP.toString () + " \" ," ;
219+ json += " \" randMacAp\" :" + (String)isMacAPRand + " ," ;
177220 json += " \" apScanHidden\" :" + (String)apScanHidden + " ," ;
178221 json += " \" deauthReason\" :" + (String)(int )deauthReason + " ," ;
179222 json += " \" attackTimeout\" :" + (String)attackTimeout + " ," ;
0 commit comments