Compare commits

...

45 Commits

Author SHA1 Message Date
Just Call Me Koko
7557f19508 Merge pull request #367 from justcallmekoko/develop
Develop
2023-10-26 12:34:55 -04:00
Just Call Me Koko
23fa6f78d6 Fix build steps 2023-10-26 12:10:20 -04:00
Just Call Me Koko
ea097190ac Fix M5Stick-C Plus display 2023-10-26 12:03:09 -04:00
Just Call Me Koko
a506907625 Remove version number finally 2023-10-26 11:40:49 -04:00
Just Call Me Koko
32b49793ca Merge pull request #366 from justcallmekoko/master
Merge pull request #365 from justcallmekoko/develop
2023-10-26 10:34:14 -04:00
Just Call Me Koko
86a4326d64 Merge pull request #365 from justcallmekoko/develop
Develop
2023-10-26 10:33:52 -04:00
Just Call Me Koko
5dd56125a0 Kit doesn't have buttons 2023-10-26 09:46:14 -04:00
Just Call Me Koko
cbb110a944 Add pwn scan and fix page down refresh
Mini gets pwn scan again
2023-10-25 23:18:12 -04:00
Just Call Me Koko
2fd76556fb Fix wrong menu index name on back loop 2023-10-25 22:53:37 -04:00
Just Call Me Koko
41a2317778 Loop menu front to end 2023-10-25 22:46:49 -04:00
Just Call Me Koko
a6335fed22 Paginated Mini menu and fix status bar 2023-10-25 22:25:02 -04:00
Just Call Me Koko
38e53db892 Add BT for LDDB 2023-10-25 13:27:52 -04:00
Just Call Me Koko
598eda99e3 Add headless mode 2023-10-24 18:52:00 -04:00
Just Call Me Koko
516b8b0c3f Fix unicast MAC addr 2023-10-19 14:34:47 -04:00
Just Call Me Koko
bea6978098 Fix error output 2023-10-18 07:53:19 -04:00
Just Call Me Koko
ab62f0fc60 Merge pull request #358 from justcallmekoko/master
Merge pull request #357 from justcallmekoko/develop
2023-10-17 17:14:25 -04:00
Just Call Me Koko
6612c48d1d Merge pull request #357 from justcallmekoko/develop
Develop
2023-10-17 17:14:05 -04:00
Just Call Me Koko
86c0857239 Increment version number 2023-10-17 16:18:33 -04:00
Just Call Me Koko
66d0ae467d Add Swiftpair spam 2023-10-17 16:18:03 -04:00
Just Call Me Koko
a75b3d9b2c Merge pull request #356 from justcallmekoko/master
Merge pull request #355 from justcallmekoko/develop
2023-10-14 17:30:43 -04:00
Just Call Me Koko
d5a0af74d0 Merge pull request #355 from justcallmekoko/develop
Develop
2023-10-14 17:30:23 -04:00
Just Call Me Koko
b594d8bbdd Update version number 2023-10-14 16:57:34 -04:00
Just Call Me Koko
370b2aa6c5 Add EspSoftwareSerial library to build 2023-10-14 16:14:56 -04:00
Just Call Me Koko
5f01e3030b Fix corrupt PCAP with SD serial 2023-10-14 16:06:05 -04:00
Just Call Me Koko
33b5a6481c Merge pull request #353 from justcallmekoko/master
Merge pull request #352 from justcallmekoko/develop
2023-10-13 10:51:22 -04:00
Just Call Me Koko
06e6cdb8cd Merge pull request #352 from justcallmekoko/develop
Merge Develop into Master
2023-10-13 10:23:48 -04:00
Just Call Me Koko
5f53e32f8e Fix macros branching 2023-10-12 16:50:04 -04:00
Just Call Me Koko
1d6ff6f911 Add sour apple to Marauder 2023-10-12 16:43:26 -04:00
Just Call Me Koko
ad6addf3df Merge pull request #350 from n0xa/M5Stick-Ext-SDCard
Get external SPI SD reader working on M5StickC-Plus
2023-10-12 13:43:53 -04:00
Just Call Me Koko
c788ad6681 Add workflow for v6.1 2023-10-12 08:53:29 -04:00
Just Call Me Koko
06ede5272d Add configs for Marauder hardware V6.1 2023-10-12 08:43:00 -04:00
Noah Axon
b8620e1bd3 Get external SPI SD reader working on M5StickC-Plus 2023-10-10 22:32:11 -05:00
Just Call Me Koko
18ca6160e5 Add wardriving commands 2023-10-05 11:39:28 -04:00
Just Call Me Koko
bbe9eead7e Add BT and Station wardriving 2023-10-04 15:31:10 -04:00
Just Call Me Koko
971487eefb Add GPS to Marauder Mini 2023-09-11 09:51:57 -04:00
Just Call Me Koko
9158083889 Merge pull request #327 from justcallmekoko/master
Merge pull request #326 from justcallmekoko/develop
2023-09-10 15:07:07 -04:00
Just Call Me Koko
f0bf1f4b7f Merge pull request #326 from justcallmekoko/develop
Develop
2023-09-10 15:06:14 -04:00
Just Call Me Koko
388ef30acd Merge pull request #325 from justcallmekoko/wardriver
Wardriver
2023-09-10 12:06:16 -04:00
Just Call Me Koko
7eb7ae4a0d Add gps command 2023-09-08 14:42:19 -04:00
Just Call Me Koko
10fce15bb9 Add wardrive command 2023-09-08 14:19:02 -04:00
Just Call Me Koko
32c118b0d5 Fix wardrive memory leak 2023-09-08 14:08:17 -04:00
Just Call Me Koko
c370dfa996 Fix for non display GPS 2023-09-07 21:01:35 -04:00
Just Call Me Koko
7669a7447f Add wardrive function 2023-09-07 20:26:33 -04:00
Just Call Me Koko
7049e1101f LinkedList v1.3.3 and hist limit 2023-09-07 10:16:56 -04:00
Just Call Me Koko
c0864af4db Set hist lim based on hardware 2023-09-07 09:50:08 -04:00
28 changed files with 283691 additions and 216 deletions

