mirror of
https://github.com/justcallmekoko/ESP32Marauder.git
synced 2026-01-26 11:14:51 -08:00
Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cebfc5b5c1 | ||
|
|
1291c7f322 | ||
|
|
b234cee7ea | ||
|
|
792b4e5ac9 | ||
|
|
09de10d95c | ||
|
|
898dd1242d | ||
|
|
4f04e91d0a | ||
|
|
b7c2d668b5 |
@@ -3,7 +3,7 @@
|
||||
<!---[](https://travis-ci.com/justcallmekoko/ESP32Marauder)--->
|
||||
<!---Shields/Badges https://shields.io/--->
|
||||
|
||||
# ESP32 Marauder v0.9.9
|
||||
# ESP32 Marauder v0.9.12
|
||||
<p align="center"><img alt="Marauder logo" src="https://github.com/justcallmekoko/ESP32Marauder/blob/master/pictures/marauder3L.jpg?raw=true" width="300"></p>
|
||||
<p align="center">
|
||||
<b>A suite of WiFi/Bluetooth offensive and defensive tools for the ESP32</b>
|
||||
|
||||
@@ -107,6 +107,7 @@ void CommandLine::runCommand(String input) {
|
||||
if (cmd_args.get(0) == HELP_CMD) {
|
||||
Serial.println(HELP_HEAD);
|
||||
Serial.println(HELP_CH_CMD);
|
||||
Serial.println(HELP_SETTINGS_CMD);
|
||||
Serial.println(HELP_CLEARAP_CMD_A);
|
||||
Serial.println(HELP_CLEARAP_CMD_B);
|
||||
Serial.println(HELP_REBOOT_CMD);
|
||||
@@ -189,6 +190,14 @@ void CommandLine::runCommand(String input) {
|
||||
wifi_scan_obj.RunClearSSIDs();
|
||||
}
|
||||
|
||||
else if (cmd_args.get(0) == SETTINGS_CMD) {
|
||||
int ss_sw = this->argSearch(&cmd_args, "-s"); // Set setting
|
||||
|
||||
if (ss_sw == -1) {
|
||||
settings_obj.printJsonSettings(settings_obj.getSettingsString());
|
||||
}
|
||||
}
|
||||
|
||||
else if (cmd_args.get(0) == REBOOT_CMD) {
|
||||
Serial.println("Rebooting...");
|
||||
ESP.restart();
|
||||
@@ -463,24 +472,44 @@ void CommandLine::runCommand(String input) {
|
||||
// Get list of indices
|
||||
LinkedList<String> ap_index = this->parseCommand(cmd_args.get(ap_sw + 1), ",");
|
||||
|
||||
// Mark APs as selected
|
||||
for (int i = 0; i < ap_index.size(); i++) {
|
||||
int index = ap_index.get(i).toInt();
|
||||
if (!this->inRange(access_points->size(), index)) {
|
||||
Serial.println("Index not in range: " + (String)index);
|
||||
continue;
|
||||
// Select ALL APs
|
||||
if (cmd_args.get(ap_sw + 1) == "all") {
|
||||
for (int i = 0; i < access_points->size(); i++) {
|
||||
if (access_points->get(i).selected) {
|
||||
// Unselect "selected" ap
|
||||
AccessPoint new_ap = access_points->get(i);
|
||||
new_ap.selected = false;
|
||||
access_points->set(i, new_ap);
|
||||
}
|
||||
else {
|
||||
// Select "unselected" ap
|
||||
AccessPoint new_ap = access_points->get(i);
|
||||
new_ap.selected = true;
|
||||
access_points->set(i, new_ap);
|
||||
}
|
||||
}
|
||||
if (access_points->get(index).selected) {
|
||||
// Unselect "selected" ap
|
||||
AccessPoint new_ap = access_points->get(index);
|
||||
new_ap.selected = false;
|
||||
access_points->set(index, new_ap);
|
||||
}
|
||||
else {
|
||||
// Select "unselected" ap
|
||||
AccessPoint new_ap = access_points->get(index);
|
||||
new_ap.selected = true;
|
||||
access_points->set(index, new_ap);
|
||||
}
|
||||
// Select specific APs
|
||||
else {
|
||||
// Mark APs as selected
|
||||
for (int i = 0; i < ap_index.size(); i++) {
|
||||
int index = ap_index.get(i).toInt();
|
||||
if (!this->inRange(access_points->size(), index)) {
|
||||
Serial.println("Index not in range: " + (String)index);
|
||||
continue;
|
||||
}
|
||||
if (access_points->get(index).selected) {
|
||||
// Unselect "selected" ap
|
||||
AccessPoint new_ap = access_points->get(index);
|
||||
new_ap.selected = false;
|
||||
access_points->set(index, new_ap);
|
||||
}
|
||||
else {
|
||||
// Select "unselected" ap
|
||||
AccessPoint new_ap = access_points->get(index);
|
||||
new_ap.selected = true;
|
||||
access_points->set(index, new_ap);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "WiFiScan.h"
|
||||
#include "Web.h"
|
||||
#include "SDInterface.h"
|
||||
#include "settings.h"
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
extern MenuFunctions menu_function_obj;
|
||||
@@ -20,6 +21,7 @@
|
||||
extern WiFiScan wifi_scan_obj;
|
||||
extern Web web_obj;
|
||||
extern SDInterface sd_obj;
|
||||
extern Settings settings_obj;
|
||||
extern LinkedList<AccessPoint>* access_points;
|
||||
extern LinkedList<ssid>* ssids;
|
||||
extern const String PROGMEM version_number;
|
||||
@@ -32,6 +34,7 @@ const char PROGMEM CLEARAP_CMD[] = "clearlist";
|
||||
const char PROGMEM REBOOT_CMD[] = "reboot";
|
||||
const char PROGMEM UPDATE_CMD[] = "update";
|
||||
const char PROGMEM HELP_CMD[] = "help";
|
||||
const char PROGMEM SETTINGS_CMD[] = "settings";
|
||||
|
||||
// WiFi sniff/scan
|
||||
const char PROGMEM SCANAP_CMD[] = "scanap";
|
||||
@@ -69,6 +72,7 @@ const char PROGMEM HELP_CLEARAP_CMD_B[] = "clearlist -s";
|
||||
const char PROGMEM HELP_REBOOT_CMD[] = "reboot";
|
||||
const char PROGMEM HELP_UPDATE_CMD_A[] = "update -s";
|
||||
const char PROGMEM HELP_UPDATE_CMD_B[] = "update -w";
|
||||
const char PROGMEM HELP_SETTINGS_CMD[] = "settings [-s <setting> <value>]";
|
||||
|
||||
// WiFi sniff/scan
|
||||
const char PROGMEM HELP_SCANAP_CMD[] = "scanap";
|
||||
|
||||
@@ -14,6 +14,10 @@ void Display::RunSetup()
|
||||
|
||||
// Need to declare new
|
||||
display_buffer = new LinkedList<String>();
|
||||
|
||||
#ifdef SCREEN_BUFFER
|
||||
screen_buffer = new LinkedList<String>();
|
||||
#endif
|
||||
|
||||
tft.init();
|
||||
tft.setRotation(0); // Portrait
|
||||
@@ -252,30 +256,57 @@ void Display::clearScreen()
|
||||
tft.setCursor(0, 0);
|
||||
}
|
||||
|
||||
#ifdef SCREEN_BUFFER
|
||||
void Display::scrollScreenBuffer(bool down) {
|
||||
// Scroll screen normal direction (Up)
|
||||
if (!down) {
|
||||
this->screen_buffer->shift();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void Display::displayBuffer(bool do_clear)
|
||||
{
|
||||
if (this->display_buffer->size() > 0)
|
||||
{
|
||||
delay(1);
|
||||
|
||||
|
||||
while (display_buffer->size() > 0)
|
||||
{
|
||||
xPos = 0;
|
||||
if ((display_buffer->size() > 0) && (!loading))
|
||||
{
|
||||
printing = true;
|
||||
delay(print_delay_1);
|
||||
yDraw = scroll_line(TFT_RED);
|
||||
tft.setCursor(xPos, yDraw);
|
||||
tft.setTextColor(TFT_GREEN, TFT_BLACK);
|
||||
tft.print(display_buffer->shift());
|
||||
printing = false;
|
||||
delay(print_delay_2);
|
||||
}
|
||||
if (!tteBar)
|
||||
blank[(18+(yStart - TOP_FIXED_AREA) / TEXT_HEIGHT)%19] = xPos;
|
||||
else
|
||||
blank[(18+(yStart - TOP_FIXED_AREA_2) / TEXT_HEIGHT)%19] = xPos;
|
||||
|
||||
#ifndef SCREEN_BUFFER
|
||||
xPos = 0;
|
||||
if ((display_buffer->size() > 0) && (!loading))
|
||||
{
|
||||
printing = true;
|
||||
delay(print_delay_1);
|
||||
yDraw = scroll_line(TFT_RED);
|
||||
tft.setCursor(xPos, yDraw);
|
||||
tft.setTextColor(TFT_GREEN, TFT_BLACK);
|
||||
tft.print(display_buffer->shift());
|
||||
printing = false;
|
||||
delay(print_delay_2);
|
||||
}
|
||||
if (!tteBar)
|
||||
blank[(18+(yStart - TOP_FIXED_AREA) / TEXT_HEIGHT)%19] = xPos;
|
||||
else
|
||||
blank[(18+(yStart - TOP_FIXED_AREA_2) / TEXT_HEIGHT)%19] = xPos;
|
||||
#else
|
||||
xPos = 0;
|
||||
if (this->screen_buffer->size() >= MAX_SCREEN_BUFFER)
|
||||
this->scrollScreenBuffer();
|
||||
|
||||
screen_buffer->add(display_buffer->shift());
|
||||
|
||||
for (int i = 0; i < this->screen_buffer->size(); i++) {
|
||||
tft.setCursor(xPos, (i * 12) + (SCREEN_HEIGHT / 6));
|
||||
for (int x = 0; x < TFT_WIDTH / CHAR_WIDTH; x++)
|
||||
tft.print(" ");
|
||||
tft.setCursor(xPos, (i * 12) + (SCREEN_HEIGHT / 6));
|
||||
tft.setTextColor(TFT_GREEN, TFT_BLACK);
|
||||
tft.print(this->screen_buffer->get(i));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,6 +72,10 @@ class Display
|
||||
|
||||
void drawFrame();
|
||||
|
||||
#ifdef SCREEN_BUFFER
|
||||
void scrollScreenBuffer(bool down = false);
|
||||
#endif
|
||||
|
||||
//void addNodes(Menu* menu, String name, Menu* child, std::function<void()> callable);
|
||||
//void changeMenu(Menu* menu);
|
||||
//void showMenuList(Menu* menu, int layer);
|
||||
@@ -103,6 +107,10 @@ class Display
|
||||
|
||||
LinkedList<String>* display_buffer;
|
||||
|
||||
#ifdef SCREEN_BUFFER
|
||||
LinkedList<String>* screen_buffer;
|
||||
#endif
|
||||
|
||||
// The initial y coordinate of the top of the bottom text line
|
||||
uint16_t yDraw = YMAX - BOT_FIXED_AREA - TEXT_HEIGHT;
|
||||
|
||||
|
||||
@@ -926,7 +926,10 @@ void MenuFunctions::main(uint32_t currentTime)
|
||||
(wifi_scan_obj.currentScanMode == WIFI_ATTACK_RICK_ROLL) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_ATTACK_BEACON_LIST) ||
|
||||
(wifi_scan_obj.currentScanMode == BT_SCAN_ALL) ||
|
||||
(wifi_scan_obj.currentScanMode == BT_SCAN_SKIMMERS))
|
||||
(wifi_scan_obj.currentScanMode == BT_SCAN_SKIMMERS) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_EAPOL) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_ACTIVE_EAPOL) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_PACKET_MONITOR))
|
||||
{
|
||||
//Serial.println("Stopping scan...");
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_OFF);
|
||||
@@ -1016,17 +1019,31 @@ void MenuFunctions::main(uint32_t currentTime)
|
||||
|
||||
#ifdef MARAUDER_MINI
|
||||
if (u_btn.justPressed()){
|
||||
if (current_menu->selected > 0) {
|
||||
current_menu->selected--;
|
||||
this->buttonSelected(current_menu->selected);
|
||||
this->buttonNotSelected(current_menu->selected + 1);
|
||||
if (wifi_scan_obj.currentScanMode == WIFI_SCAN_OFF) {
|
||||
if (current_menu->selected > 0) {
|
||||
current_menu->selected--;
|
||||
this->buttonSelected(current_menu->selected);
|
||||
this->buttonNotSelected(current_menu->selected + 1);
|
||||
}
|
||||
}
|
||||
else if ((wifi_scan_obj.currentScanMode == WIFI_PACKET_MONITOR) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_EAPOL)) {
|
||||
if (wifi_scan_obj.set_channel < 14)
|
||||
wifi_scan_obj.changeChannel(wifi_scan_obj.set_channel + 1);
|
||||
}
|
||||
}
|
||||
if (d_btn.justPressed()){
|
||||
if (current_menu->selected < current_menu->list->size() - 1) {
|
||||
current_menu->selected++;
|
||||
this->buttonSelected(current_menu->selected);
|
||||
this->buttonNotSelected(current_menu->selected - 1);
|
||||
if (wifi_scan_obj.currentScanMode == WIFI_SCAN_OFF) {
|
||||
if (current_menu->selected < current_menu->list->size() - 1) {
|
||||
current_menu->selected++;
|
||||
this->buttonSelected(current_menu->selected);
|
||||
this->buttonNotSelected(current_menu->selected - 1);
|
||||
}
|
||||
}
|
||||
else if ((wifi_scan_obj.currentScanMode == WIFI_PACKET_MONITOR) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_EAPOL)) {
|
||||
if (wifi_scan_obj.set_channel > 1)
|
||||
wifi_scan_obj.changeChannel(wifi_scan_obj.set_channel - 1);
|
||||
}
|
||||
}
|
||||
if(c_btn_press){
|
||||
@@ -1510,12 +1527,25 @@ void MenuFunctions::RunSetup()
|
||||
this->drawStatusBar();
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_DEAUTH, TFT_RED);
|
||||
});
|
||||
addNodes(&wifiSnifferMenu, text_table1[45], TFT_BLUE, NULL, PACKET_MONITOR, [this]() {
|
||||
wifi_scan_obj.StartScan(WIFI_PACKET_MONITOR, TFT_BLUE);
|
||||
});
|
||||
addNodes(&wifiSnifferMenu, text_table1[46], TFT_VIOLET, NULL, EAPOL, [this]() {
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_EAPOL, TFT_VIOLET);
|
||||
});
|
||||
#ifndef MARAUDER_MINI
|
||||
addNodes(&wifiSnifferMenu, text_table1[46], TFT_VIOLET, NULL, EAPOL, [this]() {
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_EAPOL, TFT_VIOLET);
|
||||
});
|
||||
addNodes(&wifiSnifferMenu, text_table1[45], TFT_BLUE, NULL, PACKET_MONITOR, [this]() {
|
||||
wifi_scan_obj.StartScan(WIFI_PACKET_MONITOR, TFT_BLUE);
|
||||
});
|
||||
#else
|
||||
addNodes(&wifiSnifferMenu, text_table1[46], TFT_VIOLET, NULL, EAPOL, [this]() {
|
||||
display_obj.clearScreen();
|
||||
this->drawStatusBar();
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_EAPOL, TFT_VIOLET);
|
||||
});
|
||||
addNodes(&wifiSnifferMenu, text_table1[45], TFT_BLUE, NULL, PACKET_MONITOR, [this]() {
|
||||
display_obj.clearScreen();
|
||||
this->drawStatusBar();
|
||||
wifi_scan_obj.StartScan(WIFI_PACKET_MONITOR, TFT_BLUE);
|
||||
});
|
||||
#endif
|
||||
addNodes(&wifiSnifferMenu, text_table1[47], TFT_RED, NULL, PWNAGOTCHI, [this]() {
|
||||
display_obj.clearScreen();
|
||||
this->drawStatusBar();
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -357,6 +357,9 @@ void WiFiScan::startWiFiAttacks(uint8_t scan_mode, uint16_t color, String title_
|
||||
esp_wifi_set_promiscuous(true);
|
||||
esp_wifi_set_max_tx_power(82);
|
||||
this->wifi_initialized = true;
|
||||
#ifdef MARAUDER_FLIPPER
|
||||
flipper_led.attackLED();
|
||||
#endif
|
||||
initTime = millis();
|
||||
}
|
||||
|
||||
@@ -369,6 +372,10 @@ bool WiFiScan::shutdownWiFi() {
|
||||
esp_wifi_set_mode(WIFI_MODE_NULL);
|
||||
esp_wifi_stop();
|
||||
esp_wifi_deinit();
|
||||
|
||||
#ifdef MARAUDER_FLIPPER
|
||||
flipper_led.offLED();
|
||||
#endif
|
||||
|
||||
this->wifi_initialized = false;
|
||||
return true;
|
||||
@@ -385,6 +392,10 @@ bool WiFiScan::shutdownBLE() {
|
||||
|
||||
pBLEScan->clearResults();
|
||||
BLEDevice::deinit();
|
||||
|
||||
#ifdef MARAUDER_FLIPPER
|
||||
flipper_led.offLED();
|
||||
#endif
|
||||
|
||||
this->ble_initialized = false;
|
||||
return true;
|
||||
@@ -432,6 +443,9 @@ void WiFiScan::StopScan(uint8_t scan_mode)
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.display_buffer->clear();
|
||||
#ifdef SCREEN_BUFFER
|
||||
display_obj.screen_buffer->clear();
|
||||
#endif
|
||||
//Serial.print("display_buffer->size(): ");
|
||||
Serial.println(display_obj.display_buffer->size());
|
||||
|
||||
@@ -499,6 +513,10 @@ void WiFiScan::RunAPScan(uint8_t scan_mode, uint16_t color)
|
||||
{
|
||||
sd_obj.openCapture("ap");
|
||||
|
||||
#ifdef MARAUDER_FLIPPER
|
||||
flipper_led.sniffLED();
|
||||
#endif
|
||||
|
||||
Serial.println(text_table4[9] + (String)access_points->size());
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.TOP_FIXED_AREA_2 = 48;
|
||||
@@ -508,9 +526,11 @@ void WiFiScan::RunAPScan(uint8_t scan_mode, uint16_t color)
|
||||
display_obj.initScrollValues(true);
|
||||
display_obj.tft.setTextWrap(false);
|
||||
display_obj.tft.setTextColor(TFT_WHITE, color);
|
||||
display_obj.tft.fillRect(0,16,240,16, color);
|
||||
display_obj.tft.drawCentreString(text_table4[44],120,16,2);
|
||||
display_obj.touchToExit();
|
||||
#ifndef MARAUDER_MINI
|
||||
display_obj.tft.fillRect(0,16,240,16, color);
|
||||
display_obj.tft.drawCentreString(text_table4[44],120,16,2);
|
||||
display_obj.touchToExit();
|
||||
#endif
|
||||
display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK);
|
||||
display_obj.setupScrollArea(display_obj.TOP_FIXED_AREA_2, BOT_FIXED_AREA);
|
||||
#endif
|
||||
@@ -667,11 +687,11 @@ void WiFiScan::RunInfo()
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.tft.setTextWrap(false);
|
||||
display_obj.tft.setFreeFont(NULL);
|
||||
display_obj.tft.setCursor(0, 100);
|
||||
display_obj.tft.setCursor(0, SCREEN_HEIGHT / 3);
|
||||
display_obj.tft.setTextSize(1);
|
||||
display_obj.tft.setTextColor(TFT_CYAN);
|
||||
display_obj.tft.println(text_table4[20]);
|
||||
display_obj.tft.println(text_table4[21] + display_obj.version_number + "\n");
|
||||
display_obj.tft.println(text_table4[21] + display_obj.version_number);
|
||||
display_obj.tft.println(text_table4[22] + (String)esp_get_idf_version());
|
||||
#endif
|
||||
|
||||
@@ -728,6 +748,10 @@ void WiFiScan::RunInfo()
|
||||
void WiFiScan::RunEspressifScan(uint8_t scan_mode, uint16_t color) {
|
||||
sd_obj.openCapture("espressif");
|
||||
|
||||
#ifdef MARAUDER_FLIPPER
|
||||
flipper_led.sniffLED();
|
||||
#endif
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.TOP_FIXED_AREA_2 = 48;
|
||||
display_obj.tteBar = true;
|
||||
@@ -736,9 +760,11 @@ void WiFiScan::RunEspressifScan(uint8_t scan_mode, uint16_t color) {
|
||||
display_obj.initScrollValues(true);
|
||||
display_obj.tft.setTextWrap(false);
|
||||
display_obj.tft.setTextColor(TFT_WHITE, color);
|
||||
display_obj.tft.fillRect(0,16,240,16, color);
|
||||
display_obj.tft.drawCentreString(text_table4[36],120,16,2);
|
||||
display_obj.touchToExit();
|
||||
#ifndef MARAUDER_MINI
|
||||
display_obj.tft.fillRect(0,16,240,16, color);
|
||||
display_obj.tft.drawCentreString(text_table4[36],120,16,2);
|
||||
display_obj.touchToExit();
|
||||
#endif
|
||||
display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK);
|
||||
display_obj.setupScrollArea(display_obj.TOP_FIXED_AREA_2, BOT_FIXED_AREA);
|
||||
#endif
|
||||
@@ -757,38 +783,62 @@ void WiFiScan::RunEspressifScan(uint8_t scan_mode, uint16_t color) {
|
||||
|
||||
void WiFiScan::RunPacketMonitor(uint8_t scan_mode, uint16_t color)
|
||||
{
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.tft.init();
|
||||
display_obj.tft.setRotation(1);
|
||||
display_obj.tft.fillScreen(TFT_BLACK);
|
||||
#ifdef MARAUDER_FLIPPER
|
||||
flipper_led.sniffLED();
|
||||
#endif
|
||||
|
||||
sd_obj.openCapture("packet_monitor");
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
#ifdef TFT_SHIELD
|
||||
uint16_t calData[5] = { 391, 3491, 266, 3505, 7 }; // Landscape TFT Shield
|
||||
Serial.println("Using TFT Shield");
|
||||
#else if defined(TFT_DIY)
|
||||
uint16_t calData[5] = { 213, 3469, 320, 3446, 1 }; // Landscape TFT DIY
|
||||
Serial.println("Using TFT DIY");
|
||||
#ifndef MARAUDER_MINI
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.tft.init();
|
||||
display_obj.tft.setRotation(1);
|
||||
display_obj.tft.fillScreen(TFT_BLACK);
|
||||
#endif
|
||||
display_obj.tft.setTouch(calData);
|
||||
|
||||
//display_obj.tft.setFreeFont(1);
|
||||
display_obj.tft.setFreeFont(NULL);
|
||||
display_obj.tft.setTextSize(1);
|
||||
display_obj.tft.fillRect(127, 0, 193, 28, TFT_BLACK); // Buttons
|
||||
display_obj.tft.fillRect(12, 0, 90, 32, TFT_BLACK); // color key
|
||||
|
||||
delay(10);
|
||||
|
||||
display_obj.tftDrawGraphObjects(x_scale); //draw graph objects
|
||||
display_obj.tftDrawColorKey();
|
||||
display_obj.tftDrawXScaleButtons(x_scale);
|
||||
display_obj.tftDrawYScaleButtons(y_scale);
|
||||
display_obj.tftDrawChannelScaleButtons(set_channel);
|
||||
display_obj.tftDrawExitScaleButtons();
|
||||
#ifdef HAS_SCREEN
|
||||
#ifdef TFT_SHIELD
|
||||
uint16_t calData[5] = { 391, 3491, 266, 3505, 7 }; // Landscape TFT Shield
|
||||
Serial.println("Using TFT Shield");
|
||||
#else if defined(TFT_DIY)
|
||||
uint16_t calData[5] = { 213, 3469, 320, 3446, 1 }; // Landscape TFT DIY
|
||||
Serial.println("Using TFT DIY");
|
||||
#endif
|
||||
display_obj.tft.setTouch(calData);
|
||||
|
||||
//display_obj.tft.setFreeFont(1);
|
||||
display_obj.tft.setFreeFont(NULL);
|
||||
display_obj.tft.setTextSize(1);
|
||||
display_obj.tft.fillRect(127, 0, 193, 28, TFT_BLACK); // Buttons
|
||||
display_obj.tft.fillRect(12, 0, 90, 32, TFT_BLACK); // color key
|
||||
|
||||
delay(10);
|
||||
|
||||
display_obj.tftDrawGraphObjects(x_scale); //draw graph objects
|
||||
display_obj.tftDrawColorKey();
|
||||
display_obj.tftDrawXScaleButtons(x_scale);
|
||||
display_obj.tftDrawYScaleButtons(y_scale);
|
||||
display_obj.tftDrawChannelScaleButtons(set_channel);
|
||||
display_obj.tftDrawExitScaleButtons();
|
||||
#endif
|
||||
#else
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.TOP_FIXED_AREA_2 = 48;
|
||||
display_obj.tteBar = true;
|
||||
display_obj.print_delay_1 = 15;
|
||||
display_obj.print_delay_2 = 10;
|
||||
display_obj.initScrollValues(true);
|
||||
display_obj.tft.setTextWrap(false);
|
||||
display_obj.tft.setTextColor(TFT_WHITE, color);
|
||||
#ifndef MARAUDER_MINI
|
||||
display_obj.tft.fillRect(0,16,240,16, color);
|
||||
display_obj.tft.drawCentreString(text_table4[38],120,16,2);
|
||||
display_obj.touchToExit();
|
||||
#endif
|
||||
display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK);
|
||||
display_obj.setupScrollArea(display_obj.TOP_FIXED_AREA_2, BOT_FIXED_AREA);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
Serial.println("Running packet scan...");
|
||||
@@ -806,37 +856,62 @@ void WiFiScan::RunPacketMonitor(uint8_t scan_mode, uint16_t color)
|
||||
|
||||
void WiFiScan::RunEapolScan(uint8_t scan_mode, uint16_t color)
|
||||
{
|
||||
#ifdef MARAUDER_FLIPPER
|
||||
flipper_led.sniffLED();
|
||||
#endif
|
||||
|
||||
num_eapol = 0;
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.tft.init();
|
||||
display_obj.tft.setRotation(1);
|
||||
display_obj.tft.fillScreen(TFT_BLACK);
|
||||
#endif
|
||||
|
||||
sd_obj.openCapture("eapol");
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
#ifdef TFT_SHIELD
|
||||
uint16_t calData[5] = { 391, 3491, 266, 3505, 7 }; // Landscape TFT Shield
|
||||
//Serial.println("Using TFT Shield");
|
||||
#else if defined(TFT_DIY)
|
||||
uint16_t calData[5] = { 213, 3469, 320, 3446, 1 }; // Landscape TFT DIY
|
||||
//Serial.println("Using TFT DIY");
|
||||
#ifndef MARAUDER_MINI
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.tft.init();
|
||||
display_obj.tft.setRotation(1);
|
||||
display_obj.tft.fillScreen(TFT_BLACK);
|
||||
#endif
|
||||
display_obj.tft.setTouch(calData);
|
||||
|
||||
display_obj.tft.setFreeFont(NULL);
|
||||
display_obj.tft.setTextSize(1);
|
||||
display_obj.tft.fillRect(127, 0, 193, 28, TFT_BLACK); // Buttons
|
||||
display_obj.tft.fillRect(12, 0, 90, 32, TFT_BLACK); // color key
|
||||
sd_obj.openCapture("eapol");
|
||||
|
||||
delay(10);
|
||||
|
||||
display_obj.tftDrawGraphObjects(x_scale); //draw graph objects
|
||||
display_obj.tftDrawEapolColorKey();
|
||||
display_obj.tftDrawChannelScaleButtons(set_channel);
|
||||
display_obj.tftDrawExitScaleButtons();
|
||||
#ifdef HAS_SCREEN
|
||||
#ifdef TFT_SHIELD
|
||||
uint16_t calData[5] = { 391, 3491, 266, 3505, 7 }; // Landscape TFT Shield
|
||||
//Serial.println("Using TFT Shield");
|
||||
#else if defined(TFT_DIY)
|
||||
uint16_t calData[5] = { 213, 3469, 320, 3446, 1 }; // Landscape TFT DIY
|
||||
//Serial.println("Using TFT DIY");
|
||||
#endif
|
||||
display_obj.tft.setTouch(calData);
|
||||
|
||||
display_obj.tft.setFreeFont(NULL);
|
||||
display_obj.tft.setTextSize(1);
|
||||
display_obj.tft.fillRect(127, 0, 193, 28, TFT_BLACK); // Buttons
|
||||
display_obj.tft.fillRect(12, 0, 90, 32, TFT_BLACK); // color key
|
||||
|
||||
delay(10);
|
||||
|
||||
display_obj.tftDrawGraphObjects(x_scale); //draw graph objects
|
||||
display_obj.tftDrawEapolColorKey();
|
||||
display_obj.tftDrawChannelScaleButtons(set_channel);
|
||||
display_obj.tftDrawExitScaleButtons();
|
||||
#endif
|
||||
#else
|
||||
sd_obj.openCapture("eapol");
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.TOP_FIXED_AREA_2 = 48;
|
||||
display_obj.tteBar = true;
|
||||
display_obj.print_delay_1 = 15;
|
||||
display_obj.print_delay_2 = 10;
|
||||
display_obj.initScrollValues(true);
|
||||
display_obj.tft.setTextWrap(false);
|
||||
display_obj.tft.setTextColor(TFT_WHITE, color);
|
||||
#ifndef MARAUDER_MINI
|
||||
display_obj.tft.fillRect(0,16,240,16, color);
|
||||
display_obj.tft.drawCentreString(text_table4[38],120,16,2);
|
||||
display_obj.touchToExit();
|
||||
#endif
|
||||
display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK);
|
||||
display_obj.setupScrollArea(display_obj.TOP_FIXED_AREA_2, BOT_FIXED_AREA);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
@@ -868,9 +943,11 @@ void WiFiScan::RunMimicFlood(uint8_t scan_mode, uint16_t color) {
|
||||
display_obj.initScrollValues(true);
|
||||
display_obj.tft.setTextWrap(false);
|
||||
display_obj.tft.setTextColor(TFT_BLACK, color);
|
||||
display_obj.tft.fillRect(0,16,240,16, color);
|
||||
display_obj.tft.drawCentreString(" Mimic Flood ",120,16,2);
|
||||
display_obj.touchToExit();
|
||||
#ifndef MARAUDER_MINI
|
||||
display_obj.tft.fillRect(0,16,240,16, color);
|
||||
display_obj.tft.drawCentreString(" Mimic Flood ",120,16,2);
|
||||
display_obj.touchToExit();
|
||||
#endif
|
||||
display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK);
|
||||
#endif
|
||||
|
||||
@@ -890,6 +967,10 @@ void WiFiScan::RunPwnScan(uint8_t scan_mode, uint16_t color)
|
||||
{
|
||||
sd_obj.openCapture("pwnagotchi");
|
||||
|
||||
#ifdef MARAUDER_FLIPPER
|
||||
flipper_led.sniffLED();
|
||||
#endif
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.TOP_FIXED_AREA_2 = 48;
|
||||
display_obj.tteBar = true;
|
||||
@@ -898,9 +979,11 @@ void WiFiScan::RunPwnScan(uint8_t scan_mode, uint16_t color)
|
||||
display_obj.initScrollValues(true);
|
||||
display_obj.tft.setTextWrap(false);
|
||||
display_obj.tft.setTextColor(TFT_WHITE, color);
|
||||
display_obj.tft.fillRect(0,16,240,16, color);
|
||||
display_obj.tft.drawCentreString(text_table4[37],120,16,2);
|
||||
display_obj.touchToExit();
|
||||
#ifndef MARAUDER_MINI
|
||||
display_obj.tft.fillRect(0,16,240,16, color);
|
||||
display_obj.tft.drawCentreString(text_table4[37],120,16,2);
|
||||
display_obj.touchToExit();
|
||||
#endif
|
||||
display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK);
|
||||
display_obj.setupScrollArea(display_obj.TOP_FIXED_AREA_2, BOT_FIXED_AREA);
|
||||
#endif
|
||||
@@ -922,6 +1005,10 @@ void WiFiScan::RunBeaconScan(uint8_t scan_mode, uint16_t color)
|
||||
{
|
||||
sd_obj.openCapture("beacon");
|
||||
|
||||
#ifdef MARAUDER_FLIPPER
|
||||
flipper_led.sniffLED();
|
||||
#endif
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.TOP_FIXED_AREA_2 = 48;
|
||||
display_obj.tteBar = true;
|
||||
@@ -930,9 +1017,11 @@ void WiFiScan::RunBeaconScan(uint8_t scan_mode, uint16_t color)
|
||||
display_obj.initScrollValues(true);
|
||||
display_obj.tft.setTextWrap(false);
|
||||
display_obj.tft.setTextColor(TFT_WHITE, color);
|
||||
display_obj.tft.fillRect(0,16,240,16, color);
|
||||
display_obj.tft.drawCentreString(text_table4[38],120,16,2);
|
||||
display_obj.touchToExit();
|
||||
#ifndef MARAUDER_MINI
|
||||
display_obj.tft.fillRect(0,16,240,16, color);
|
||||
display_obj.tft.drawCentreString(text_table4[38],120,16,2);
|
||||
display_obj.touchToExit();
|
||||
#endif
|
||||
display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK);
|
||||
display_obj.setupScrollArea(display_obj.TOP_FIXED_AREA_2, BOT_FIXED_AREA);
|
||||
#endif
|
||||
@@ -953,6 +1042,10 @@ void WiFiScan::RunDeauthScan(uint8_t scan_mode, uint16_t color)
|
||||
{
|
||||
sd_obj.openCapture("deauth");
|
||||
|
||||
#ifdef MARAUDER_FLIPPER
|
||||
flipper_led.sniffLED();
|
||||
#endif
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.TOP_FIXED_AREA_2 = 48;
|
||||
display_obj.tteBar = true;
|
||||
@@ -961,9 +1054,11 @@ void WiFiScan::RunDeauthScan(uint8_t scan_mode, uint16_t color)
|
||||
display_obj.initScrollValues(true);
|
||||
display_obj.tft.setTextWrap(false);
|
||||
display_obj.tft.setTextColor(TFT_BLACK, color);
|
||||
display_obj.tft.fillRect(0,16,240,16, color);
|
||||
display_obj.tft.drawCentreString(text_table4[39],120,16,2);
|
||||
display_obj.touchToExit();
|
||||
#ifndef MARAUDER_MINI
|
||||
display_obj.tft.fillRect(0,16,240,16, color);
|
||||
display_obj.tft.drawCentreString(text_table4[39],120,16,2);
|
||||
display_obj.touchToExit();
|
||||
#endif
|
||||
display_obj.tft.setTextColor(TFT_RED, TFT_BLACK);
|
||||
display_obj.setupScrollArea(display_obj.TOP_FIXED_AREA_2, BOT_FIXED_AREA);
|
||||
#endif
|
||||
@@ -986,6 +1081,10 @@ void WiFiScan::RunProbeScan(uint8_t scan_mode, uint16_t color)
|
||||
{
|
||||
sd_obj.openCapture("probe");
|
||||
|
||||
#ifdef MARAUDER_FLIPPER
|
||||
flipper_led.sniffLED();
|
||||
#endif
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.TOP_FIXED_AREA_2 = 48;
|
||||
display_obj.tteBar = true;
|
||||
@@ -994,9 +1093,11 @@ void WiFiScan::RunProbeScan(uint8_t scan_mode, uint16_t color)
|
||||
display_obj.initScrollValues(true);
|
||||
display_obj.tft.setTextWrap(false);
|
||||
display_obj.tft.setTextColor(TFT_BLACK, color);
|
||||
display_obj.tft.fillRect(0,16,240,16, color);
|
||||
display_obj.tft.drawCentreString(text_table4[40],120,16,2);
|
||||
display_obj.touchToExit();
|
||||
#ifndef MARAUDER_MINI
|
||||
display_obj.tft.fillRect(0,16,240,16, color);
|
||||
display_obj.tft.drawCentreString(text_table4[40],120,16,2);
|
||||
display_obj.touchToExit();
|
||||
#endif
|
||||
display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK);
|
||||
display_obj.setupScrollArea(display_obj.TOP_FIXED_AREA_2, BOT_FIXED_AREA);
|
||||
#endif
|
||||
@@ -1034,9 +1135,11 @@ void WiFiScan::RunBluetoothScan(uint8_t scan_mode, uint16_t color)
|
||||
display_obj.initScrollValues(true);
|
||||
display_obj.tft.setTextWrap(false);
|
||||
display_obj.tft.setTextColor(TFT_BLACK, color);
|
||||
display_obj.tft.fillRect(0,16,240,16, color);
|
||||
display_obj.tft.drawCentreString(text_table4[41],120,16,2);
|
||||
display_obj.touchToExit();
|
||||
#ifndef MARAUDER_MINI
|
||||
display_obj.tft.fillRect(0,16,240,16, color);
|
||||
display_obj.tft.drawCentreString(text_table4[41],120,16,2);
|
||||
display_obj.touchToExit();
|
||||
#endif
|
||||
display_obj.tft.setTextColor(TFT_CYAN, TFT_BLACK);
|
||||
display_obj.setupScrollArea(display_obj.TOP_FIXED_AREA_2, BOT_FIXED_AREA);
|
||||
#endif
|
||||
@@ -2211,6 +2314,14 @@ void WiFiScan::wifiSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type)
|
||||
wifi_pkt_rx_ctrl_t ctrl = (wifi_pkt_rx_ctrl_t)snifferPacket->rx_ctrl;
|
||||
int len = snifferPacket->rx_ctrl.sig_len;
|
||||
|
||||
String display_string = "";
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
int buff = display_obj.display_buffer->size();
|
||||
#else
|
||||
int buff = 0;
|
||||
#endif
|
||||
|
||||
if (type == WIFI_PKT_MGMT)
|
||||
{
|
||||
len -= 4;
|
||||
@@ -2219,18 +2330,44 @@ void WiFiScan::wifiSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type)
|
||||
const WifiMgmtHdr *hdr = &ipkt->hdr;
|
||||
|
||||
// If we dont the buffer size is not 0, don't write or else we get CORRUPT_HEAP
|
||||
if (snifferPacket->payload[0] == 0x80)
|
||||
{
|
||||
num_beacon++;
|
||||
}
|
||||
else if ((snifferPacket->payload[0] == 0xA0 || snifferPacket->payload[0] == 0xC0 ))
|
||||
{
|
||||
num_deauth++;
|
||||
}
|
||||
else if (snifferPacket->payload[0] == 0x40)
|
||||
{
|
||||
num_probe++;
|
||||
}
|
||||
#ifndef MARAUDER_MINI
|
||||
if (snifferPacket->payload[0] == 0x80)
|
||||
{
|
||||
num_beacon++;
|
||||
}
|
||||
else if ((snifferPacket->payload[0] == 0xA0 || snifferPacket->payload[0] == 0xC0 ))
|
||||
{
|
||||
num_deauth++;
|
||||
}
|
||||
else if (snifferPacket->payload[0] == 0x40)
|
||||
{
|
||||
num_probe++;
|
||||
}
|
||||
#endif
|
||||
|
||||
char addr[] = "00:00:00:00:00:00";
|
||||
getMAC(addr, snifferPacket->payload, 10);
|
||||
display_string.concat(addr);
|
||||
|
||||
int temp_len = display_string.length();
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
for (int i = 0; i < 40 - temp_len; i++)
|
||||
{
|
||||
display_string.concat(" ");
|
||||
}
|
||||
|
||||
//Serial.print(" ");
|
||||
|
||||
#ifdef MARAUDER_MINI
|
||||
if (display_obj.display_buffer->size() == 0)
|
||||
{
|
||||
display_obj.loading = true;
|
||||
display_obj.display_buffer->add(display_string);
|
||||
display_obj.loading = false;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
if (save_packet)
|
||||
sd_obj.addPacket(snifferPacket->payload, len);
|
||||
@@ -2247,6 +2384,8 @@ void WiFiScan::eapolSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type)
|
||||
wifi_pkt_rx_ctrl_t ctrl = (wifi_pkt_rx_ctrl_t)snifferPacket->rx_ctrl;
|
||||
int len = snifferPacket->rx_ctrl.sig_len;
|
||||
|
||||
String display_string = "";
|
||||
|
||||
if (type == WIFI_PKT_MGMT)
|
||||
{
|
||||
len -= 4;
|
||||
@@ -2255,6 +2394,12 @@ void WiFiScan::eapolSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type)
|
||||
const WifiMgmtHdr *hdr = &ipkt->hdr;
|
||||
}
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
int buff = display_obj.display_buffer->size();
|
||||
#else
|
||||
int buff = 0;
|
||||
#endif
|
||||
|
||||
// Found beacon frame. Decide whether to deauth
|
||||
if (send_deauth) {
|
||||
if (snifferPacket->payload[0] == 0x80) {
|
||||
@@ -2295,6 +2440,30 @@ void WiFiScan::eapolSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type)
|
||||
num_eapol++;
|
||||
Serial.println("Received EAPOL:");
|
||||
|
||||
char addr[] = "00:00:00:00:00:00";
|
||||
getMAC(addr, snifferPacket->payload, 10);
|
||||
display_string.concat(addr);
|
||||
|
||||
int temp_len = display_string.length();
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
for (int i = 0; i < 40 - temp_len; i++)
|
||||
{
|
||||
display_string.concat(" ");
|
||||
}
|
||||
|
||||
Serial.print(" ");
|
||||
|
||||
#ifdef MARAUDER_MINI
|
||||
if (display_obj.display_buffer->size() == 0)
|
||||
{
|
||||
display_obj.loading = true;
|
||||
display_obj.display_buffer->add(display_string);
|
||||
display_obj.loading = false;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
for (int i = 0; i < len; i++) {
|
||||
char hexCar[4];
|
||||
sprintf(hexCar, "%02X", snifferPacket->payload[i]);
|
||||
@@ -2796,6 +2965,12 @@ void WiFiScan::activeEapolSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t
|
||||
// showMetadata(snifferPacket, type);
|
||||
//}
|
||||
|
||||
void WiFiScan::changeChannel(int chan) {
|
||||
this->set_channel = chan;
|
||||
esp_wifi_set_channel(this->set_channel, WIFI_SECOND_CHAN_NONE);
|
||||
delay(1);
|
||||
}
|
||||
|
||||
void WiFiScan::changeChannel()
|
||||
{
|
||||
esp_wifi_set_channel(this->set_channel, WIFI_SECOND_CHAN_NONE);
|
||||
@@ -2842,13 +3017,17 @@ void WiFiScan::main(uint32_t currentTime)
|
||||
else if (currentScanMode == WIFI_PACKET_MONITOR)
|
||||
{
|
||||
#ifdef HAS_SCREEN
|
||||
packetMonitorMain(currentTime);
|
||||
#ifndef MARAUDER_MINI
|
||||
packetMonitorMain(currentTime);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
else if (currentScanMode == WIFI_SCAN_EAPOL)
|
||||
{
|
||||
#ifdef HAS_SCREEN
|
||||
eapolMonitorMain(currentTime);
|
||||
#ifndef MARAUDER_MINI
|
||||
eapolMonitorMain(currentTime);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
else if (currentScanMode == WIFI_SCAN_ACTIVE_EAPOL)
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
#include "TemperatureInterface.h"
|
||||
#include "settings.h"
|
||||
#include "Assets.h"
|
||||
#include "flipperLED.h"
|
||||
//#include "MenuFunctions.h"
|
||||
|
||||
#define bad_list_length 3
|
||||
@@ -74,6 +75,7 @@ extern Buffer buffer_obj;
|
||||
extern BatteryInterface battery_obj;
|
||||
extern TemperatureInterface temp_obj;
|
||||
extern Settings settings_obj;
|
||||
extern flipperLED flipper_led;
|
||||
|
||||
esp_err_t esp_wifi_80211_tx(wifi_interface_t ifx, const void *buffer, int len, bool en_sys_seq);
|
||||
//int ieee80211_raw_frame_sanity_check(int32_t arg, int32_t arg2, int32_t arg3);
|
||||
@@ -295,6 +297,7 @@ class WiFiScan
|
||||
String getApMAC();
|
||||
String freeRAM();
|
||||
void changeChannel();
|
||||
void changeChannel(int chan);
|
||||
void RunInfo();
|
||||
void RunShutdownWiFi();
|
||||
void RunShutdownBLE();
|
||||
|
||||
@@ -4,14 +4,14 @@
|
||||
|
||||
#define POLISH_POTATO
|
||||
|
||||
#define MARAUDER_MINI
|
||||
//#define MARAUDER_MINI
|
||||
//#define MARAUDER_V4
|
||||
//#define MARAUDER_V6
|
||||
//#define MARAUDER_KIT
|
||||
//#define GENERIC_ESP32
|
||||
//#define MARAUDER_FLIPPER
|
||||
#define MARAUDER_FLIPPER
|
||||
|
||||
#define MARAUDER_VERSION "v0.9.10"
|
||||
#define MARAUDER_VERSION "v0.9.12"
|
||||
|
||||
//// BUTTON DEFINITIONS
|
||||
#ifdef MARAUDER_MINI
|
||||
@@ -201,6 +201,10 @@
|
||||
#define TOUCH_CS 21
|
||||
#define SD_CS 4
|
||||
|
||||
#define SCREEN_BUFFER
|
||||
|
||||
#define MAX_SCREEN_BUFFER 9
|
||||
|
||||
#define BANNER_TEXT_SIZE 1
|
||||
|
||||
#ifndef TFT_WIDTH
|
||||
@@ -210,7 +214,8 @@
|
||||
#ifndef TFT_HEIGHT
|
||||
#define TFT_HEIGHT 128
|
||||
#endif
|
||||
|
||||
|
||||
#define CHAR_WIDTH 6
|
||||
#define SCREEN_WIDTH TFT_WIDTH // Originally 240
|
||||
#define SCREEN_HEIGHT TFT_HEIGHT // Originally 320
|
||||
#define HEIGHT_1 TFT_WIDTH
|
||||
@@ -346,7 +351,7 @@
|
||||
#endif
|
||||
|
||||
#ifdef MARAUDER_FLIPPER
|
||||
#define SD_CS -1
|
||||
#define SD_CS 10
|
||||
#endif
|
||||
//// END SD DEFINITIONS
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ https://www.online-utility.org/image/convert/to/XBM
|
||||
#include "settings.h"
|
||||
#include "CommandLine.h"
|
||||
#include "lang_var.h"
|
||||
#include "flipperLED.h"
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
#include "Display.h"
|
||||
@@ -60,6 +61,7 @@ LedInterface led_obj;
|
||||
EspInterface esp_obj;
|
||||
Settings settings_obj;
|
||||
CommandLine cli_obj;
|
||||
flipperLED flipper_led;
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
Display display_obj;
|
||||
@@ -134,6 +136,10 @@ void setup()
|
||||
// Serial.println("Does not have screen");
|
||||
//#endif
|
||||
|
||||
#ifdef MARAUDER_FLIPPER
|
||||
flipper_led.RunSetup();
|
||||
#endif
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.RunSetup();
|
||||
display_obj.tft.setTextColor(TFT_WHITE, TFT_BLACK);
|
||||
@@ -271,6 +277,11 @@ void setup()
|
||||
void loop()
|
||||
{
|
||||
currentTime = millis();
|
||||
bool mini = false;
|
||||
|
||||
#ifdef MARAUDER_MINI
|
||||
mini = true;
|
||||
#endif
|
||||
|
||||
// Update all of our objects
|
||||
#ifdef HAS_SCREEN
|
||||
@@ -292,8 +303,8 @@ void loop()
|
||||
temp_obj.main(currentTime);
|
||||
#endif
|
||||
settings_obj.main(currentTime);
|
||||
if ((wifi_scan_obj.currentScanMode != WIFI_PACKET_MONITOR) &&
|
||||
(wifi_scan_obj.currentScanMode != WIFI_SCAN_EAPOL)) {
|
||||
if (((wifi_scan_obj.currentScanMode != WIFI_PACKET_MONITOR) && (wifi_scan_obj.currentScanMode != WIFI_SCAN_EAPOL)) ||
|
||||
(mini)) {
|
||||
#ifdef HAS_SCREEN
|
||||
menu_function_obj.main(currentTime);
|
||||
#endif
|
||||
|
||||
BIN
esp32_marauder/esp32_marauder_v0_9_12_20220801_flipper.bin
Normal file
BIN
esp32_marauder/esp32_marauder_v0_9_12_20220801_flipper.bin
Normal file
Binary file not shown.
BIN
esp32_marauder/esp32_marauder_v0_9_12_20220801_kit.bin
Normal file
BIN
esp32_marauder/esp32_marauder_v0_9_12_20220801_kit.bin
Normal file
Binary file not shown.
BIN
esp32_marauder/esp32_marauder_v0_9_12_20220801_mini.bin
Normal file
BIN
esp32_marauder/esp32_marauder_v0_9_12_20220801_mini.bin
Normal file
Binary file not shown.
BIN
esp32_marauder/esp32_marauder_v0_9_12_20220801_new_hardware.bin
Normal file
BIN
esp32_marauder/esp32_marauder_v0_9_12_20220801_new_hardware.bin
Normal file
Binary file not shown.
BIN
esp32_marauder/esp32_marauder_v0_9_12_20220801_old_hardware.bin
Normal file
BIN
esp32_marauder/esp32_marauder_v0_9_12_20220801_old_hardware.bin
Normal file
Binary file not shown.
41
esp32_marauder/flipperLED.cpp
Normal file
41
esp32_marauder/flipperLED.cpp
Normal file
@@ -0,0 +1,41 @@
|
||||
#include "flipperLED.h"
|
||||
|
||||
void flipperLED::RunSetup() {
|
||||
pinMode(B_PIN, OUTPUT);
|
||||
pinMode(G_PIN, OUTPUT);
|
||||
pinMode(R_PIN, OUTPUT);
|
||||
|
||||
delay(50);
|
||||
|
||||
digitalWrite(B_PIN, LOW);
|
||||
delay(500);
|
||||
digitalWrite(B_PIN, HIGH);
|
||||
digitalWrite(G_PIN, LOW);
|
||||
delay(500);
|
||||
digitalWrite(G_PIN, HIGH);
|
||||
digitalWrite(R_PIN, LOW);
|
||||
delay(500);
|
||||
digitalWrite(R_PIN, HIGH);
|
||||
}
|
||||
|
||||
void flipperLED::attackLED() {
|
||||
digitalWrite(B_PIN, HIGH);
|
||||
digitalWrite(G_PIN, HIGH);
|
||||
digitalWrite(R_PIN, HIGH);
|
||||
delay(10);
|
||||
digitalWrite(R_PIN, LOW);
|
||||
}
|
||||
|
||||
void flipperLED::sniffLED() {
|
||||
digitalWrite(B_PIN, HIGH);
|
||||
digitalWrite(G_PIN, HIGH);
|
||||
digitalWrite(R_PIN, HIGH);
|
||||
delay(10);
|
||||
digitalWrite(B_PIN, LOW);
|
||||
}
|
||||
|
||||
void flipperLED::offLED() {
|
||||
digitalWrite(B_PIN, HIGH);
|
||||
digitalWrite(G_PIN, HIGH);
|
||||
digitalWrite(R_PIN, HIGH);
|
||||
}
|
||||
19
esp32_marauder/flipperLED.h
Normal file
19
esp32_marauder/flipperLED.h
Normal file
@@ -0,0 +1,19 @@
|
||||
#ifndef flipperLED_h
|
||||
#define flipperLED_h
|
||||
|
||||
#include <Arduino.h>
|
||||
|
||||
#define B_PIN 4
|
||||
#define G_PIN 5
|
||||
#define R_PIN 6
|
||||
|
||||
class flipperLED {
|
||||
|
||||
public:
|
||||
void RunSetup();
|
||||
void attackLED();
|
||||
void sniffLED();
|
||||
void offLED();
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -144,21 +144,21 @@ PROGMEM const char text4_16[] = "Shutting down WiFi...";
|
||||
PROGMEM const char text4_17[] = "WiFi not currently initialized";
|
||||
PROGMEM const char text4_18[] = "Shutting down BLE...";
|
||||
PROGMEM const char text4_19[] = "BLE not currently initialized";
|
||||
PROGMEM const char text4_20[] = " Firmware: Marauder"; //From 20 to 35 add spaces so : is in line like it is now
|
||||
PROGMEM const char text4_21[] = " Version: ";
|
||||
PROGMEM const char text4_22[] = " ESP-IDF: ";
|
||||
PROGMEM const char text4_23[] = " WSL Bypass: enabled\n";
|
||||
PROGMEM const char text4_24[] = " WSL Bypass: disabled\n";
|
||||
PROGMEM const char text4_25[] = " Station MAC: ";
|
||||
PROGMEM const char text4_26[] = " AP MAC: ";
|
||||
PROGMEM const char text4_27[] = " ";
|
||||
PROGMEM const char text4_28[] = " SD Card: Connected";
|
||||
PROGMEM const char text4_29[] = " SD Card Size: ";
|
||||
PROGMEM const char text4_30[] = " SD Card: Not Connected";
|
||||
PROGMEM const char text4_31[] = " SD Card Size: 0";
|
||||
PROGMEM const char text4_32[] = " IP5306 I2C: supported";
|
||||
PROGMEM const char text4_33[] = " Battery Lvl: ";
|
||||
PROGMEM const char text4_34[] = " IP5306 I2C: not supported";
|
||||
PROGMEM const char text4_20[] = "Firmware: Marauder"; //From 20 to 35 add spaces so : is in line like it is now
|
||||
PROGMEM const char text4_21[] = "Version: ";
|
||||
PROGMEM const char text4_22[] = "ESP-IDF: ";
|
||||
PROGMEM const char text4_23[] = "WSL Bypass: enabled";
|
||||
PROGMEM const char text4_24[] = "WSL Bypass: disabled";
|
||||
PROGMEM const char text4_25[] = "Station MAC: ";
|
||||
PROGMEM const char text4_26[] = "AP MAC: ";
|
||||
PROGMEM const char text4_27[] = "";
|
||||
PROGMEM const char text4_28[] = "SD Card: Connected";
|
||||
PROGMEM const char text4_29[] = "SD Card Size: ";
|
||||
PROGMEM const char text4_30[] = "SD Card: Not Connected";
|
||||
PROGMEM const char text4_31[] = "SD Card Size: 0";
|
||||
PROGMEM const char text4_32[] = "IP5306 I2C: supported";
|
||||
PROGMEM const char text4_33[] = "Battery Lvl: ";
|
||||
PROGMEM const char text4_34[] = "IP5306 I2C: not supported";
|
||||
PROGMEM const char text4_35[] = "Internal temp: ";
|
||||
PROGMEM const char text4_36[] = " Detect Espressif ";
|
||||
PROGMEM const char text4_37[] = " Detect Pwnagotchi ";
|
||||
|
||||
@@ -20,7 +20,6 @@ class Settings {
|
||||
private:
|
||||
String json_settings_string;
|
||||
|
||||
void printJsonSettings(String json_string);
|
||||
bool createDefaultSettings(fs::FS &fs);
|
||||
|
||||
public:
|
||||
@@ -50,6 +49,7 @@ class Settings {
|
||||
//uint8_t loadSetting<uint8_t>(String key);
|
||||
|
||||
String getSettingsString();
|
||||
void printJsonSettings(String json_string);
|
||||
void main(uint32_t currentTime);
|
||||
};
|
||||
|
||||
|
||||
BIN
pictures/IMG_5876 - Copy.jpg
Normal file
BIN
pictures/IMG_5876 - Copy.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 108 KiB |
BIN
pictures/IMG_5877 - Copy.jpg
Normal file
BIN
pictures/IMG_5877 - Copy.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 115 KiB |
BIN
pictures/IMG_5878 - Copy.jpg
Normal file
BIN
pictures/IMG_5878 - Copy.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 114 KiB |
BIN
pictures/IMG_5879 - Copy.jpg
Normal file
BIN
pictures/IMG_5879 - Copy.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 147 KiB |
Reference in New Issue
Block a user