Compare commits

...

77 Commits

Author SHA1 Message Date
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
Just Call Me Koko
e4dcf91286 Increment version number 2023-09-07 09:00:06 -04:00
Just Call Me Koko
d382b066d4 Fix banner text size 2023-09-07 08:59:05 -04:00
Just Call Me Koko
4c50953dde Commented the wrong thing 2023-09-06 21:21:31 -04:00
Just Call Me Koko
a2f8eabd51 Change dev board pro gps rx pin 2023-09-06 20:59:15 -04:00
Just Call Me Koko
1465245cf4 Include v6_2 asset 2023-09-06 19:58:58 -04:00
Just Call Me Koko
3b3aa9a6e5 Fix find and spelling 2023-09-06 19:41:38 -04:00
Just Call Me Koko
6e645e437a Switch back to flipper 2023-09-06 19:26:03 -04:00
Just Call Me Koko
e0f95373c1 Export binary 2023-09-06 19:17:23 -04:00
Just Call Me Koko
787490820e Fix arduino-cli syntax 2023-09-06 18:54:58 -04:00
Just Call Me Koko
1167eaca67 set warnings to none 2023-09-06 18:38:59 -04:00
Just Call Me Koko
da949387fc Add warnings flag 2023-09-06 18:24:54 -04:00
Just Call Me Koko
0ec881f309 Add another arduino compile step 2023-09-06 18:00:04 -04:00
Just Call Me Koko
57186cf4b5 Adjust hist limit 2023-09-06 16:59:13 -04:00
Just Call Me Koko
a5d1b3faaf Fix MicroNMEA ref 2023-09-06 16:45:30 -04:00
Just Call Me Koko
9b14d2daf5 Update TFT_eSPI to 2.2.23 2023-09-06 16:39:50 -04:00
Just Call Me Koko
7092fdf6cb Replace SD lib in 2.0.10 2023-09-06 15:16:51 -04:00
Just Call Me Koko
e61c859df3 Fix GPS for WiFi Dev Board Pro 2023-09-06 14:48:41 -04:00
Just Call Me Koko
9b03aeff56 Add GPS to WiFi Dev Board Pro 2023-09-06 13:55:50 -04:00
Just Call Me Koko
d39f3fc2da Add GPS for flipper wifi dev board 2023-09-05 18:42:07 -04:00
Just Call Me Koko
e92476fb26 Add GPS Data command 2023-09-05 14:23:05 -04:00
Just Call Me Koko
4b000c8d18 Revert wardrive history limit 2023-09-05 13:46:49 -04:00
Just Call Me Koko
5d4f73dbc8 Change banner render method 2023-09-05 13:34:58 -04:00
Just Call Me Koko
3337c3e7a2 Adjust wardrive mac history 2023-09-04 21:56:29 -04:00
Just Call Me Koko
bf831a19fd Move GPS data menu to device 2023-09-04 21:36:02 -04:00
Just Call Me Koko
8f2b9c709a Remove unused methods and banner 2023-09-04 21:20:51 -04:00
Just Call Me Koko
edbd601af7 Change AP limit to test mem 2023-09-04 20:16:57 -04:00
Just Call Me Koko
e174291646 Add wardrive array 2023-09-04 20:06:26 -04:00
Just Call Me Koko
1580feb1d0 Fix GPS data still refreshing 2023-09-04 18:33:50 -04:00
Just Call Me Koko
5047296c94 Some don't have GPS 2023-09-01 16:01:10 -04:00
Just Call Me Koko
26a46d6c4d Add GPS data function 2023-09-01 15:20:10 -04:00
Just Call Me Koko
86328d2788 Add v6 SMA enclosures 2023-09-01 07:44:45 -04:00
Just Call Me Koko
f48d42ae0c Fix image position 2023-08-31 23:47:54 -04:00
Just Call Me Koko
4b40c0cf22 Add old Marauder title 2023-08-31 23:22:53 -04:00
Just Call Me Koko
363817c113 Trim more fat 2023-08-31 19:41:36 -04:00
Just Call Me Koko
4cf96a8f0c Fix includes 2023-08-31 19:26:09 -04:00
Just Call Me Koko
49888fa864 Remove bluetooth general menu 2023-08-31 18:46:13 -04:00
Just Call Me Koko
56133db97a Remove general menu 2023-08-31 18:39:07 -04:00
Just Call Me Koko
ce8c70daf7 New Marauder title screen 2023-08-31 18:11:21 -04:00
Just Call Me Koko
6a26ac2e04 Remove join/shutdown wifi 2023-08-31 15:02:34 -04:00
Just Call Me Koko
bc3038c73b Trim fat 2023-08-30 21:58:15 -04:00
Just Call Me Koko
eee1b5c8c2 Add GPS menu 2023-08-30 21:36:36 -04:00
Just Call Me Koko
ddfda9c9ed Clean up mem 2023-08-30 17:48:55 -04:00
Just Call Me Koko
d140f70093 Fix what happens and stuff 2023-08-30 16:50:54 -04:00
Just Call Me Koko
7299b66255 Stupid Arduino IDE autosave 2023-08-30 16:35:48 -04:00
Just Call Me Koko
c7936b06f2 Add MicroNMEA to libs 2023-08-30 16:29:06 -04:00
Just Call Me Koko
0106081308 Detect GPS module 2023-08-30 15:57:44 -04:00
Just Call Me Koko
3c9458e0f5 Add GPS capability 2023-08-30 15:08:06 -04:00
Just Call Me Koko
2735550d3a Merge pull request #317 from justcallmekoko/master
Master to Dev
2023-08-28 16:59:27 -04:00
Just Call Me Koko
6da2d33507 Merge pull request #313 from sfjuocekr/sfjuocekr-patch-1
Fix string copy
2023-08-28 09:31:34 -04:00
Just Call Me Koko
d1e0d96543 Merge pull request #316 from AWOK559/master
Added V6 case
2023-08-28 09:29:47 -04:00
AWOK
17a4035208 Added V6 case
Added case designed by AWOK
2023-08-26 20:10:39 -07:00
Sjoer van der Ploeg
def6d2d277 Fix string copy
strncpy only copies the bytes specified, so if you set a name like "PORTAL" and then want to set a name like "HELLO" the result for apName would be "HELLOL".

Instead copy the size of MAX_AP_NAME_SIZE.
2023-08-21 19:23:03 +02:00
Just Call Me Koko
9db9c630e4 Merge pull request #308 from justcallmekoko/develop
Develop
2023-08-01 11:35:54 -04:00
Just Call Me Koko
816e620b5b Merge pull request #307 from justcallmekoko/tracedgod
Tracedgod
2023-08-01 10:30:53 -04:00
Just Call Me Koko
89d731b10d Fix sigstren monitor 2023-07-26 23:26:35 -04:00
Just Call Me Koko
105a23b1f2 Fix captive portal not showing after AP connect 2023-07-25 21:04:17 -04:00
Just Call Me Koko
d8c960dbe5 Add missing semi 2023-06-22 14:44:18 -04:00
53 changed files with 290939 additions and 1803 deletions

View File