View File

@@ -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"
@@ -173,6 +180,19 @@ jobs:
cat "$i" | grep compiler.c.elf.libs.esp32s2
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_M5STICKC/ \/\/#define MARAUDER_M5STICKC/' esp32_marauder/configs.h
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
@@ -226,6 +246,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 +271,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 +306,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 +336,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 +361,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 +384,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 +407,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 +434,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 +492,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 +606,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

View File

@@ -3,6 +3,7 @@
- Header Pin x8: [C2883805](https://www.lcsc.com/product-detail/Pin-Headers_XKB-Connectivity-X6511WVS-08H-C60D48R1_C2883805.html)
- Header Pin x10: [C2883807](https://www.lcsc.com/product-detail/Pin-Headers_XKB-Connectivity-X6511WVS-10H-C60D48R1_C2883807.html)
- Alternative Header: [M20-8771246](https://www.mouser.com/ProductDetail/Harwin/M20-8771246?qs=WS5Jv%252B%252Bx1qWzrNY%252Bb2U9JQ%3D%3D&countryCode=US&currencyCode=USD)
- or [M20-8771042](https://www.mouser.com/ProductDetail/Harwin/M20-8771042?qs=%252Bk6%2F5FB6qrlBSpg9%252Bi11Bg%3D%3D)
- Light Pipe: [PLP2-188](https://www.digikey.com/en/products/detail/bivar-inc/PLP2-188/5721973?utm_medium=email&utm_source=oce&utm_campaign=4251_OCE23RT&utm_content=productdetail_US&utm_cid=2955578&so=79456987&mkt_tok=MDI4LVNYSy01MDcAAAGJOBaFWa7m6RHsJZT6mWcYRd9LRyXmqis92EV7j5ftyM5NuNOSOPqUp292m0P5E3FKrEWCFuvb9fObSzuSvVMsopuOMPjO46ylCAR1IzCL)
- M2x6mm Round Top Screw: [97763A407](https://www.mcmaster.com/97763A407/)
- M2x8mm Countersunk Screw: [91294A005](https://www.mcmaster.com/91294A005/)

View File

@@ -3,7 +3,7 @@
<!---[![Build Status](https://travis-ci.com/justcallmekoko/ESP32Marauder.svg?branch=master)](https://travis-ci.com/justcallmekoko/ESP32Marauder)--->
<!---Shields/Badges https://shields.io/--->
# ESP32 Marauder v0.11.1
# ESP32 Marauder
<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>

View File

@@ -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,15 @@ 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);
Serial.println(HELP_BT_SWIFTPAIR_SPAM_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 +294,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,9 +452,38 @@ 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");
int html_sw = this->argSearch(&cmd_args, "-w");
if (cmd_sw != -1) {
String et_command = cmd_args.get(cmd_sw + 1);
@@ -427,6 +493,14 @@ void CommandLine::runCommand(String input) {
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
#endif
if (html_sw != -1) {
String target_html_name = cmd_args.get(html_sw + 1);
evil_portal_obj.target_html_name = target_html_name;
Serial.println("Set html file as " + evil_portal_obj.target_html_name);
}
//else {
// evil_portal_obj.target_html_name = "index.html";
//}
wifi_scan_obj.StartScan(WIFI_SCAN_EVIL_PORTAL, TFT_MAGENTA);
}
else if (et_command == "reset") {
@@ -436,7 +510,9 @@ void CommandLine::runCommand(String input) {
}
else if (et_command == "sethtml") {
String target_html_name = cmd_args.get(cmd_sw + 2);
evil_portal_obj.target_html_name = target_html_name;
Serial.println("Set html file as " + evil_portal_obj.target_html_name);
}
else if (et_command == "setap") {
@@ -708,6 +784,63 @@ 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
}
else if (cmd_args.get(0) == BT_SWIFTPAIR_SPAM_CMD) {
#ifdef HAS_BT
Serial.println("Starting Swiftpair Spam attack. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
#endif
wifi_scan_obj.StartScan(BT_ATTACK_SWIFTPAIR_SPAM, TFT_CYAN);
#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

View File

@@ -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,9 @@ 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_SWIFTPAIR_SPAM_CMD[] = "swiftpair";
const char PROGMEM BT_WARDRIVE_CMD[] = "btwardrive";
const char PROGMEM BT_SKIM_CMD[] = "sniffskim";
@@ -89,9 +94,10 @@ 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]";
const char PROGMEM HELP_EVIL_PORTAL_CMD[] = "evilportal [-c start [-w html.html]/sethtml <html.html>]";
const char PROGMEM HELP_SIGSTREN_CMD[] = "sigmon";
const char PROGMEM HELP_SCANAP_CMD[] = "scanap";
const char PROGMEM HELP_SCANSTA_CMD[] = "scansta";
@@ -103,6 +109,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 +124,9 @@ 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_SWIFTPAIR_SPAM_CMD[] = "swiftpair";
const char PROGMEM HELP_BT_WARDRIVE_CMD[] = "btwardrive [-c]";
const char PROGMEM HELP_BT_SKIM_CMD[] = "sniffskim";
const char PROGMEM HELP_FOOT[] = "==================================";

View File

@@ -25,7 +25,7 @@ void Display::RunSetup()
#endif
#ifdef MARAUDER_M5STICKC
tft.setRotation(3);
tft.setRotation(1);
#endif
tft.setCursor(0, 0);

View File

@@ -68,6 +68,7 @@ class Display
bool tteBar = false;
bool draw_tft = false;
bool exit_draw = false;
bool headless_mode = false;
uint8_t TOP_FIXED_AREA_2 = 48;
uint8_t print_delay_1, print_delay_2 = 10;

View File

@@ -65,13 +65,13 @@ void EvilPortal::setupServer() {
bool EvilPortal::setHtml() {
Serial.println("Setting HTML...");
#ifndef WRITE_PACKETS_SERIAL
File html_file = sd_obj.getFile("/index.html");
File html_file = sd_obj.getFile("/" + this->target_html_name);
if (!html_file) {
#ifdef HAS_SCREEN
this->sendToDisplay("Could not find /index.html.");
this->sendToDisplay("Could not find /" + this->target_html_name);
this->sendToDisplay("Touch to exit...");
#endif
Serial.println("Could not find /index.html. Use stopscan...");
Serial.println("Could not find /" + this->target_html_name + ". Use stopscan...");
return false;
}
else {
@@ -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
}

View File

@@ -93,15 +93,17 @@ 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);
public:
EvilPortal();
String target_html_name = "index.html";
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);

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -18,6 +18,13 @@ MenuFunctions::MenuFunctions()
/* Interrupt driven periodic handler */
#ifdef HAS_ILI9341
uint8_t MenuFunctions::updateTouch(uint16_t *x, uint16_t *y, uint16_t threshold) {
if (!display_obj.headless_mode)
return display_obj.tft.getTouch(x, y, threshold);
else
return !display_obj.headless_mode;
}
void MenuFunctions::lv_tick_handler()
{
lv_tick_inc(LVGL_TICK_PERIOD);
@@ -386,14 +393,18 @@ MenuFunctions::MenuFunctions()
#endif
//// END LV_ARDUINO STUFF
void MenuFunctions::buttonNotSelected(uint8_t b) {
void MenuFunctions::buttonNotSelected(uint8_t b, int8_t x) {
if (x == -1)
x = b;
display_obj.tft.setFreeFont(NULL);
display_obj.key[b].drawButton(false, current_menu->list->get(b).name);
display_obj.key[b].drawButton(false, current_menu->list->get(x).name);
}
void MenuFunctions::buttonSelected(uint8_t b) {
void MenuFunctions::buttonSelected(uint8_t b, int8_t x) {
if (x == -1)
x = b;
display_obj.tft.setFreeFont(NULL);
display_obj.key[b].drawButton(true, current_menu->list->get(b).name);
display_obj.key[b].drawButton(true, current_menu->list->get(x).name);
}
// Function to check menu input
@@ -456,7 +467,7 @@ void MenuFunctions::main(uint32_t currentTime)
// getTouch causes a 10ms delay which makes beacon spam less effective
#ifdef HAS_ILI9341
pressed = display_obj.tft.getTouch(&t_x, &t_y);
pressed = this->updateTouch(&t_x, &t_y);
#endif
@@ -471,9 +482,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 +505,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_ATTACK_SOUR_APPLE) ||
(wifi_scan_obj.currentScanMode == BT_ATTACK_SWIFTPAIR_SPAM) ||
(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 +540,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 +563,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_ATTACK_SOUR_APPLE) ||
(wifi_scan_obj.currentScanMode == BT_ATTACK_SWIFTPAIR_SPAM) ||
(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) ||
@@ -631,50 +654,77 @@ void MenuFunctions::main(uint32_t currentTime)
#endif
#ifdef HAS_BUTTONS
#ifndef MARAUDER_M5STICKC
if (u_btn.justPressed()){
#if !(defined(MARAUDER_V6) || defined(MARAUDER_V6_1))
#ifndef MARAUDER_M5STICKC
if (u_btn.justPressed()){
if ((wifi_scan_obj.currentScanMode == WIFI_SCAN_OFF) ||
(wifi_scan_obj.currentScanMode == OTA_UPDATE)) {
if (current_menu->selected > 0) {
current_menu->selected--;
// Page up
if (current_menu->selected < this->menu_start_index) {
this->buildButtons(current_menu, current_menu->selected);
this->displayCurrentMenu(current_menu->selected);
}
this->buttonSelected(current_menu->selected - this->menu_start_index, current_menu->selected);
if (!current_menu->list->get(current_menu->selected + 1).selected)
this->buttonNotSelected(current_menu->selected + 1 - this->menu_start_index, current_menu->selected + 1);
}
// Loop to end
else {
current_menu->selected = current_menu->list->size() - 1;
if (current_menu->selected >= BUTTON_SCREEN_LIMIT) {
this->buildButtons(current_menu, current_menu->selected + 1 - BUTTON_SCREEN_LIMIT);
this->displayCurrentMenu(current_menu->selected + 1 - BUTTON_SCREEN_LIMIT);
}
this->buttonSelected(current_menu->selected, current_menu->selected);
if (!current_menu->list->get(0).selected)
this->buttonNotSelected(0, this->menu_start_index);
}
}
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);
}
}
#endif
if (d_btn.justPressed()){
if ((wifi_scan_obj.currentScanMode == WIFI_SCAN_OFF) ||
(wifi_scan_obj.currentScanMode == OTA_UPDATE)) {
if (current_menu->selected > 0) {
current_menu->selected--;
if (current_menu->selected < current_menu->list->size() - 1) {
current_menu->selected++;
this->buttonSelected(current_menu->selected - this->menu_start_index, current_menu->selected);
if (!current_menu->list->get(current_menu->selected - 1).selected)
this->buttonNotSelected(current_menu->selected - 1 - this->menu_start_index, current_menu->selected - 1);
// Page down
if (current_menu->selected - this->menu_start_index >= BUTTON_SCREEN_LIMIT) {
this->buildButtons(current_menu, current_menu->selected + 1 - BUTTON_SCREEN_LIMIT);
this->displayCurrentMenu(current_menu->selected + 1 - BUTTON_SCREEN_LIMIT);
}
}
// Loop to beginning
else {
if (current_menu->selected >= BUTTON_SCREEN_LIMIT) {
this->buildButtons(current_menu);
this->displayCurrentMenu();
}
current_menu->selected = 0;
this->buttonSelected(current_menu->selected);
if (!current_menu->list->get(current_menu->selected + 1).selected)
this->buttonNotSelected(current_menu->selected + 1);
if (!current_menu->list->get(current_menu->list->size() - 1).selected)
this->buttonNotSelected(current_menu->list->size() - 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 (wifi_scan_obj.set_channel > 1)
wifi_scan_obj.changeChannel(wifi_scan_obj.set_channel - 1);
}
}
if(c_btn_press){
current_menu->list->get(current_menu->selected).callable();
}
#endif
if (d_btn.justPressed()){
if ((wifi_scan_obj.currentScanMode == WIFI_SCAN_OFF) ||
(wifi_scan_obj.currentScanMode == OTA_UPDATE)) {
if (current_menu->selected < current_menu->list->size() - 1) {
current_menu->selected++;
this->buttonSelected(current_menu->selected);
if (!current_menu->list->get(current_menu->selected - 1).selected)
this->buttonNotSelected(current_menu->selected - 1);
}
else {
current_menu->selected = 0;
this->buttonSelected(current_menu->selected);
if (!current_menu->list->get(current_menu->list->size() - 1).selected)
this->buttonNotSelected(current_menu->list->size() - 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){
current_menu->list->get(current_menu->selected).callable();
}
#endif
}
@@ -807,6 +857,9 @@ void MenuFunctions::updateStatusBar()
display_obj.tft.setTextColor(TFT_WHITE, STATUSBAR_COLOR);
display_obj.tft.drawString(gps_obj.getNumSatsString(), 22, 0, 2);
#elif defined(HAS_SCREEN)
display_obj.tft.setTextColor(the_color, STATUSBAR_COLOR);
display_obj.tft.drawString("GPS", 0, 0, 1);
#endif
}
#endif
@@ -816,7 +869,7 @@ void MenuFunctions::updateStatusBar()
// WiFi Channel Stuff
if (wifi_scan_obj.set_channel != wifi_scan_obj.old_channel) {
wifi_scan_obj.old_channel = wifi_scan_obj.set_channel;
display_obj.tft.fillRect(50, 0, 50, STATUS_BAR_WIDTH, STATUSBAR_COLOR);
display_obj.tft.fillRect(50, 0, TFT_WIDTH * 0.21, STATUS_BAR_WIDTH, STATUSBAR_COLOR);
#ifdef HAS_ILI9341
display_obj.tft.drawString("CH: " + (String)wifi_scan_obj.set_channel, 50, 0, 2);
#endif
@@ -1065,6 +1118,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 +1141,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 +1219,13 @@ void MenuFunctions::RunSetup()
wifi_scan_obj.StartScan(WIFI_PACKET_MONITOR, TFT_BLUE);
});
#endif
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);
});
#ifndef HAS_ILI9341
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);
});
#endif
this->addNodes(&wifiSnifferMenu, text_table1[49], TFT_MAGENTA, NULL, BEACON_SNIFF, [this]() {
display_obj.clearScreen();
this->drawStatusBar();
@@ -1191,6 +1248,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 +1420,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 +1434,42 @@ 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);
});
this->addNodes(&bluetoothAttackMenu, "Swiftpair Spam", TFT_CYAN, NULL, KEYBOARD_ICO, [this]() {
display_obj.clearScreen();
this->drawStatusBar();
wifi_scan_obj.StartScan(BT_ATTACK_SWIFTPAIR_SPAM, TFT_CYAN);
});
// Device menu
deviceMenu.parentMenu = &mainMenu;
this->addNodes(&deviceMenu, text09, TFT_LIGHTGREY, NULL, 0, [this]() {
@@ -1516,6 +1624,7 @@ void MenuFunctions::buildButtons(Menu * menu, int starting_index)
{
if (menu->list != NULL)
{
this->menu_start_index = starting_index;
for (uint8_t i = 0; i < menu->list->size(); i++)
{
TFT_eSPI_Button new_button;
@@ -1538,7 +1647,7 @@ void MenuFunctions::buildButtons(Menu * menu, int starting_index)
}
void MenuFunctions::displayCurrentMenu()
void MenuFunctions::displayCurrentMenu(uint8_t start_index)
{
//Serial.println(F("Displaying current menu..."));
display_obj.clearScreen();
@@ -1556,7 +1665,7 @@ void MenuFunctions::displayCurrentMenu()
display_obj.tft.setFreeFont(NULL);
display_obj.tft.setTextSize(1);
#endif
for (uint8_t i = 0; i < current_menu->list->size(); i++)
for (uint8_t i = start_index; i < current_menu->list->size(); i++)
{
#ifdef HAS_ILI9341
if (!current_menu->list->get(i).selected)
@@ -1577,9 +1686,9 @@ void MenuFunctions::displayCurrentMenu()
#if defined(MARAUDER_MINI) || defined(MARAUDER_M5STICKC)
if ((current_menu->selected == i) || (current_menu->list->get(i).selected))
display_obj.key[i].drawButton(true, current_menu->list->get(i).name);
display_obj.key[i - start_index].drawButton(true, current_menu->list->get(i).name);
else
display_obj.key[i].drawButton(false, current_menu->list->get(i).name);
display_obj.key[i - start_index].drawButton(false, current_menu->list->get(i).name);
#endif
}
display_obj.tft.setFreeFont(NULL);

View File

@@ -116,6 +116,7 @@ class MenuFunctions
String u_result = "";
uint32_t initTime = 0;
uint8_t menu_start_index = 0;
// Main menu stuff
@@ -144,6 +145,7 @@ class MenuFunctions
// Bluetooth menu stuff
Menu bluetoothSnifferMenu;
Menu bluetoothAttackMenu;
// Settings things menus
Menu generateSSIDsMenu;
@@ -162,8 +164,10 @@ class MenuFunctions
String callSetting(String key);
void runBoolSetting(String ley);
void displaySetting(String key, Menu* menu, int index);
void buttonSelected(uint8_t b);
void buttonNotSelected(uint8_t b);
void buttonSelected(uint8_t b, int8_t x = -1);
void buttonNotSelected(uint8_t b, int8_t x = -1);
uint8_t updateTouch(uint16_t *x, uint16_t *y, uint16_t threshold = 600);
public:
MenuFunctions();
@@ -192,7 +196,7 @@ class MenuFunctions
void buildButtons(Menu* menu, int starting_index = 0);
void changeMenu(Menu* menu);
void drawStatusBar();
void displayCurrentMenu();
void displayCurrentMenu(uint8_t start_index = 0);
void main(uint32_t currentTime);
void RunSetup();
void orientDisplay();

View File

@@ -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;
@@ -274,4 +290,4 @@ void SDInterface::main() {
this->initSD();
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -77,6 +77,12 @@
#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 BT_ATTACK_SWIFTPAIR_SPAM 37
#define GRAPH_REFRESH 100
@@ -125,7 +131,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 +148,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 +246,16 @@ 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 executeSwiftpairSpam();
void startWardriverWiFi();
void generateRandomMac(uint8_t* mac);
void startWiFiAttacks(uint8_t scan_mode, uint16_t color, String title_string);
void packetMonitorMain(uint32_t currentTime);
@@ -270,6 +286,8 @@ 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 RunSwiftpairSpam(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();
@@ -301,9 +319,10 @@ class WiFiScan
byte src_mac[6] = {};
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
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();
@@ -331,6 +350,7 @@ class WiFiScan
void main(uint32_t currentTime);
void StartScan(uint8_t scan_mode, uint16_t color = 0);
void StopScan(uint8_t scan_mode);
const char* generateRandomName();
//void addLog(String log, int len);
static void getMAC(char *addr, uint8_t* data, uint16_t offset);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -9,24 +9,26 @@
//#define WRITE_PACKETS_SERIAL
//// BOARD TARGETS
//#define MARAUDER_M5STICKC
#define MARAUDER_M5STICKC
//#define MARAUDER_MINI
//#define MARAUDER_V4
//#define MARAUDER_V6
//#define MARAUDER_V6_1
//#define MARAUDER_KIT
//#define GENERIC_ESP32
#define MARAUDER_FLIPPER
//#define MARAUDER_FLIPPER
//#define ESP32_LDDB
//#define MARAUDER_DEV_BOARD_PRO
//#define XIAO_ESP32_S3
//// END BOARD TARGETS
#define MARAUDER_VERSION "v0.11.1"
#define MARAUDER_VERSION "v0.13.3"
//// BOARD FEATURES
#ifdef MARAUDER_M5STICKC
//#define FLIPPER_ZERO_HAT
#define HAS_BATTERY
#define HAS_BT
#define HAS_BUTTONS
#define HAS_NEOPIXEL_LED
#define HAS_PWR_MGMT
@@ -48,7 +50,7 @@
#define HAS_SD
#define USE_SD
#define HAS_TEMP_SENSOR
//#define HAS_GPS
#define HAS_GPS
#endif
#ifdef MARAUDER_V4
@@ -65,11 +67,12 @@
#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
//#define HAS_BUTTONS
#define HAS_BT_REMOTE
#define HAS_BUTTONS
#define HAS_NEOPIXEL_LED
//#define HAS_PWR_MGMT
#define HAS_SCREEN
@@ -125,7 +128,7 @@
#ifdef ESP32_LDDB
//#define FLIPPER_ZERO_HAT
//#define HAS_BATTERY
//#define HAS_BT
#define HAS_BT
//#define HAS_BUTTONS
#define HAS_NEOPIXEL_LED
//#define HAS_PWR_MGMT
@@ -203,6 +206,22 @@
#define U_BTN -1
#define R_BTN -1
#define D_BTN 39
#endif
#ifdef MARAUDER_V6
#define L_BTN -1
#define C_BTN 0
#define U_BTN -1
#define R_BTN -1
#define D_BTN -1
#endif
#ifdef MARAUDER_V6_1
#define L_BTN -1
#define C_BTN 0
#define U_BTN -1
#define R_BTN -1
#define D_BTN -1
#endif
#endif
@@ -253,7 +272,8 @@
//#define MENU_FONT &FreeMonoBold9pt7b
//#define MENU_FONT &FreeSans9pt7b
//#define MENU_FONT &FreeSansBold9pt7b
#define BUTTON_ARRAY_LEN 11
#define BUTTON_SCREEN_LIMIT 6
#define BUTTON_ARRAY_LEN 13
#define STATUS_BAR_WIDTH (TFT_HEIGHT/16)
#define LVGL_TICK_PERIOD 6
@@ -308,7 +328,8 @@
//#define MENU_FONT &FreeMonoBold9pt7b
//#define MENU_FONT &FreeSans9pt7b
//#define MENU_FONT &FreeSansBold9pt7b
#define BUTTON_ARRAY_LEN 11
#define BUTTON_SCREEN_LIMIT 12
#define BUTTON_ARRAY_LEN 12
#define STATUS_BAR_WIDTH 16
#define LVGL_TICK_PERIOD 6
@@ -334,7 +355,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 +386,8 @@
//#define MENU_FONT &FreeMonoBold9pt7b
//#define MENU_FONT &FreeSans9pt7b
//#define MENU_FONT &FreeSansBold9pt7b
#define BUTTON_ARRAY_LEN 11
#define BUTTON_SCREEN_LIMIT 12
#define BUTTON_ARRAY_LEN 12
#define STATUS_BAR_WIDTH 16
#define LVGL_TICK_PERIOD 6
@@ -423,7 +445,8 @@
//#define MENU_FONT &FreeMonoBold9pt7b
//#define MENU_FONT &FreeSans9pt7b
//#define MENU_FONT &FreeSansBold9pt7b
#define BUTTON_ARRAY_LEN 11
#define BUTTON_SCREEN_LIMIT 12
#define BUTTON_ARRAY_LEN 12
#define STATUS_BAR_WIDTH 16
#define LVGL_TICK_PERIOD 6
@@ -491,7 +514,8 @@
//#define MENU_FONT &FreeMonoBold9pt7b
//#define MENU_FONT &FreeSans9pt7b
//#define MENU_FONT &FreeSansBold9pt7b
#define BUTTON_ARRAY_LEN 11
#define BUTTON_SCREEN_LIMIT 10
#define BUTTON_ARRAY_LEN 13
#define STATUS_BAR_WIDTH (TFT_HEIGHT/16)
#define LVGL_TICK_PERIOD 6
@@ -538,7 +562,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 "!"
@@ -609,7 +633,7 @@
#define KEY_TEXTSIZE 1 // Font size multiplier
#define ICON_W 22
#define ICON_H 22
#define BUTTON_PADDING 10
#define BUTTON_PADDING 60
#endif
//// END MENU DEFINITIONS
@@ -630,6 +654,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 +667,7 @@
#endif
#ifdef MARAUDER_M5STICKC
#define SD_CS 10
#define SD_CS -1
#endif
#ifdef MARAUDER_FLIPPER
@@ -695,7 +723,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 +770,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 +791,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
@@ -801,4 +845,4 @@
#endif
//// END MARAUDER TITLE STUFF
#endif
#endif

View File

@@ -165,7 +165,7 @@ void setup()
axp192_obj.begin();
#endif
pinMode(FLASH_BUTTON, INPUT);
//pinMode(FLASH_BUTTON, INPUT);
#ifdef HAS_SCREEN
pinMode(TFT_BL, OUTPUT);
@@ -247,6 +247,17 @@ void setup()
#ifdef HAS_SCREEN
delay(2000);
// Do some stealth mode stuff
#ifdef HAS_BUTTONS
if (c_btn.justPressed()) {
display_obj.headless_mode = true;
backlightOff();
Serial.println("Headless Mode enabled");
}
#endif
display_obj.clearScreen();
display_obj.tft.setTextColor(TFT_CYAN, TFT_BLACK);