Just Call Me Koko 5 лет назад
Родитель
Сommit
1e1f6f6b19

+ 2 - 1
README.md

@@ -3,7 +3,7 @@
 <!---[![Build Status](https://travis-ci.com/justcallmekoko/ESP32Marauder.svg?branch=master)](https://travis-ci.com/justcallmekoko/ESP32Marauder)--->
 <!---[![Build Status](https://travis-ci.com/justcallmekoko/ESP32Marauder.svg?branch=master)](https://travis-ci.com/justcallmekoko/ESP32Marauder)--->
 <!---Shields/Badges https://shields.io/--->
 <!---Shields/Badges https://shields.io/--->
 
 
-# ESP32 Marauder v0.6.2
+# ESP32 Marauder v0.6.3
 <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"><img alt="Marauder logo" src="https://github.com/justcallmekoko/ESP32Marauder/blob/master/pictures/marauder3L.jpg?raw=true" width="300"></p>
 <p align="center">
 <p align="center">
   <b>A suite of WiFi/Bluetooth offensive and defensive tools for the ESP32</b>
   <b>A suite of WiFi/Bluetooth offensive and defensive tools for the ESP32</b>
@@ -135,6 +135,7 @@ If you own an ESP32 Marauder (v0.4.0 or later) and have not build the project, y
     - Marauder will automatically reboot once the update has been applied
     - Marauder will automatically reboot once the update has been applied
     
     
 ### SD Update
 ### SD Update
+*Using a Samsung MicroSD card will cause Marauder not to boot*
 1. Download the [latest release](https://github.com/justcallmekoko/ESP32Marauder/releases/latest) of the Marauder firmware
 1. Download the [latest release](https://github.com/justcallmekoko/ESP32Marauder/releases/latest) of the Marauder firmware
 2. Copy the bin file you downloaded to the root of an SD card
 2. Copy the bin file you downloaded to the root of an SD card
 3. Rename the bin file on the SD card to `update.bin`
 3. Rename the bin file on the SD card to `update.bin`

+ 43 - 0
esp32_marauder/BatteryInterface.cpp

@@ -0,0 +1,43 @@
+#include "BatteryInterface.h"
+
+BatteryInterface::BatteryInterface() {
+  
+}
+
+void BatteryInterface::main(uint32_t currentTime) {
+  if (currentTime != 0) {
+    if (currentTime - initTime >= 3000) {
+      //Serial.println("Checking Battery Level");
+      this->initTime = millis();
+      int8_t new_level = this->getBatteryLevel();
+      //this->battery_level = this->getBatteryLevel();
+      if (this->battery_level != new_level) {
+        Serial.println("Battery Level changed: " + (String)new_level);
+        this->battery_level = new_level;
+      }
+    }
+  }
+}
+
+void BatteryInterface::RunSetup() {
+  Wire.begin(I2C_SDA, I2C_SCL);
+  this->initTime = millis();
+}
+
+int8_t BatteryInterface::getBatteryLevel() {
+  Wire.beginTransmission(IP5306_ADDR);
+  Wire.write(0x78);
+  if (Wire.endTransmission(false) == 0 &&
+      Wire.requestFrom(0x75, 1)) {
+    this->i2c_supported = true;
+    switch (Wire.read() & 0xF0) {
+      case 0xE0: return 25;
+      case 0xC0: return 50;
+      case 0x80: return 75;
+      case 0x00: return 100;
+      default: return 0;
+    }
+  }
+  this->i2c_supported = false;
+  return -1;
+}

+ 27 - 0
esp32_marauder/BatteryInterface.h

@@ -0,0 +1,27 @@
+#ifndef BatteryInterface_h
+#define BatteryInterface_h
+
+#include <Arduino.h>
+
+#include <Wire.h>
+
+#define I2C_SDA 33
+#define I2C_SCL 22
+#define IP5306_ADDR 0x75
+
+class BatteryInterface {
+  private:
+    uint32_t initTime = 0;
+
+  public:
+    int8_t battery_level = 0;
+    bool i2c_supported = false;
+
+    BatteryInterface();
+
+    void RunSetup();
+    void main(uint32_t currentTime);
+    int8_t getBatteryLevel();
+};
+
+#endif

+ 4 - 0
esp32_marauder/Display.cpp

@@ -40,6 +40,10 @@ void Display::RunSetup()
   //tft.fillScreen(TFT_BLACK);
   //tft.fillScreen(TFT_BLACK);
   clearScreen();
   clearScreen();
 
 
+  Serial.println("SPI_FREQUENCY: " + (String)SPI_FREQUENCY);
+  Serial.println("SPI_READ_FREQUENCY: " + (String)SPI_READ_FREQUENCY);
+  Serial.println("SPI_TOUCH_FREQUENCY: " + (String)SPI_TOUCH_FREQUENCY);
+
   
   
   // Initialize file system
   // Initialize file system
   // This should probably have its own class
   // This should probably have its own class

+ 1 - 1
esp32_marauder/Display.h

@@ -56,7 +56,7 @@ class Display
     TFT_eSPI tft = TFT_eSPI();
     TFT_eSPI tft = TFT_eSPI();
     TFT_eSprite img = TFT_eSprite(&tft);
     TFT_eSprite img = TFT_eSprite(&tft);
     TFT_eSPI_Button key[BUTTON_ARRAY_LEN];
     TFT_eSPI_Button key[BUTTON_ARRAY_LEN];
-    String version_number = "v0.6.2";
+    String version_number = "v0.6.3";
 
 
     bool printing = false;
     bool printing = false;
     bool loading = false;
     bool loading = false;

+ 33 - 0
esp32_marauder/TemperatureInterface.cpp

@@ -0,0 +1,33 @@
+#include "TemperatureInterface.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+uint8_t temprature_sens_read();
+#ifdef __cplusplus
+}
+#endif
+uint8_t temprature_sens_read();
+
+TemperatureInterface::TemperatureInterface() {
+  
+}
+
+void TemperatureInterface::RunSetup() {
+  this->initTime = millis();
+  this->current_temp = this->getCurrentTemp();
+}
+
+uint8_t TemperatureInterface::getCurrentTemp() {
+  return ((temprature_sens_read() - 32) / 1.8);
+}
+
+void TemperatureInterface::main(uint32_t currentTime) {
+  if (currentTime != 0) {
+    if (currentTime - initTime >= 3000) {
+      //Serial.println("Checking Battery Level");
+      this->initTime = millis();
+      this->current_temp = this->getCurrentTemp();
+    }
+  }
+}

+ 21 - 0
esp32_marauder/TemperatureInterface.h

@@ -0,0 +1,21 @@
+#ifndef TemperatureInterface_h
+#define TemperatureInterface_h
+
+#include <Arduino.h>
+
+class TemperatureInterface {
+
+  private:
+    uint32_t initTime = 0;
+    
+  public:
+    TemperatureInterface();
+
+    uint8_t current_temp = 0;
+
+    uint8_t getCurrentTemp();
+    void RunSetup();
+    void main(uint32_t currentTime);
+};
+
+#endif

+ 17 - 7
esp32_marauder/WiFiScan.cpp

@@ -272,20 +272,30 @@ void WiFiScan::RunInfo()
 
 
   //display_obj.tft.println(" Station MAC: " + sta_mac);
   //display_obj.tft.println(" Station MAC: " + sta_mac);
   //display_obj.tft.println("      AP MAC: " + ap_mac);
   //display_obj.tft.println("      AP MAC: " + ap_mac);
-  display_obj.tft.println("    Firmware: Marauder");
-  display_obj.tft.println("     Version: " + display_obj.version_number + "\n");
-  display_obj.tft.println("    " + free_ram);
+  display_obj.tft.println("     Firmware: Marauder");
+  display_obj.tft.println("      Version: " + display_obj.version_number + "\n");
+  display_obj.tft.println("     " + free_ram);
 
 
   if (sd_obj.supported) {
   if (sd_obj.supported) {
-    display_obj.tft.println("     SD Card: Connected");
-    display_obj.tft.print("SD Card Size: ");
+    display_obj.tft.println("      SD Card: Connected");
+    display_obj.tft.print(" SD Card Size: ");
     display_obj.tft.print(sd_obj.card_sz);
     display_obj.tft.print(sd_obj.card_sz);
     display_obj.tft.println("MB");
     display_obj.tft.println("MB");
   }
   }
   else {
   else {
-    display_obj.tft.println("     SD Card: Not Connected");
-    display_obj.tft.println("SD Card Size: 0");
+    display_obj.tft.println("      SD Card: Not Connected");
+    display_obj.tft.println(" SD Card Size: 0");
   }  
   }  
+
+  battery_obj.battery_level = battery_obj.getBatteryLevel();
+  if (battery_obj.i2c_supported) {
+    display_obj.tft.println("   IP5306 I2C: supported");
+    display_obj.tft.println("  Battery Lvl: " + (String)battery_obj.battery_level + "%");
+  }
+  else
+    display_obj.tft.println("   IP5306 I2C: not supported");
+
+  display_obj.tft.println("Internal temp: " + (String)temp_obj.current_temp + " C");
 }
 }
 
 
 void WiFiScan::RunPacketMonitor(uint8_t scan_mode, uint16_t color)
 void WiFiScan::RunPacketMonitor(uint8_t scan_mode, uint16_t color)

+ 4 - 0
esp32_marauder/WiFiScan.h

@@ -14,6 +14,8 @@
 #include "Display.h"
 #include "Display.h"
 #include "SDInterface.h"
 #include "SDInterface.h"
 #include "Buffer.h"
 #include "Buffer.h"
+#include "BatteryInterface.h"
+#include "TemperatureInterface.h"
 //#include "MenuFunctions.h"
 //#include "MenuFunctions.h"
 
 
 #define bad_list_length 3
 #define bad_list_length 3
@@ -39,6 +41,8 @@
 extern Display display_obj;
 extern Display display_obj;
 extern SDInterface sd_obj;
 extern SDInterface sd_obj;
 extern Buffer buffer_obj;
 extern Buffer buffer_obj;
+extern BatteryInterface battery_obj;
+extern TemperatureInterface temp_obj;
 
 
 esp_err_t esp_wifi_80211_tx(wifi_interface_t ifx, const void *buffer, int len, bool en_sys_seq);
 esp_err_t esp_wifi_80211_tx(wifi_interface_t ifx, const void *buffer, int len, bool en_sys_seq);
 
 

+ 33 - 1
esp32_marauder/esp32_marauder.ino

@@ -23,14 +23,29 @@ https://www.online-utility.org/image/convert/to/XBM
 #include "SDInterface.h"
 #include "SDInterface.h"
 #include "Web.h"
 #include "Web.h"
 #include "Buffer.h"
 #include "Buffer.h"
+#include "BatteryInterface.h"
+#include "TemperatureInterface.h"
 //#include "icons.h"
 //#include "icons.h"
 
 
+/*
+#ifdef __cplusplus
+extern "C" {
+#endif
+uint8_t temprature_sens_read();
+#ifdef __cplusplus
+}
+#endif
+uint8_t temprature_sens_read();
+*/
+
 Display display_obj;
 Display display_obj;
 WiFiScan wifi_scan_obj;
 WiFiScan wifi_scan_obj;
 MenuFunctions menu_function_obj;
 MenuFunctions menu_function_obj;
 SDInterface sd_obj;
 SDInterface sd_obj;
 Web web_obj;
 Web web_obj;
 Buffer buffer_obj;
 Buffer buffer_obj;
+BatteryInterface battery_obj;
+TemperatureInterface temp_obj;
 
 
 uint32_t currentTime  = 0;
 uint32_t currentTime  = 0;
 
 
@@ -54,6 +69,8 @@ void setup()
   Serial.println("       By: justcallmekoko\n");
   Serial.println("       By: justcallmekoko\n");
   Serial.println("--------------------------------\n\n");
   Serial.println("--------------------------------\n\n");
 
 
+  //Serial.println("Internal Temp: " + (String)((temprature_sens_read() - 32) / 1.8));
+
   // Do some SD stuff
   // Do some SD stuff
   if(sd_obj.initSD())
   if(sd_obj.initSD())
     Serial.println("SD Card supported");
     Serial.println("SD Card supported");
@@ -65,12 +82,25 @@ void setup()
 
 
   // Build menus
   // Build menus
   menu_function_obj.RunSetup();
   menu_function_obj.RunSetup();
+
+  // Battery stuff
+  battery_obj.RunSetup();
+
+  // Temperature stuff
+  temp_obj.RunSetup();
+
+  battery_obj.battery_level = battery_obj.getBatteryLevel();
+
+  if (battery_obj.i2c_supported) {
+    Serial.println("IP5306 I2C Supported: true");
+  }
+  else
+    Serial.println("IP5306 I2C Supported: false");
 }
 }
 
 
 
 
 void loop()
 void loop()
 {
 {
-  
   // get the current time
   // get the current time
   //if ((wifi_scan_obj.currentScanMode != WIFI_ATTACK_BEACON_SPAM))
   //if ((wifi_scan_obj.currentScanMode != WIFI_ATTACK_BEACON_SPAM))
   currentTime = millis();
   currentTime = millis();
@@ -83,6 +113,8 @@ void loop()
     display_obj.main(); 
     display_obj.main(); 
     wifi_scan_obj.main(currentTime);
     wifi_scan_obj.main(currentTime);
     sd_obj.main();
     sd_obj.main();
+    battery_obj.main(currentTime);
+    temp_obj.main(currentTime);
     //if ((wifi_scan_obj.currentScanMode != WIFI_ATTACK_BEACON_SPAM))
     //if ((wifi_scan_obj.currentScanMode != WIFI_ATTACK_BEACON_SPAM))
     if ((wifi_scan_obj.currentScanMode != WIFI_PACKET_MONITOR) &&
     if ((wifi_scan_obj.currentScanMode != WIFI_PACKET_MONITOR) &&
         (wifi_scan_obj.currentScanMode != WIFI_SCAN_EAPOL))
         (wifi_scan_obj.currentScanMode != WIFI_SCAN_EAPOL))