4242 #define fontSize 8
4343 #define rowsPerSite 8
4444
45- int rows = 3 ;
45+ int rows = 4 ;
4646 int curRow = 0 ;
4747 int sites = 1 ;
4848 int curSite = 1 ;
@@ -77,7 +77,8 @@ const bool debug = true;
7777
7878// Run-Time Variables //
7979String wifiMode = " " ;
80- String attackMode = " " ;
80+ String attackMode_deauth = " " ;
81+ String attackMode_beacon = " " ;
8182String scanMode = " SCAN" ;
8283
8384bool warning = true ;
@@ -104,10 +105,11 @@ void drawInterface() {
104105 for (int i = curSite * rowsPerSite - rowsPerSite; i < curSite * rowsPerSite; i++) {
105106 if (i == 0 ) display.drawString (3 , i * fontSize, " -> WiFi " + wifiMode);
106107 else if (i == 1 ) display.drawString (3 , i * fontSize, " -> " + scanMode);
107- else if (i == 2 ) display.drawString (3 , i * fontSize, " -> " + attackMode + " attack" );
108- else if (i - 3 < apScan.results ) {
109- display.drawString (3 , _lrow * fontSize, apScan.getAPName (i - 3 ));
110- if (apScan.isSelected (i - 3 )) {
108+ else if (i == 2 ) display.drawString (3 , i * fontSize, " -> " + attackMode_deauth + " deauth" );
109+ else if (i == 3 ) display.drawString (3 , i * fontSize, " -> " + attackMode_beacon + " beacon flood" );
110+ else if (i - 4 < apScan.results ) {
111+ display.drawString (4 , _lrow * fontSize, apScan.getAPName (i - 4 ));
112+ if (apScan.isSelected (i - 4 )) {
111113 display.drawVerticalLine (1 , _lrow * fontSize, fontSize);
112114 display.drawVerticalLine (2 , _lrow * fontSize, fontSize);
113115 }
@@ -210,7 +212,7 @@ void startAPScan() {
210212
211213#ifdef USE_DISPLAY
212214 apScan.sort ();
213- rows = 3 ;
215+ rows = 4 ;
214216 rows += apScan.results ;
215217 sites = rows / rowsPerSite;
216218 if (rows % rowsPerSite > 0 ) sites++;
@@ -489,7 +491,8 @@ void setup() {
489491
490492 Serial.begin (115200 );
491493
492- attackMode = " START" ;
494+ attackMode_deauth = " START" ;
495+ attackMode_beacon = " START" ;
493496
494497 EEPROM.begin (4096 );
495498 SPIFFS.begin ();
@@ -578,13 +581,17 @@ void setup() {
578581 display.setFont (ArialMT_Plain_24);
579582 display.drawString (0 , 16 , " Deauther" );
580583 display.setFont (ArialMT_Plain_10);
584+ display.drawString (100 , 28 , " v" );
585+ display.setFont (ArialMT_Plain_16);
586+ display.drawString (104 , 24 , " 1.6" );
587+ display.setFont (ArialMT_Plain_10);
581588 display.drawString (0 , 40 , " Copyright (c) 2017" );
582589 display.drawString (0 , 50 , " Stefan Kremser" );
583590 display.display ();
584591
585592 display.setFont (Roboto_Mono_8);
586593
587- delay (2000 );
594+ delay (1600 );
588595#endif
589596
590597#ifdef resetPin
@@ -595,7 +602,7 @@ void setup() {
595602 if (debug){
596603 Serial.println (" \n Starting...\n " );
597604#ifndef USE_DISPLAY
598- delay (2000 );
605+ delay (1600 );
599606#endif
600607 }
601608}
@@ -657,16 +664,37 @@ void loop() {
657664 startAPScan ();
658665 drawInterface ();
659666
660- // ===== start,stop attack =====
667+ // ===== start,stop deauth attack =====
661668 } else if (curRow == 2 ) {
662- if (attackMode == " START" && apScan.getFirstTarget () > -1 ) attack.start (0 );
663- else if (attackMode == " STOP" ) attack.stop (0 );
669+ if (attackMode_deauth == " START" && apScan.getFirstTarget () > -1 ) attack.start (0 );
670+ else if (attackMode_deauth == " STOP" ) attack.stop (0 );
671+
672+ // ===== start,stop beacon attack =====
673+ } else if (curRow == 3 ) {
674+ if (attackMode_beacon == " START" ){
675+
676+ // clone all selected SSIDs
677+ if (apScan.selectedSum > 0 ){
678+ int clonesPerSSID = 48 /apScan.selectedSum ;
679+ ssidList.clear ();
680+ for (int i=0 ;i<apScan.results ;i++){
681+ if (apScan.isSelected (i)){
682+ ssidList.addClone (apScan.getAPName (i),clonesPerSSID, apScan.getAPEncryption (i) != " none" );
683+ }
684+ }
685+ }
686+ attack.ssidChange = true ;
687+
688+ // start attack
689+ attack.start (1 );
690+ }
691+ else if (attackMode_beacon == " STOP" ) attack.stop (1 );
664692 }
665693
666694 // ===== select APs =====
667- else if (curRow >= 3 ) {
695+ else if (curRow >= 4 ) {
668696 attack.stop (0 );
669- apScan.select (curRow - 3 );
697+ apScan.select (curRow - 4 );
670698 }
671699 }
672700 // ===== DISPLAY =====
0 commit comments