@@ -44,27 +44,34 @@ jobs:
ref: master
path: CustomAsyncTCP
- name: Install MicroNMEA
uses: actions/checkout@v2
with:
repository: stevemarple/MicroNMEA
ref: v2.0.6
path: CustomMicroNMEA
- name: Install ESPAsyncWebServer
uses: actions/checkout@v2
with:
repository: justcallmekoko/ESPAsyncWebServer
repository: bigbrodude6119/ESPAsyncWebServer
ref: master
path: CustomESPAsyncWebServer
#- name: Install TFT_eSPI
# uses: actions/checkout@v2
# with:
# repository: justcallmekoko/TFT_eSPI
# ref: master
# path: CustomTFT_eSPI
- name: Install TFT_eSPI
uses: actions/checkout@v2
with:
repository: justcallmekoko/TFT_eSPI
ref: master
repository: Bodmer/TFT_eSPI
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:
@@ -107,9 +114,16 @@ jobs:
ref: main
path: CustomSwitchLib
- name: Search for SD lib in arduino-esp32 v2.0.4
run: |
find /home/runner/work/ESP32Marauder/ESP32Marauder/2.0.4arduino-esp32 -name "SD"
- name: Install LinkedList
uses: actions/checkout@v2
with:
repository: ivanseidel/LinkedList
ref: v1.3.3
path: CustomLinkedList
#- name: Search for SD lib in arduino-esp32 v2.0.4
# run: |
# find /home/runner/work/ESP32Marauder/ESP32Marauder/2.0.4arduino-esp32 -name "SD"
- name: Configure TFT_eSPI
run: |
@@ -136,9 +150,9 @@ jobs:
# ls -la /home/runner/.arduino15/packages/esp32/hardware/esp32/
# echo Whoever made me have to do this can fuck off
- name: Search for SD lib in arduino-esp32
run: |
find /home/runner/ -name "SD"
#- name: Search for SD lib in arduino-esp32
# run: |
# find /home/runner/ -name "SD"
#- name: Replace SD lib
# run: |
@@ -159,6 +173,18 @@ 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_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
@@ -212,6 +238,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
@@ -236,12 +263,30 @@ 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
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 Marauder with arduino/compile-sketches
# uses: arduino/compile-sketches@v1
# with:
# sketch-paths: esp32_marauder/esp32_marauder.ino
# cli-compile-flags: |
# - --warnings="none"
# - --export-binaries
# fqbn: esp32:esp32:d32:PartitionScheme=min_spiffs
#- name: Show compiled arduino/compile-sketches v6 bin
# run: |
# find ~ -name "esp32_marauder.ino.bin"
#- name: Rename v6_2 Marauder bin
# run: |
# mv ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.ino.bin ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.v6_2.bin
- name: Build Marauder for v6 Marauder
uses: ArminJo/arduino-test-compile@v3.2.1
with:
@@ -253,6 +298,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
@@ -260,6 +328,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 +353,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
@@ -306,6 +376,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
@@ -328,6 +399,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
@@ -354,6 +426,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
@@ -411,6 +484,13 @@ jobs:
path: ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.v6.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
with:
@@ -517,6 +597,18 @@ jobs:
asset_name: esp32_marauder.v6.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,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.0-RC1
# 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>

File diff suppressed because one or more lines are too long

View File

@@ -215,6 +215,8 @@ void CommandLine::runCommand(String input) {
Serial.println(HELP_UPDATE_CMD_A);
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);
@@ -229,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);
@@ -240,11 +245,16 @@ void CommandLine::runCommand(String input) {
Serial.println(HELP_SEL_CMD_A);
Serial.println(HELP_SSID_CMD_A);
Serial.println(HELP_SSID_CMD_B);
Serial.println(HELP_JOIN_WIFI_CMD);
// 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;
}
@@ -271,6 +281,44 @@ void CommandLine::runCommand(String input) {
menu_function_obj.changeMenu(menu_function_obj.current_menu);
#endif
}
else if (cmd_args.get(0) == GPS_DATA_CMD) {
#ifdef HAS_GPS
if (gps_obj.getGpsModuleStatus()) {
Serial.println("Getting GPS Data. Stop with " + (String)STOPSCAN_CMD);
wifi_scan_obj.currentScanMode = WIFI_SCAN_GPS_DATA;
#ifdef HAS_SCREEN
menu_function_obj.changeMenu(&menu_function_obj.gpsInfoMenu);
#endif
wifi_scan_obj.StartScan(WIFI_SCAN_GPS_DATA, TFT_CYAN);
}
#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");
@@ -401,7 +449,35 @@ void CommandLine::runCommand(String input) {
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
#endif
wifi_scan_obj.StartScan(WIFI_SCAN_EVIL_PORTAL, TFT_MAGENTA);
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) {
@@ -696,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
@@ -995,7 +1116,7 @@ void CommandLine::runCommand(String input) {
}
}
// Join WiFi
else if (cmd_args.get(0) == JOINWIFI_CMD) {
/*else if (cmd_args.get(0) == JOINWIFI_CMD) {
int n_sw = this->argSearch(&cmd_args, "-n"); // name
int a_sw = this->argSearch(&cmd_args, "-a"); // access point
int s_sw = this->argSearch(&cmd_args, "-s"); // ssid
@@ -1030,5 +1151,5 @@ void CommandLine::runCommand(String input) {
}
Serial.println("Attempting to join WiFi with ssid " + (String)essid);
wifi_scan_obj.joinWiFi(essid, pwx);
}
}*/
}

View File

@@ -45,6 +45,8 @@ const char PROGMEM HELP_CMD[] = "help";
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";
@@ -59,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";
@@ -71,10 +74,11 @@ const char PROGMEM ATTACK_TYPE_RR[] = "rickroll";
const char PROGMEM LIST_AP_CMD[] = "list";
const char PROGMEM SEL_CMD[] = "select";
const char PROGMEM SSID_CMD[] = "ssid";
const char PROGMEM JOINWIFI_CMD[] = "join";
// 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";
@@ -88,6 +92,8 @@ const char PROGMEM HELP_UPDATE_CMD_A[] = "update -s/-w";
const char PROGMEM HELP_SETTINGS_CMD[] = "settings [-s <setting> enable/disable>]/[-r]";
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]";
@@ -102,7 +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_JOIN_WIFI_CMD[] = "join [-n <ssid_name>/-s <ssid_index>/-a <access_point_index>] -p <password>";
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[] = "==================================";

View File

