Documentos de Académico
Documentos de Profesional
Documentos de Cultura
===========================================
Copyright (c) 2018 Stefan Kremser
github.com/spacehuhn
===========================================
*/
#include <ESP8266WiFi.h>
#include <Wire.h>
#include <EEPROM.h>
#include "SSD1306.h"
#include "SH1106.h"
extern "C" {
#include "user_interface.h"
}
/* Display settings */
#define minRow 0 /* default = 0 */
#define maxRow 127 /* default = 127 */
#define minLine 0 /* default = 0 */
#define maxLine 63 /* default = 63 */
/* render settings */
#define Row1 0
#define Row2 30
#define Row3 35
#define Row4 80
#define Row5 85
#define Row6 125
#define LineText 0
#define Line 12
#define LineVal 47
void getMultiplicator() {
maxVal = 1;
for (int i = 0; i < maxRow; i++) {
if (val[i] > maxVal) maxVal = val[i];
}
if (maxVal > LineVal) multiplicator = (double)LineVal / (double)maxVal;
else multiplicator = 1;
}
/* start Serial */
Serial.begin(115200);
/* setup wifi */
wifi_set_opmode(STATION_MODE);
wifi_promiscuous_enable(0);
WiFi.disconnect();
wifi_set_promiscuous_rx_cb(sniffer);
wifi_set_channel(curChannel);
wifi_promiscuous_enable(1);
Serial.println("starting!");
}
//switch channel
curChannel++;
if (curChannel > maxCh) curChannel = 1;
wifi_set_channel(curChannel);
for (int i = 0; i < maxRow; i++) val[i] = 0;
pkts = 0;
multiplicator = 1;
//save changes
EEPROM.write(2000, curChannel);
EEPROM.commit();
//draw display
display.clear();
display.drawLine(minRow, Line, maxRow, Line);
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.drawString(Row1, LineText, "Ch:");
display.drawString(Row3, LineText, "Pkts:");
display.drawString(Row5, LineText, "DA:");
display.setTextAlignment(TEXT_ALIGN_RIGHT);
display.drawString(Row2, LineText, (String)curChannel);
display.drawString(Row4, LineText, (String)no_deauths);
display.drawString(Row6, LineText, (String)deauths);
for (int i = 0; i < maxRow; i++) display.drawLine(i, maxLine, i, maxLine -
val[i]*multiplicator);
display.display();
}
//every second
if (curTime - prevTime >= 1000) {
prevTime = curTime;
//draw display
display.clear();
display.drawLine(minRow, Line, maxRow, Line);
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.drawString(Row1, LineText, "Ch:");
display.drawString(Row3, LineText, "Pkts:");
display.drawString(Row5, LineText, "DA:");
display.setTextAlignment(TEXT_ALIGN_RIGHT);
display.drawString(Row2, LineText, (String)curChannel);
display.drawString(Row4, LineText, (String)no_deauths);
display.drawString(Row6, LineText, (String)deauths);
for (int i = 0; i < maxRow; i++) display.drawLine(i, maxLine, i, maxLine -
val[i]*multiplicator);
display.display();
//reset counters
deauths = 0;
pkts = 0;
}