@@ -319,7 +319,7 @@ void Display::displayBuffer(bool do_clear)
void Display::showCenterText(String text, int y)
{
tft.setCursor((SCREEN_WIDTH - (text.length() * 6)) / 2, y);
tft.setCursor((SCREEN_WIDTH - (text.length() * (6 * BANNER_TEXT_SIZE))) / 2, y);
tft.println(text);
}
@@ -427,7 +427,7 @@ void Display::drawJpeg(const char *filename, int xpos, int ypos) {
// the filename can be a String or character array type:
//boolean decoded = JpegDec.decodeFsFile(filename); // or pass the filename (leading / distinguishes SPIFFS files)
boolean decoded = JpegDec.decodeArray(MarauderTitle, 13578);
boolean decoded = JpegDec.decodeArray(MarauderTitle, MARAUDER_TITLE_BYTES);
if (decoded) {
// print information about the image to the serial port
@@ -441,13 +441,13 @@ void Display::drawJpeg(const char *filename, int xpos, int ypos) {
//}
}
void Display::setupDraw() {
/*void Display::setupDraw() {
this->tft.drawLine(0, 0, 10, 0, TFT_MAGENTA);
this->tft.drawLine(0, 0, 0, 10, TFT_GREEN);
this->tft.drawLine(0, 0, 0, 0, TFT_CYAN);
}
}*/
uint16_t xlast;
/*uint16_t xlast;
uint16_t ylast;
uint32_t AH;
void Display::drawStylus()
@@ -513,7 +513,7 @@ void Display::drawStylus()
xlast = 0;
ylast = 0;
}
}
}*/
//====================================================================================
// Decode and render the Jpeg image onto the TFT screen
@@ -751,20 +751,20 @@ void Display::listDir(fs::FS &fs, const char * dirname, uint8_t levels) {
void Display::updateBanner(String msg)
{
this->img.deleteSprite();
//this->img.deleteSprite();
this->img.setColorDepth(8);
//this->img.setColorDepth(8);
this->img.createSprite(SCREEN_WIDTH, TEXT_HEIGHT);
//this->img.createSprite(SCREEN_WIDTH, TEXT_HEIGHT);
this->buildBanner(msg, current_banner_pos);
this->img.pushSprite(0, STATUS_BAR_WIDTH);
//this->img.pushSprite(0, STATUS_BAR_WIDTH);
current_banner_pos--;
//current_banner_pos--;
if (current_banner_pos <= 0)
current_banner_pos = SCREEN_WIDTH + 2;
//if (current_banner_pos <= 0)
// current_banner_pos = SCREEN_WIDTH + 2;
}
@@ -772,6 +772,13 @@ void Display::buildBanner(String msg, int xpos)
{
int h = TEXT_HEIGHT;
this->tft.fillRect(0, STATUS_BAR_WIDTH, SCREEN_WIDTH, TEXT_HEIGHT, TFT_BLACK);
this->tft.setFreeFont(NULL); // Font 4 selected
this->tft.setTextSize(BANNER_TEXT_SIZE); // Font size scaling is x1
this->tft.setTextColor(TFT_WHITE, TFT_BLACK); // Black text, no background colour
this->showCenterText(msg, STATUS_BAR_WIDTH);
/*
// We could just use fillSprite(color) but lets be a bit more creative...
// Fill with rainbow stripes
@@ -793,6 +800,7 @@ void Display::buildBanner(String msg, int xpos)
img.setCursor(xpos - SCREEN_WIDTH, 2); // Print text at xpos - sprite width
img.print(msg);
*/
}
void Display::main(uint8_t scan_mode)

View File

@@ -8,12 +8,10 @@
#include <FS.h>
#include <functional>
#include <JPEGDecoder.h>
//#include <SimpleList.h>
#include <LinkedList.h>
#include <SPI.h>
#include <lvgl.h>
#include <Ticker.h>
//#include <M5Stack.h>
#include "SPIFFS.h"
#include "Assets.h"
@@ -39,23 +37,6 @@
#define LV_ADD_SSID 14
#define WIFI_ATTACK_BEACON_LIST 15
/*
PROGMEM void my_disp_flush(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p);
PROGMEM bool my_touchpad_read(lv_indev_drv_t * indev_driver, lv_indev_data_t * data);
PROGMEM static lv_disp_buf_t disp_buf;
PROGMEM static lv_color_t buf[LV_HOR_RES_MAX * 10];
PROGMEM static void ta_event_cb(lv_obj_t * ta, lv_event_t event);
PROGMEM static void keyboard_event_cb(lv_obj_t * keyboard, lv_event_t event);
// lvgl stuff
PROGMEM static lv_obj_t *kb;
*/
// #define KIT
// #define TFT_DIY
class Display
{
private:
@@ -76,16 +57,9 @@ class Display
void scrollScreenBuffer(bool down = false);
#endif
//void addNodes(Menu* menu, String name, Menu* child, std::function<void()> callable);
//void changeMenu(Menu* menu);
//void showMenuList(Menu* menu, int layer);
//static void lv_tick_handler();
public:
Display();
//Ticker tick;
TFT_eSPI tft = TFT_eSPI();
TFT_eSprite img = TFT_eSprite(&tft);
TFT_eSPI_Button key[BUTTON_ARRAY_LEN];
const String PROGMEM version_number = MARAUDER_VERSION;
@@ -95,15 +69,9 @@ class Display
bool draw_tft = false;
bool exit_draw = false;
int TOP_FIXED_AREA_2 = 48;
int print_delay_1, print_delay_2 = 10;
int current_banner_pos = SCREEN_WIDTH;
//Menu* current_menu;
//Menu mainMenu;
//Menu wifiMenu;
//Menu bluetoothMenu;
uint8_t TOP_FIXED_AREA_2 = 48;
uint8_t print_delay_1, print_delay_2 = 10;
uint8_t current_banner_pos = SCREEN_WIDTH;
LinkedList<String>* display_buffer;
@@ -127,9 +95,6 @@ class Display
// We can speed up scrolling of short text lines by just blanking the character we drew
int blank[19]; // We keep all the strings pixel lengths to optimise the speed of the top line blanking
//void initLVGL();
//void deinitLVGL();
//void joinWiFiGFX();
void tftDrawRedOnOffButton();
void tftDrawGreenOnOffButton();
void tftDrawGraphObjects(byte x_scale);
@@ -143,8 +108,6 @@ class Display
void clearScreen();
void displayBuffer(bool do_clear = false);
void drawJpeg(const char *filename, int xpos, int ypos);
void setupDraw();
void drawStylus();
void getTouchWhileFunction(bool pressed);
void initScrollValues(bool tte = false);
void jpegInfo();

View File

@@ -31,7 +31,7 @@ String EvilPortal::get_password() {
void EvilPortal::setupServer() {
server.on("/", HTTP_GET, [this](AsyncWebServerRequest *request) {
request->send_P(200, "text/html", this->index_html);
request->send_P(200, "text/html", index_html);
Serial.println("client connected");
#ifdef HAS_SCREEN
this->sendToDisplay("Client connected to server");
@@ -90,7 +90,7 @@ bool EvilPortal::setHtml() {
if (isPrintable(c))
html.concat(c);
}
strncpy(this->index_html, html.c_str(), strlen(html.c_str()));
strncpy(index_html, html.c_str(), strlen(html.c_str()));
this->has_html = true;
Serial.println("html set");
html_file.close();
@@ -203,7 +203,7 @@ bool EvilPortal::setAP(LinkedList<ssid>* ssids, LinkedList<AccessPoint>* access_
}
if (ap_config != "") {
strncpy(this->apName, ap_config.c_str(), strlen(ap_config.c_str()));
strncpy(apName, ap_config.c_str(), MAX_AP_NAME_SIZE);
this->has_ap = true;
Serial.println("ap config set");
return true;
@@ -215,10 +215,10 @@ bool EvilPortal::setAP(LinkedList<ssid>* ssids, LinkedList<AccessPoint>* access_
void EvilPortal::startAP() {
Serial.print("starting ap ");
Serial.println(this->apName);
Serial.println(apName);
WiFi.mode(WIFI_AP);
WiFi.softAP(this->apName);
WiFi.softAP(apName);
#ifdef HAS_SCREEN
this->sendToDisplay("AP started");
@@ -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
}
@@ -304,4 +307,4 @@ void EvilPortal::main(uint8_t scan_mode) {
#endif
}
}
}
}

View File

@@ -39,6 +39,26 @@ extern Buffer buffer_obj;
#define MAX_AP_NAME_SIZE 30
#define WIFI_SCAN_EVIL_PORTAL 30
char apName[MAX_AP_NAME_SIZE] = "PORTAL";
char index_html[MAX_HTML_SIZE] = "TEST";
struct ssid {
String essid;
uint8_t channel;
uint8_t bssid[6];
bool selected;
};
struct AccessPoint {
String essid;
uint8_t channel;
uint8_t bssid[6];
bool selected;
LinkedList<char>* beacon;
char rssi;
LinkedList<uint8_t>* stations;
};
class CaptiveRequestHandler : public AsyncWebHandler {
public:
CaptiveRequestHandler() {}
@@ -46,28 +66,11 @@ public:
bool canHandle(AsyncWebServerRequest *request) { return true; }
void handleRequest(AsyncWebServerRequest *request, char * index_html) {
void handleRequest(AsyncWebServerRequest *request) {
request->send_P(200, "text/html", index_html);
}
};
struct ssid {
String essid;
uint8_t channel;
int bssid[6];
bool selected;
};
struct AccessPoint {
String essid;
int channel;
int bssid[6];
bool selected;
LinkedList<char>* beacon;
int rssi;
LinkedList<int>* stations;
};
class EvilPortal {
private:
@@ -78,9 +81,6 @@ class EvilPortal {
String user_name;
String password;
char apName[MAX_AP_NAME_SIZE] = "PORTAL";
char index_html[MAX_HTML_SIZE] = "TEST";
bool has_html;
bool has_ap;
@@ -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);

View File

@@ -0,0 +1,126 @@
#include "GpsInterface.h"
#ifdef HAS_GPS
char nmeaBuffer[100];
MicroNMEA nmea(nmeaBuffer, sizeof(nmeaBuffer));
HardwareSerial Serial2(GPS_SERIAL_INDEX);
void GpsInterface::begin() {
Serial2.begin(9600, SERIAL_8N1, GPS_TX, GPS_RX);
MicroNMEA::sendSentence(Serial2, "$PSTMSETPAR,1201,0x00000042");
MicroNMEA::sendSentence(Serial2, "$PSTMSAVEPAR");
MicroNMEA::sendSentence(Serial2, "$PSTMSRR");
delay(4000);
if (Serial2.available()) {
Serial.println("GPS Attached Successfully");
this->gps_enabled = true;
while (Serial2.available())
Serial2.read();
}
}
// Thanks JosephHewitt
String GpsInterface::dt_string_from_gps(){
//Return a datetime String using GPS data only.
String datetime = "";
if (nmea.isValid() && nmea.getYear() > 0){
datetime += nmea.getYear();
datetime += "-";
datetime += nmea.getMonth();
datetime += "-";
datetime += nmea.getDay();
datetime += " ";
datetime += nmea.getHour();
datetime += ":";
datetime += nmea.getMinute();
datetime += ":";
datetime += nmea.getSecond();
}
return datetime;
}
void GpsInterface::setGPSInfo() {
this->good_fix = nmea.isValid();
this->num_sats = nmea.getNumSatellites();
this->datetime = this->dt_string_from_gps();
this->lat = String((float)nmea.getLatitude()/1000000, 7);
this->lon = String((float)nmea.getLongitude()/1000000, 7);
long alt = 0;
if (!nmea.getAltitude(alt)){
alt = 0;
}
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;
}
String GpsInterface::getLon() {
return this->lon;
}
float GpsInterface::getAlt() {
return this->altf;
}
String GpsInterface::getDatetime() {
return this->datetime;
}
String GpsInterface::getNumSatsString() {
return (String)num_sats;
}
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;
}
void GpsInterface::main() {
while (Serial2.available()) {
//Fetch the character one by one
char c = Serial2.read();
//Serial.print(c);
//Pass the character to the library
nmea.process(c);
}
uint8_t num_sat = nmea.getNumSatellites();
if ((nmea.isValid()) && (num_sat > 0))
this->setGPSInfo();
else if ((!nmea.isValid()) && (num_sat <= 0)) {
this->setGPSInfo();
}
}
#endif

View File

@@ -0,0 +1,39 @@
#ifndef GpsInterface_h
#define GpsInterface_h
#include <MicroNMEA.h>
#include "configs.h"
class GpsInterface {
public:
void begin();
void main();
String getNumSatsString();
bool getFixStatus();
String getFixStatusAsString();
bool getGpsModuleStatus();
String getLat();
String getLon();
float getAlt();
float getAccuracy();
String getDatetime();
private:
// GPS Info
String lat = "";
String lon = "";
float altf = 0.0;
float accuracy = 0.0;
String datetime = "";
bool gps_enabled = false;
bool good_fix = false;
uint8_t num_sats = 0;
String dt_string_from_gps();
void setGPSInfo();
};
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -8,12 +8,8 @@
#define BATTERY_ANALOG_ON 0
#include "WiFiScan.h"
#include "Display.h"
#include "BatteryInterface.h"
#include "SDInterface.h"
//#include "Web.h"
//#include "esp_interface.h"
//#include "a32u4_interface.h"
#include "settings.h"
#ifdef HAS_BUTTONS
@@ -25,13 +21,9 @@
extern SwitchLib c_btn;
#endif
extern Display display_obj;
extern WiFiScan wifi_scan_obj;
//extern Web web_obj;
extern SDInterface sd_obj;
extern BatteryInterface battery_obj;
//extern EspInterface esp_obj;
//extern A32u4Interface a32u4_obj;
extern Settings settings_obj;
#define FLASH_BUTTON 0
@@ -68,17 +60,15 @@ extern Settings settings_obj;
#define STATUS_BAT 22
#define STATUS_SD 23
#define PWNAGOTCHI 24
#define ESPRESSIF 25
#define SHUTDOWN 26
#define BEACON_LIST 27
#define GENERATE 28
#define CLEAR_ICO 29
#define KEYBOARD_ICO 30
#define JOIN_WIFI 31
#define ESP_UPDATE_ICO 32
#define BAD_USB_ICO 33
#define TEST_BAD_USB_ICO 34
#define LANGUAGE 35
#define SHUTDOWN 25
#define BEACON_LIST 26
#define GENERATE 27
#define CLEAR_ICO 28
#define KEYBOARD_ICO 29
#define JOIN_WIFI 30
#define LANGUAGE 31
#define STATUS_GPS 32
#define GPS_MENU 33
PROGMEM void my_disp_flush(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p);
PROGMEM bool my_touchpad_read(lv_indev_drv_t * indev_driver, lv_indev_data_t * data);
@@ -87,15 +77,10 @@ PROGMEM static lv_disp_buf_t disp_buf;
PROGMEM static lv_color_t buf[LV_HOR_RES_MAX * 10];
PROGMEM static void ta_event_cb(lv_obj_t * ta, lv_event_t event);
PROGMEM static void join_wifi_keyboard_event_cb(lv_obj_t * keyboard, lv_event_t event);
PROGMEM static void add_ssid_keyboard_event_cb(lv_obj_t * keyboard, lv_event_t event);
PROGMEM static void write_bad_usb_keyboard_event_cb(lv_obj_t * keyboard, lv_event_t event);
PROGMEM static void load_btn_cb(lv_obj_t * load_btn, lv_event_t event);
PROGMEM static void test_btn_cb(lv_obj_t * load_btn, lv_event_t event);
PROGMEM static void ap_list_cb(lv_obj_t * btn, lv_event_t event);
PROGMEM static void station_list_cb(lv_obj_t * btn, lv_event_t event);
PROGMEM static void setting_dropdown_cb(lv_obj_t * btn, lv_event_t event);
PROGMEM static void save_as_keyboard_event_cb(lv_obj_t * keyboard, lv_event_t event);
// lvgl stuff
PROGMEM static lv_obj_t *kb;
@@ -107,9 +92,9 @@ struct Menu;
struct MenuNode {
String name;
String command;
bool command;
uint16_t color;
int icon;
uint8_t icon;
TFT_eSPI_Button* button;
bool selected;
std::function<void()> callable;
@@ -132,7 +117,6 @@ class MenuFunctions
uint32_t initTime = 0;
//Menu* current_menu;
// Main menu stuff
Menu mainMenu;
@@ -140,14 +124,12 @@ class MenuFunctions
Menu wifiMenu;
Menu bluetoothMenu;
Menu badusbMenu;
Menu generalMenu;
Menu deviceMenu;
// Device menu stuff
Menu whichUpdateMenu;
Menu failedUpdateMenu;
Menu confirmMenu;
Menu espUpdateMenu;
Menu updateMenu;
Menu settingsMenu;
Menu specSettingMenu;
@@ -162,11 +144,9 @@ class MenuFunctions
// Bluetooth menu stuff
Menu bluetoothSnifferMenu;
Menu bluetoothGeneralMenu;
Menu bluetoothAttackMenu;
// Settings things menus
Menu shutdownWiFiMenu;
Menu shutdownBLEMenu;
Menu generateSSIDsMenu;
static void lv_tick_handler();
@@ -174,7 +154,6 @@ class MenuFunctions
// Menu icons
//TFT_eSPI_Button key[BUTTON_ARRAY_LEN];
void addNodes(Menu* menu, String name, uint16_t color, Menu* child, int place, std::function<void()> callable, bool selected = false, String command = "");
void updateStatusBar();
@@ -194,6 +173,11 @@ class MenuFunctions
Menu clearSSIDsMenu;
Menu clearAPsMenu;
#ifdef HAS_GPS
// GPS Menu
Menu gpsInfoMenu;
#endif
Ticker tick;
uint16_t x = -1, y = -1;
@@ -203,13 +187,9 @@ class MenuFunctions
void initLVGL();
void deinitLVGL();
void joinWiFiGFX();
void addSSIDGFX();
void addAPGFX();
void addStationGFX();
void displaySettingsGFX();
void writeBadUSB();
void buildButtons(Menu* menu, int starting_index = 0);
void changeMenu(Menu* menu);
void drawStatusBar();

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();
}
}
}
}

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View File

@@ -3,13 +3,8 @@
#include "configs.h"
//#include <BLEDevice.h>
//#include <BLEUtils.h>
//#include <BLEScan.h>
//#include <BLEAdvertisedDevice.h>
#include <ArduinoJson.h>
// Testing NimBLE
#ifdef HAS_BT
#include <NimBLEDevice.h>
#endif
@@ -32,8 +27,8 @@
#ifdef HAS_BATTERY
#include "BatteryInterface.h"
#endif
#ifdef HAS_TEMP_SENSOR
#include "TemperatureInterface.h"
#ifdef HAS_GPS
#include "GpsInterface.h"
#endif
#include "settings.h"
#include "Assets.h"
@@ -44,7 +39,6 @@
#else
#include "LedInterface.h"
#endif
//#include "MenuFunctions.h"
#define bad_list_length 3
@@ -82,6 +76,12 @@
#define WIFI_SCAN_ACTIVE_LIST_EAPOL 28
#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
@@ -95,13 +95,13 @@ extern EvilPortal evil_portal_obj;
#ifdef HAS_SD
extern SDInterface sd_obj;
#endif
#ifdef HAS_GPS
extern GpsInterface gps_obj;
#endif
extern Buffer buffer_obj;
#ifdef HAS_BATTERY
extern BatteryInterface battery_obj;
#endif
#ifdef HAS_TEMP_SENSOR
extern TemperatureInterface temp_obj;
#endif
extern Settings settings_obj;
#ifdef MARAUDER_FLIPPER
extern flipperLED flipper_led;
@@ -112,7 +112,6 @@ extern Settings settings_obj;
#endif
esp_err_t esp_wifi_80211_tx(wifi_interface_t ifx, const void *buffer, int len, bool en_sys_seq);
//int ieee80211_raw_frame_sanity_check(int32_t arg, int32_t arg2, int32_t arg3);
/*struct ssid {
String essid;
@@ -131,6 +130,11 @@ esp_err_t esp_wifi_80211_tx(wifi_interface_t ifx, const void *buffer, int len, b
LinkedList<int>* stations;
};*/
struct mac_addr {
unsigned char bytes[6];
};
struct Station {
uint8_t mac[6];
bool selected;
@@ -139,8 +143,12 @@ struct Station {
class WiFiScan
{
private:
// Wardriver thanks to https://github.com/JosephHewitt
struct mac_addr mac_history[mac_history_len];
// Settings
int channel_hop_delay = 1;
uint mac_history_cursor = 0;
uint8_t channel_hop_delay = 1;
bool force_pmkid = false;
bool force_probe = false;
bool save_pcap = false;
@@ -167,7 +175,7 @@ class WiFiScan
uint32_t initTime = 0;
bool run_setup = true;
void initWiFi(uint8_t scan_mode);
int bluetoothScanTime = 5;
uint8_t bluetoothScanTime = 5;
int packets_sent = 0;
const wifi_promiscuous_filter_t filt = {.filter_mask=WIFI_PROMIS_FILTER_MASK_MGMT | WIFI_PROMIS_FILTER_MASK_DATA};
#ifdef HAS_BT
@@ -175,9 +183,9 @@ class WiFiScan
#endif
//String connected_network = "";
String alfa = "1234567890qwertyuiopasdfghjkklzxcvbnm QWERTYUIOPASDFGHJKLZXCVBNM_";
const String alfa = "1234567890qwertyuiopasdfghjkklzxcvbnm QWERTYUIOPASDFGHJKLZXCVBNM_";
char* rick_roll[8] = {
const char* rick_roll[8] = {
"01 Never gonna give you up",
"02 Never gonna let you down",
"03 Never gonna run around",
@@ -219,32 +227,6 @@ class WiFiScan
/*36*/ 0x00
};
/*uint8_t auth_packet[128] = {0xB0, 0x00, 0x3C, 0x00, // Frame Control, Duration
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, // Dest
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, // Source
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, // Dest BSSID
0x00, 0x01, // Sequence number
0x00, 0x00, // Algo
0x01, 0x00, // Auth sequence number
0x00, 0x00, // Status Code
0x7F, 0x08,
0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x40,
0xDD, 0x0B, 0x00, 0x17, 0xF2, 0x0A, 0x00, 0x01, // Say it was Apple
0x04, 0x00, 0x00, 0x00, 0x00, 0xDD, 0x0A, 0x00,
0x10, 0x18, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00,
0x00
};*/
uint8_t auth_packet[65] = {0xb0, 0x00, 0x3c, 0x00,
0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x7f, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x00, 0x40, 0xdd, 0x0b, 0x00, 0x17, 0xf2, 0x0a,
0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0xdd,
0x0a, 0x00, 0x10, 0x18, 0x02, 0x00, 0x00, 0x10,
0x00, 0x00, 0x00};
uint8_t prob_req_packet[128] = {0x40, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // Destination
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, // Source
@@ -263,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);
@@ -276,19 +266,14 @@ class WiFiScan
void sendProbeAttack(uint32_t currentTime);
void sendDeauthAttack(uint32_t currentTime, String dst_mac_str = "ff:ff:ff:ff:ff:ff");
void sendDeauthFrame(uint8_t bssid[6], int channel, String dst_mac_str = "ff:ff:ff:ff:ff:ff");
void sendDeauthFrame(int bssid[6], int channel, uint8_t mac[6]);
void sendDeauthFrame(uint8_t bssid[6], int channel, uint8_t mac[6]);
void broadcastRandomSSID(uint32_t currentTime);
void broadcastCustomBeacon(uint32_t current_time, ssid custom_ssid);
void broadcastCustomBeacon(uint32_t current_time, AccessPoint custom_ssid);
void broadcastSetSSID(uint32_t current_time, char* ESSID);
void broadcastSetSSID(uint32_t current_time, const char* ESSID);
void RunAPScan(uint8_t scan_mode, uint16_t color);
//void RunRickRoll(uint8_t scan_mode, uint16_t color);
//void RunBeaconSpam(uint8_t scan_mode, uint16_t color);
//void RunProbeFlood(uint8_t scan_mode, uint16_t color);
//void RunDeauthFlood(uint8_t scan_mode, uint16_t color);
void RunGPSInfo();
void RunMimicFlood(uint8_t scan_mode, uint16_t color);
//void RunBeaconList(uint8_t scan_mode, uint16_t color);
void RunEspressifScan(uint8_t scan_mode, uint16_t color);
void RunPwnScan(uint8_t scan_mode, uint16_t color);
void RunBeaconScan(uint8_t scan_mode, uint16_t color);
void RunRawScan(uint8_t scan_mode, uint16_t color);
@@ -298,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();
@@ -305,7 +291,6 @@ class WiFiScan
static void scanCompleteCB(BLEScanResults scanResults);
#endif
//int ieee80211_raw_frame_sanity_check(int32_t arg, int32_t arg2, int32_t arg3);
public:
WiFiScan();
@@ -314,9 +299,9 @@ class WiFiScan
//LinkedList<ssid>* ssids;
int set_channel = 1;
uint8_t set_channel = 1;
int old_channel = 0;
uint8_t old_channel = 0;
bool orient_display = false;
bool wifi_initialized = false;
@@ -329,11 +314,11 @@ class WiFiScan
String dst_mac = "ff:ff:ff:ff:ff:ff";
byte src_mac[6] = {};
//lv_obj_t * scr = lv_cont_create(NULL, NULL);
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();
@@ -344,15 +329,14 @@ class WiFiScan
bool shutdownWiFi();
bool shutdownBLE();
bool scanning();
void joinWiFi(String ssid, String password);
//void joinWiFi(String ssid, String password);
String getStaMAC();
String getApMAC();
String freeRAM();
void changeChannel();
void changeChannel(int chan);
void RunInfo();
void RunShutdownWiFi();
void RunShutdownBLE();
//void RunShutdownBLE();
void RunGenerateSSIDs(int count = 20);
void RunClearSSIDs();
void RunClearAPs();
@@ -365,7 +349,6 @@ class WiFiScan
//void addLog(String log, int len);
static void getMAC(char *addr, uint8_t* data, uint16_t offset);
static void espressifSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type);
static void pwnSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type);
static void beaconSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type);
static void rawSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type);

View File

@@ -1,69 +0,0 @@
#include "a32u4_interface.h"
HardwareSerial MySerial_two(2);
void A32u4Interface::begin() {
MySerial_two.begin(BAUD32U4, SERIAL_8N1, 25, 4);
delay(2000);
Serial.println("Setup A32U4 Serial Interface");
MySerial_two.println("DELAY 1");
delay(1000);
uint8_t a32u4_rep = 0;
if (MySerial_two.available()) {
a32u4_rep = (uint8_t)MySerial_two.read();
}
//display_string.trim();
//Serial.println("\nDisplay string: " + (String)display_string);
if (a32u4_rep != 0) {
this->supported = true;
#ifdef HAS_SCREEN
display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK);
display_obj.tft.println("ATmega32U4 Found!");
display_obj.tft.setTextColor(TFT_CYAN, TFT_BLACK);
#endif
}
else {
#ifdef HAS_SCREEN
display_obj.tft.setTextColor(TFT_RED, TFT_BLACK);
display_obj.tft.println("ATmega32U4 Not Found");
display_obj.tft.setTextColor(TFT_CYAN, TFT_BLACK);
#endif
Serial.print("A32U4 Said: ");
Serial.println(a32u4_rep);
}
this->initTime = millis();
}
void A32u4Interface::runScript(String script) {
MySerial_two.println(script);
}
void A32u4Interface::test() {
MySerial_two.println("STRING Hello, World!");
}
void A32u4Interface::main(uint32_t current_time) {
if (current_time - this->initTime >= 1000) {
this->initTime = millis();
//MySerial_two.write("PING");
//delay(1);
if (MySerial_two.available()) {
Serial.println("Got A32U4 Serial data");
Serial.println(MySerial_two.read());
}
}
}

View File

@@ -1,30 +0,0 @@
#ifndef a32u4_interface_h
#define a32u4_interface_h
#include "configs.h"
#ifdef HAS_SCREEN
#include "Display.h"
#endif
#include <HardwareSerial.h>
#define BAUD32U4 115200
#ifdef HAS_SCREEN
extern Display display_obj;
#endif
class A32u4Interface {
public:
bool supported = false;
uint32_t initTime;
void begin();
void main(uint32_t current_time);
void test();
void runScript(String script);
};
#endif

File diff suppressed because one or more lines are too long

View File

@@ -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.0-RC1"
#define MARAUDER_VERSION "v0.13.0"
//// BOARD FEATURES
#ifdef MARAUDER_M5STICKC
@@ -34,6 +35,7 @@
#define HAS_SD
#define USE_SD
#define HAS_TEMP_SENSOR
//#define HAS_GPS
#endif
#ifdef MARAUDER_MINI
@@ -47,6 +49,7 @@
#define HAS_SD
#define USE_SD
#define HAS_TEMP_SENSOR
#define HAS_GPS
#endif
#ifdef MARAUDER_V4
@@ -60,9 +63,10 @@
#define HAS_SD
#define USE_SD
#define HAS_TEMP_SENSOR
#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
@@ -73,6 +77,7 @@
#define HAS_SD
#define USE_SD
#define HAS_TEMP_SENSOR
#define HAS_GPS
#endif
#ifdef MARAUDER_KIT
@@ -86,6 +91,7 @@
#define HAS_SD
#define USE_SD
#define HAS_TEMP_SENSOR
#define HAS_GPS
#endif
#ifdef GENERIC_ESP32
@@ -98,6 +104,7 @@
//#define HAS_SCREEN
//#define HAS_SD
//#define HAS_TEMP_SENSOR
//#define HAS_GPS
#endif
#ifdef MARAUDER_FLIPPER
@@ -108,6 +115,7 @@
//#define HAS_NEOPIXEL_LED
//#define HAS_PWR_MGMT
//#define HAS_SCREEN
#define HAS_GPS
#ifndef WRITE_PACKETS_SERIAL
#define HAS_SD
#define USE_SD
@@ -126,6 +134,7 @@
#define HAS_SD
#define USE_SD
//#define HAS_TEMP_SENSOR
//#define HAS_GPS
#endif
#ifdef MARAUDER_DEV_BOARD_PRO
@@ -139,6 +148,7 @@
#define HAS_SD
#define USE_SD
//#define HAS_TEMP_SENSOR
#define HAS_GPS
#endif
#ifdef XIAO_ESP32_S3
@@ -151,6 +161,7 @@
//#define HAS_SCREEN
//#define HAS_SD
//#define HAS_TEMP_SENSOR
//#define HAS_GPS
#endif
//// END BOARD FEATURES
@@ -202,6 +213,7 @@
#ifdef HAS_SCREEN
#ifdef MARAUDER_M5STICKC
#define SCREEN_CHAR_WIDTH 40
//#define TFT_MISO 19
#define TFT_MOSI 15
#define TFT_SCLK 13
@@ -242,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
@@ -268,6 +280,7 @@
#endif
#ifdef MARAUDER_V4
#define SCREEN_CHAR_WIDTH 40
#define HAS_ILI9341
#define BANNER_TEXT_SIZE 2
@@ -296,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
@@ -322,7 +335,8 @@
#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
#define BANNER_TEXT_SIZE 2
@@ -352,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
@@ -379,6 +393,7 @@
#endif
#ifdef MARAUDER_KIT
#define SCREEN_CHAR_WIDTH 40
#define HAS_ILI9341
#define BANNER_TEXT_SIZE 2
@@ -409,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
@@ -436,6 +451,7 @@
#endif
#ifdef MARAUDER_MINI
#define SCREEN_CHAR_WIDTH 40
#define TFT_MISO 19
#define TFT_MOSI 23
#define TFT_SCLK 18
@@ -476,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
@@ -523,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 "!"
@@ -615,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
@@ -624,7 +644,7 @@
#endif
#ifdef MARAUDER_M5STICKC
#define SD_CS 10
#define SD_CS -1
#endif
#ifdef MARAUDER_FLIPPER
@@ -680,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
@@ -727,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
@@ -746,4 +766,56 @@
#endif
//// END EVIL PORTAL STUFF
#endif
//// GPS STUFF
#ifdef HAS_GPS
#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
#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) || defined(MARAUDER_V6_1)
#define MARAUDER_TITLE_BYTES 13578
#elif defined(MARAUDER_KIT)
#define MARAUDER_TITLE_BYTES 13578
#elif defined(MARAUDER_MINI)
#define MARAUDER_TITLE_BYTES 13578
#else
#define MARAUDER_TITLE_BYTES 13578
#endif
//// END MARAUDER TITLE STUFF
#endif

View File

@@ -24,6 +24,10 @@ https://www.online-utility.org/image/convert/to/XBM
#include "esp_system.h"
#include <Arduino.h>
#ifdef HAS_GPS
#include "GpsInterface.h"
#endif
#include "Assets.h"
#include "WiFiScan.h"
#ifdef HAS_SD
@@ -48,9 +52,9 @@ https://www.online-utility.org/image/convert/to/XBM
#include "BatteryInterface.h"
#endif
#ifdef HAS_TEMP_SENSOR
#include "TemperatureInterface.h"
#endif
//#ifdef HAS_TEMP_SENSOR
// #include "TemperatureInterface.h"
//#endif
#ifdef HAS_SCREEN
#include "Display.h"
@@ -87,13 +91,17 @@ Buffer buffer_obj;
Settings settings_obj;
CommandLine cli_obj;
#ifdef HAS_GPS
GpsInterface gps_obj;
#endif
#ifdef HAS_BATTERY
BatteryInterface battery_obj;
#endif
#ifdef HAS_TEMP_SENSOR
TemperatureInterface temp_obj;
#endif
//#ifdef HAS_TEMP_SENSOR
// TemperatureInterface temp_obj;
//#endif
#ifdef HAS_SCREEN
Display display_obj;
@@ -216,7 +224,11 @@ void setup()
// Draw the title screen
#ifdef HAS_SCREEN
display_obj.drawJpeg("/marauder3L.jpg", 0 , 0); // 240 x 320 image
#ifndef MARAUDER_MINI
display_obj.drawJpeg("/marauder3L.jpg", 0 , 0); // 240 x 320 image
#else
display_obj.drawJpeg("/marauder3L.jpg", 0, 0);
#endif
#endif
#ifdef HAS_SCREEN
@@ -295,9 +307,9 @@ void setup()
#endif
// Temperature stuff
#ifdef HAS_TEMP_SENSOR
temp_obj.RunSetup();
#endif
//#ifdef HAS_TEMP_SENSOR
// temp_obj.RunSetup();
//#endif
#ifdef HAS_SCREEN
display_obj.tft.println(F(text_table0[6]));
@@ -328,6 +340,16 @@ void setup()
delay(500);
#endif
#ifdef HAS_GPS
gps_obj.begin();
#ifdef HAS_SCREEN
if (gps_obj.getGpsModuleStatus())
display_obj.tft.println("GPS Module connected");
else
display_obj.tft.println("GPS Module NOT connected");
#endif
#endif
#ifdef HAS_SCREEN
display_obj.tft.println(F(text_table0[8]));
@@ -361,65 +383,62 @@ void loop()
#endif
// Update all of our objects
#ifdef HAS_SCREEN
/*#ifdef HAS_SCREEN
bool do_draw = display_obj.draw_tft;
#else
bool do_draw = false;
#endif*/
//if ((!do_draw) && (wifi_scan_obj.currentScanMode != ESP_UPDATE))
//{
cli_obj.main(currentTime);
#ifdef HAS_SCREEN
display_obj.main(wifi_scan_obj.currentScanMode);
#endif
wifi_scan_obj.main(currentTime);
//evil_portal_obj.main(wifi_scan_obj.currentScanMode);
#ifdef HAS_GPS
gps_obj.main();
#endif
if ((!do_draw) && (wifi_scan_obj.currentScanMode != ESP_UPDATE))
{
cli_obj.main(currentTime);
#ifdef HAS_SCREEN
display_obj.main(wifi_scan_obj.currentScanMode);
#endif
wifi_scan_obj.main(currentTime);
//evil_portal_obj.main(wifi_scan_obj.currentScanMode);
#ifdef WRITE_PACKETS_SERIAL
buffer_obj.forceSaveSerial();
#elif defined(HAS_SD)
sd_obj.main();
#else
return;
#endif
#ifdef HAS_BATTERY
battery_obj.main(currentTime);
temp_obj.main(currentTime);
#endif
settings_obj.main(currentTime);
if (((wifi_scan_obj.currentScanMode != WIFI_PACKET_MONITOR) && (wifi_scan_obj.currentScanMode != WIFI_SCAN_EAPOL)) ||
(mini)) {
#ifdef HAS_SCREEN
menu_function_obj.main(currentTime);
#endif
//cli_obj.main(currentTime);
}
#ifdef MARAUDER_FLIPPER
flipper_led.main();
#elif defined(XIAO_ESP32_S3)
xiao_led.main();
#else
led_obj.main(currentTime);
#endif
//if (wifi_scan_obj.currentScanMode == OTA_UPDATE)
// web_obj.main();
#ifdef HAS_SCREEN
delay(1);
#else
delay(50);
#endif
}
#ifdef HAS_SCREEN
else if ((display_obj.draw_tft) &&
(wifi_scan_obj.currentScanMode != OTA_UPDATE))
{
display_obj.drawStylus();
}
#ifdef WRITE_PACKETS_SERIAL
buffer_obj.forceSaveSerial();
#elif defined(HAS_SD)
sd_obj.main();
#else
return;
#endif
else if (wifi_scan_obj.currentScanMode == ESP_UPDATE) {
#ifdef HAS_BATTERY
battery_obj.main(currentTime);
//temp_obj.main(currentTime);
#endif
settings_obj.main(currentTime);
if (((wifi_scan_obj.currentScanMode != WIFI_PACKET_MONITOR) && (wifi_scan_obj.currentScanMode != WIFI_SCAN_EAPOL)) ||
(mini)) {
#ifdef HAS_SCREEN
menu_function_obj.main(currentTime);
#endif
//cli_obj.main(currentTime);
}
#ifdef MARAUDER_FLIPPER
flipper_led.main();
#elif defined(XIAO_ESP32_S3)
xiao_led.main();
#else
led_obj.main(currentTime);
#endif
//if (wifi_scan_obj.currentScanMode == OTA_UPDATE)
// web_obj.main();
#ifdef HAS_SCREEN
delay(1);
#else
delay(50);
#endif
//}
/*else if (wifi_scan_obj.currentScanMode == ESP_UPDATE) {
#ifdef HAS_SCREEN
display_obj.main(wifi_scan_obj.currentScanMode);
menu_function_obj.main(currentTime);
@@ -435,5 +454,5 @@ void loop()
//cli_obj.main(currentTime);
delay(1);
}
}*/
}

View File

@@ -1,135 +0,0 @@
#include "esp_interface.h"
HardwareSerial MySerial(1);
void EspInterface::begin() {
pinMode(ESP_RST, OUTPUT);
pinMode(ESP_ZERO, OUTPUT);
delay(100);
digitalWrite(ESP_ZERO, HIGH);
Serial.println("Checking for ESP8266...");
MySerial.begin(BAUD, SERIAL_8N1, 27, 26);
delay(100);
#ifdef HAS_SCREEN
display_obj.tft.println("Checking for ESP8266...");
#endif
this->bootRunMode();
delay(500);
while (MySerial.available())
MySerial.read();
MySerial.write("PING");
delay(2000);
String display_string = "";
while (MySerial.available()) {
display_string.concat((char)MySerial.read());
}
display_string.trim();
Serial.println("\nDisplay string: " + (String)display_string);
if (display_string == "ESP8266 Pong") {
#ifdef HAS_SCREEN
display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK);
display_obj.tft.println("ESP8266 Found!");
display_obj.tft.setTextColor(TFT_CYAN, TFT_BLACK);
#endif
Serial.println("ESP8266 Found!");
this->supported = true;
}
else {
#ifdef HAS_SCREEN
display_obj.tft.setTextColor(TFT_RED, TFT_BLACK);
display_obj.tft.println("ESP8266 Not Found");
display_obj.tft.setTextColor(TFT_CYAN, TFT_BLACK);
#endif
}
this->initTime = millis();
}
void EspInterface::RunUpdate() {
this->bootProgramMode();
#ifdef HAS_SCREEN
display_obj.tft.setTextWrap(true);
display_obj.tft.setFreeFont(NULL);
display_obj.tft.setCursor(0, 100);
display_obj.tft.setTextSize(1);
display_obj.tft.setTextColor(TFT_GREEN);
display_obj.tft.println("Waiting for serial data...");
display_obj.tft.setTextColor(TFT_WHITE);
#endif
}
void EspInterface::bootProgramMode() {
Serial.println("[!] Setting ESP12 in program mode...");
digitalWrite(ESP_ZERO, LOW);
delay(100);
digitalWrite(ESP_RST, LOW);
delay(100);
digitalWrite(ESP_RST, HIGH);
delay(100);
digitalWrite(ESP_ZERO, HIGH);
Serial.println("[!] Complete");
Serial.end();
Serial.begin(57600);
}
void EspInterface::bootRunMode() {
Serial.end();
Serial.begin(115200);
Serial.println("[!] Setting ESP12 in run mode...");
digitalWrite(ESP_ZERO, HIGH);
delay(100);
digitalWrite(ESP_RST, LOW);
delay(100);
digitalWrite(ESP_RST, HIGH);
delay(100);
digitalWrite(ESP_ZERO, HIGH);
Serial.println("[!] Complete");
}
void EspInterface::program() {
if (MySerial.available()) {
Serial.write((uint8_t)MySerial.read());
}
if (Serial.available()) {
#ifdef HAS_SCREEN
display_obj.tft.print(".");
#endif
while (Serial.available()) {
MySerial.write((uint8_t)Serial.read());
}
}
}
void EspInterface::main(uint32_t current_time) {
if (current_time - this->initTime >= 1000) {
this->initTime = millis();
//MySerial.write("PING");
}
while (MySerial.available()) {
Serial.print((char)MySerial.read());
}
if (Serial.available()) {
MySerial.write((uint8_t)Serial.read());
}
}

View File

@@ -1,35 +0,0 @@
#ifndef esp_interface_h
#define esp_interface_h
#include "configs.h"
#ifdef HAS_SCREEN
#include "Display.h"
#endif
#include <HardwareSerial.h>
#define ESP_RST 14
#define ESP_ZERO 13
#define BAUD 115200
#ifdef HAS_SCREEN
extern Display display_obj;
#endif
class EspInterface {
public:
bool supported = false;
uint32_t initTime;
void RunUpdate();
void bootProgramMode();
void bootRunMode();
void begin();
void program();
void main(uint32_t current_time);
};
#endif

BIN
mechanical/.DS_Store vendored Normal file

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 613 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

BIN
pictures/icons/gps_16.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
pictures/icons/gps_22.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

6
pictures/xbm/gps_16.xbm Normal file
View File

@@ -0,0 +1,6 @@
#define f5dc88022d18492ea6769b98921e0a5aUvT7HPFFeGcrDDT7_width 16
#define f5dc88022d18492ea6769b98921e0a5aUvT7HPFFeGcrDDT7_height 16
static char f5dc88022d18492ea6769b98921e0a5aUvT7HPFFeGcrDDT7_bits[] = {
0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xF5, 0xEF, 0xEE, 0x57, 0xF7, 0x2F, 0xFA,
0x1F, 0xFC, 0x0F, 0xDE, 0x17, 0xD5, 0xBB, 0xD6, 0xDD, 0xDB, 0xEB, 0xEC,
0xF7, 0xF7, 0x7F, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, };

9
pictures/xbm/gps_22.xbm Normal file
View File

@@ -0,0 +1,9 @@
#define 824c3668a0844210c964e12f83c144e4dy8xmxKsVnnbTEOb_width 22
#define 824c3668a0844210c964e12f83c144e4dy8xmxKsVnnbTEOb_height 22
static char 824c3668a0844210c964e12f83c144e4dy8xmxKsVnnbTEOb_bits[] = {
0xFF, 0xFF, 0x3F, 0xFF, 0xBF, 0x3F, 0xFF, 0x5F, 0x3F, 0xFF, 0xEF, 0x3E,
0xFF, 0xF7, 0x3D, 0xBF, 0xFA, 0x3E, 0x5F, 0x7C, 0x3F, 0x3F, 0xB8, 0x3F,
0x1F, 0xD0, 0x3F, 0x3F, 0xE0, 0x3F, 0x5F, 0xF0, 0x3F, 0xEF, 0xE8, 0x3F,
0xF7, 0xE5, 0x3B, 0xFB, 0xDE, 0x3A, 0x7D, 0xFF, 0x3A, 0xBB, 0x7F, 0x3B,
0xD7, 0x9F, 0x3D, 0xEF, 0xFF, 0x3E, 0xFF, 0x0F, 0x3F, 0xFF, 0xFF, 0x3F,
0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x3F, };