mirror of
https://github.com/justcallmekoko/ESP32Marauder.git
synced 2025-12-08 05:41:00 -08:00
Compare commits
95 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ae12f5f9a5 | ||
|
|
73ba7747eb | ||
|
|
c76718b21e | ||
|
|
6c6e0aa5c3 | ||
|
|
7d64840128 | ||
|
|
e54e291bfd | ||
|
|
8a204162ae | ||
|
|
a153661457 | ||
|
|
efbeb549ee | ||
|
|
52c44d69c2 | ||
|
|
3375672ab5 | ||
|
|
a7efc0218d | ||
|
|
4bde27ba5c | ||
|
|
d7863ee7d0 | ||
|
|
9132a2891b | ||
|
|
9764d7dd52 | ||
|
|
3ef85f8d68 | ||
|
|
9f6df790aa | ||
|
|
6921c0f41d | ||
|
|
92541eb1f3 | ||
|
|
5543e1b4b1 | ||
|
|
58a8ba971c | ||
|
|
5b515d8767 | ||
|
|
17dc195b0d | ||
|
|
b651def518 | ||
|
|
e0b13fd9b3 | ||
|
|
22c4c7d860 | ||
|
|
9913d058fb | ||
|
|
182c988f3c | ||
|
|
34b2496030 | ||
|
|
74fa39faf3 | ||
|
|
23dc23cceb | ||
|
|
657d37a30a | ||
|
|
94bc2163ac | ||
|
|
9bf54f065b | ||
|
|
0186f0a45c | ||
|
|
2598eae1df | ||
|
|
aa601e1bee | ||
|
|
b136ad20e0 | ||
|
|
3e900e75a9 | ||
|
|
4ae4d62a64 | ||
|
|
fdd9ade442 | ||
|
|
3d58f29231 | ||
|
|
985ac8ac81 | ||
|
|
af389a7aa2 | ||
|
|
5723ca09c0 | ||
|
|
f6c77beeb3 | ||
|
|
0e44b2d4fa | ||
|
|
e52ae0c505 | ||
|
|
bf9f2fee66 | ||
|
|
9f9cbc313d | ||
|
|
e7bdaa5d44 | ||
|
|
157ae7a3c8 | ||
|
|
e456f032a0 | ||
|
|
748123d525 | ||
|
|
58882a4468 | ||
|
|
8024fe8d80 | ||
|
|
fb415a49c3 | ||
|
|
68d3e40966 | ||
|
|
53601dd48a | ||
|
|
84f01dfca8 | ||
|
|
449183a4da | ||
|
|
96a344d214 | ||
|
|
83f61faea6 | ||
|
|
4b3967dd18 | ||
|
|
5a4aedd5a7 | ||
|
|
c3f7b8d455 | ||
|
|
e9f21c5e79 | ||
|
|
7e37ef933e | ||
|
|
15b091fb1e | ||
|
|
648bc49db6 | ||
|
|
00d81ad86b | ||
|
|
f8c4c83689 | ||
|
|
9bff0f3047 | ||
|
|
9c62093a74 | ||
|
|
d662431f08 | ||
|
|
9eca388ea8 | ||
|
|
0eed111177 | ||
|
|
9716c8d348 | ||
|
|
2735fccf6a | ||
|
|
35821deddf | ||
|
|
873643619d | ||
|
|
0e1e8cd832 | ||
|
|
130bd26225 | ||
|
|
7eef1910db | ||
|
|
517c30d27e | ||
|
|
bd53320122 | ||
|
|
c7e39744f3 | ||
|
|
dc0f25f1b8 | ||
|
|
907a2af570 | ||
|
|
9e4343b77d | ||
|
|
e54a2b0e3e | ||
|
|
d460273c91 | ||
|
|
fcfeeb3930 | ||
|
|
86cccd7f02 |
42
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
42
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
**Marauder (please complete the following information if applicable):**
|
||||
- Firmware version: [e.g. v0.9.17]
|
||||
- Hardware version: [e.g. OG]
|
||||
|
||||
**Desktop (please complete the following information if applicable):**
|
||||
- OS: [e.g. iOS]
|
||||
- Browser [e.g. chrome, safari]
|
||||
- Version [e.g. 22]
|
||||
|
||||
**Smartphone (please complete the following information if applicable):**
|
||||
- Device: [e.g. iPhone6]
|
||||
- OS: [e.g. iOS8.1]
|
||||
- Browser [e.g. stock browser, safari]
|
||||
- Version [e.g. 22]
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
||||
5
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
5
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
blank_issues_enabled: true
|
||||
contact_links:
|
||||
- name: Need help?
|
||||
url: https://discord.gg/w5JmasxvKA
|
||||
about: For any questions regarding troubleshooting or use of the Marauder firmware
|
||||
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
||||
96
.github/workflows/build_push.yml
vendored
96
.github/workflows/build_push.yml
vendored
@@ -96,20 +96,24 @@ jobs:
|
||||
with:
|
||||
sketch-names: MarauderOTA.ino
|
||||
arduino-board-fqbn: esp32:esp32:esp32s2
|
||||
platform-url: https://github.com/espressif/arduino-esp32/releases/download/2.0.0-rc1/package_esp32_dev_index.json
|
||||
platform-url: https://github.com/espressif/arduino-esp32/releases/download/2.0.3/package_esp32_dev_index.json
|
||||
|
||||
- name: Replace SD lib
|
||||
run: |
|
||||
rm -rf /home/runner/.arduino15/packages/esp32/hardware/esp32/2.0.0-rc1/libraries/SD
|
||||
cp -R /home/runner/work/ESP32Marauder/ESP32Marauder/2.0.4arduino-esp32/libraries/SD /home/runner/.arduino15/packages/esp32/hardware/esp32/2.0.0-rc1/libraries/SD
|
||||
ls -la /home/runner/.arduino15/packages/esp32/hardware/esp32/2.0.0-rc1/libraries/SD
|
||||
rm -rf /home/runner/.arduino15/packages/esp32/hardware/esp32/2.0.3/libraries/SD
|
||||
cp -R /home/runner/work/ESP32Marauder/ESP32Marauder/2.0.4arduino-esp32/libraries/SD /home/runner/.arduino15/packages/esp32/hardware/esp32/2.0.3/libraries/SD
|
||||
ls -la /home/runner/.arduino15/packages/esp32/hardware/esp32/2.0.3/libraries/SD
|
||||
|
||||
- name: Modify platform.txt
|
||||
run: |
|
||||
echo "Chicken"
|
||||
for i in $(find /home/runner/.arduino15/packages/esp32/hardware/esp32/ -name "platform.txt"); do
|
||||
sed -i 's/compiler.c.elf.libs.esp32c3=/compiler.c.elf.libs.esp32c3=-zmuldefs /' "$i"
|
||||
sed -i 's/compiler.c.elf.libs.esp32s3=/compiler.c.elf.libs.esp32s3=-zmuldefs /' "$i"
|
||||
sed -i 's/compiler.c.elf.libs.esp32s2=/compiler.c.elf.libs.esp32s2=-zmuldefs /' "$i"
|
||||
sed -i 's/compiler.c.elf.libs.esp32=/compiler.c.elf.libs.esp32=-zmuldefs /' "$i"
|
||||
cat "$i" | grep compiler.c.elf.libs.esp32c3
|
||||
cat "$i" | grep compiler.c.elf.libs.esp32s3
|
||||
cat "$i" | grep compiler.c.elf.libs.esp32s2
|
||||
cat "$i" | grep compiler.c.elf.libs.esp32
|
||||
done
|
||||
@@ -118,15 +122,24 @@ jobs:
|
||||
uses: ArminJo/arduino-test-compile@v3.2.0
|
||||
with:
|
||||
sketch-names: esp32_marauder.ino
|
||||
arduino-board-fqbn: esp32:esp32:esp32s2:PartitionScheme=min_spiffs,FlashSize=16M,PSRAM=enabled
|
||||
#platform-url: https://github.com/espressif/arduino-esp32/releases/download/2.0.0-rc1/package_esp32_dev_index.json
|
||||
arduino-board-fqbn: esp32:esp32:esp32s2:PartitionScheme=min_spiffs,FlashSize=4M,PSRAM=enabled
|
||||
extra-arduino-cli-args: "--warnings none"
|
||||
#extra-arduino-lib-install-args: "-zmuldefs"
|
||||
|
||||
- name: Rename Marauder Flipper bin
|
||||
run: |
|
||||
mv ./esp32_marauder/build/esp32.esp32.esp32s2/esp32_marauder.ino.bin ./esp32_marauder/build/esp32.esp32.esp32s2/esp32_marauder.flipper.bin
|
||||
|
||||
- name: Build Marauder for Flipper Zero Multi Board
|
||||
uses: ArminJo/arduino-test-compile@v3.2.0
|
||||
with:
|
||||
sketch-names: esp32_marauder.ino
|
||||
arduino-board-fqbn: esp32:esp32:esp32s3:PartitionScheme=min_spiffs,FlashSize=8M,PSRAM=enabled
|
||||
extra-arduino-cli-args: "--warnings none"
|
||||
|
||||
- name: Rename Marauder Multi Board bin
|
||||
run: |
|
||||
mv ./esp32_marauder/build/esp32.esp32.esp32s3/esp32_marauder.ino.bin ./esp32_marauder/build/esp32.esp32.esp32s3/esp32_marauder.multiboardS3.bin
|
||||
|
||||
- name: Configure TFT_eSPI and configs.h for OG Marauder
|
||||
run: |
|
||||
pwd
|
||||
@@ -139,15 +152,14 @@ jobs:
|
||||
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
|
||||
|
||||
- name: Build Marauder for OG Marauder
|
||||
uses: ArminJo/arduino-test-compile@v3.2.0
|
||||
with:
|
||||
sketch-names: esp32_marauder.ino
|
||||
arduino-board-fqbn: esp32:esp32:d32:PartitionScheme=min_spiffs
|
||||
#platform-url: https://github.com/espressif/arduino-esp32/releases/download/2.0.0-rc1/package_esp32_dev_index.json
|
||||
extra-arduino-cli-args: "--warnings none"
|
||||
#extra-arduino-lib-install-args: "-zmuldefs"
|
||||
|
||||
- name: Rename OG Marauder bin
|
||||
run: |
|
||||
@@ -163,15 +175,14 @@ jobs:
|
||||
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
|
||||
|
||||
- name: Build Marauder for v6 Marauder
|
||||
uses: ArminJo/arduino-test-compile@v3.2.0
|
||||
with:
|
||||
sketch-names: esp32_marauder.ino
|
||||
arduino-board-fqbn: esp32:esp32:d32:PartitionScheme=min_spiffs
|
||||
#platform-url: https://github.com/espressif/arduino-esp32/releases/download/2.0.0-rc1/package_esp32_dev_index.json
|
||||
extra-arduino-cli-args: "--warnings none"
|
||||
#extra-arduino-lib-install-args: "-zmuldefs"
|
||||
|
||||
- name: Rename v6 Marauder bin
|
||||
run: |
|
||||
@@ -187,15 +198,14 @@ jobs:
|
||||
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
|
||||
|
||||
- name: Build Marauder for Marauder Kit
|
||||
uses: ArminJo/arduino-test-compile@v3.2.0
|
||||
with:
|
||||
sketch-names: esp32_marauder.ino
|
||||
arduino-board-fqbn: esp32:esp32:d32:PartitionScheme=min_spiffs
|
||||
#platform-url: https://github.com/espressif/arduino-esp32/releases/download/2.0.0-rc1/package_esp32_dev_index.json
|
||||
extra-arduino-cli-args: "--warnings none"
|
||||
#extra-arduino-lib-install-args: "-zmuldefs"
|
||||
|
||||
- name: Rename Marauder Kit bin
|
||||
run: |
|
||||
@@ -211,19 +221,39 @@ jobs:
|
||||
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
|
||||
|
||||
- name: Build Marauder for Marauder Mini
|
||||
uses: ArminJo/arduino-test-compile@v3.2.0
|
||||
with:
|
||||
sketch-names: esp32_marauder.ino
|
||||
arduino-board-fqbn: esp32:esp32:d32:PartitionScheme=min_spiffs
|
||||
#platform-url: https://github.com/espressif/arduino-esp32/releases/download/2.0.0-rc1/package_esp32_dev_index.json
|
||||
extra-arduino-cli-args: "--warnings none"
|
||||
#extra-arduino-lib-install-args: "-zmuldefs"
|
||||
|
||||
- name: Rename Marauder Mini bin
|
||||
run: |
|
||||
mv ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.ino.bin ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.mini.bin
|
||||
|
||||
- name: Configure TFT_eSPI and configs.h for ESP32 LDDB
|
||||
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_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
|
||||
|
||||
- name: Build Marauder for ESP32 LDDB
|
||||
uses: ArminJo/arduino-test-compile@v3.2.0
|
||||
with:
|
||||
sketch-names: esp32_marauder.ino
|
||||
arduino-board-fqbn: esp32:esp32:d32:PartitionScheme=min_spiffs
|
||||
extra-arduino-cli-args: "--warnings none"
|
||||
|
||||
- name: Rename Marauder ESP32 LDDB bin
|
||||
run: |
|
||||
mv ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.ino.bin ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.esp32_lddb.bin
|
||||
|
||||
- name: Display finished bins
|
||||
run: |
|
||||
@@ -236,6 +266,13 @@ jobs:
|
||||
path: ./esp32_marauder/build/esp32.esp32.esp32s2/esp32_marauder.flipper.bin
|
||||
retention-days: 5
|
||||
|
||||
- name: 'Upload MultiboardS3 Artifact'
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: esp32_marauder.multiboardS3.bin
|
||||
path: ./esp32_marauder/build/esp32.esp32.esp32s3/esp32_marauder.multiboardS3.bin
|
||||
retention-days: 5
|
||||
|
||||
- name: 'Upload OG Artifact'
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
@@ -264,6 +301,13 @@ jobs:
|
||||
path: ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.mini.bin
|
||||
retention-days: 5
|
||||
|
||||
- name: 'Upload ESP32 LDDB Artifact'
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: esp32_marauder.mini.bin
|
||||
path: ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.esp32_lddb.bin
|
||||
retention-days: 5
|
||||
|
||||
- name: Create Release
|
||||
id: create_release
|
||||
uses: actions/create-release@v1
|
||||
@@ -286,6 +330,17 @@ jobs:
|
||||
asset_name: esp32_marauder.flipper.bin
|
||||
asset_content_type: application/bin
|
||||
|
||||
- name: Upload MultiboardS3 Asset
|
||||
id: upload-mutliboardS3-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.esp32s3/esp32_marauder.multiboardS3.bin
|
||||
asset_name: esp32_marauder.mutliboardS3.bin
|
||||
asset_content_type: application/bin
|
||||
|
||||
- name: Upload OG Asset
|
||||
id: upload-og-release-asset
|
||||
uses: actions/upload-release-asset@v1
|
||||
@@ -329,3 +384,14 @@ jobs:
|
||||
asset_path: ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.mini.bin
|
||||
asset_name: esp32_marauder.mini.bin
|
||||
asset_content_type: application/bin
|
||||
|
||||
- name: Upload ESP32 LDDB Asset
|
||||
id: upload-esp32-lddb-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.esp32_lddb.bin
|
||||
asset_name: esp32_marauder.esp32_lddb.bin
|
||||
asset_content_type: application/bin
|
||||
|
||||
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
|
||||
.vscode/arduino.json
|
||||
.vscode/c_cpp_properties.json
|
||||
24
.gitmodules
vendored
Normal file
24
.gitmodules
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
[submodule "esp32_marauder/libraries/lv_arduino"]
|
||||
path = esp32_marauder/libraries/lv_arduino
|
||||
url = git@github.com:lvgl/lv_arduino.git
|
||||
[submodule "esp32_marauder/libraries/LinkedList"]
|
||||
path = esp32_marauder/libraries/LinkedList
|
||||
url = git@github.com:ivanseidel/LinkedList.git
|
||||
[submodule "esp32_marauder/libraries/TFT_eSPI"]
|
||||
path = esp32_marauder/libraries/TFT_eSPI
|
||||
url = git@github.com:justcallmekoko/TFT_eSPI.git
|
||||
[submodule "esp32_marauder/libraries/JPEGDecoder"]
|
||||
path = esp32_marauder/libraries/JPEGDecoder
|
||||
url = git@github.com:Bodmer/JPEGDecoder.git
|
||||
[submodule "esp32_marauder/libraries/NimBLE-Arduino"]
|
||||
path = esp32_marauder/libraries/NimBLE-Arduino
|
||||
url = git@github.com:h2zero/NimBLE-Arduino.git
|
||||
[submodule "esp32_marauder/libraries/Adafruit_NeoPixel"]
|
||||
path = esp32_marauder/libraries/Adafruit_NeoPixel
|
||||
url = git@github.com:adafruit/Adafruit_NeoPixel.git
|
||||
[submodule "esp32_marauder/libraries/ArduinoJson"]
|
||||
path = esp32_marauder/libraries/ArduinoJson
|
||||
url = git@github.com:bblanchon/ArduinoJson.git
|
||||
[submodule "esp32_marauder/libraries/SwitchLib"]
|
||||
path = esp32_marauder/libraries/SwitchLib
|
||||
url = git@github.com:justcallmekoko/SwitchLib.git
|
||||
BIN
FlashFiles/FlipperZeroDevBoard/boot_app0.bin
Normal file
BIN
FlashFiles/FlipperZeroDevBoard/boot_app0.bin
Normal file
Binary file not shown.
BIN
FlashFiles/FlipperZeroDevBoard/esp32_marauder.ino.bootloader.bin
Normal file
BIN
FlashFiles/FlipperZeroDevBoard/esp32_marauder.ino.bootloader.bin
Normal file
Binary file not shown.
BIN
FlashFiles/FlipperZeroDevBoard/esp32_marauder.ino.partitions.bin
Normal file
BIN
FlashFiles/FlipperZeroDevBoard/esp32_marauder.ino.partitions.bin
Normal file
Binary file not shown.
BIN
FlashFiles/FlipperZeroMultiBoardS3/boot_app0.bin
Normal file
BIN
FlashFiles/FlipperZeroMultiBoardS3/boot_app0.bin
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
1
FlashFiles/MarauderV4/README.md
Normal file
1
FlashFiles/MarauderV4/README.md
Normal file
@@ -0,0 +1 @@
|
||||
..\esptool.exe --chip esp32 --port COM4 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size detect 0xe000 boot_app0.bin 0x1000 esp32_marauder.ino.bootloader.bin 0x10000 esp32_marauder_v0_9_17_20221019_old_hardware.bin 0x8000 esp32_marauder.ino.partitions.bin
|
||||
BIN
FlashFiles/MarauderV4/boot_app0.bin
Normal file
BIN
FlashFiles/MarauderV4/boot_app0.bin
Normal file
Binary file not shown.
BIN
FlashFiles/MarauderV4/esp32_marauder.ino.bootloader.bin
Normal file
BIN
FlashFiles/MarauderV4/esp32_marauder.ino.bootloader.bin
Normal file
Binary file not shown.
BIN
FlashFiles/MarauderV4/esp32_marauder.ino.partitions.bin
Normal file
BIN
FlashFiles/MarauderV4/esp32_marauder.ino.partitions.bin
Normal file
Binary file not shown.
BIN
FlashFiles/esptool.exe
Normal file
BIN
FlashFiles/esptool.exe
Normal file
Binary file not shown.
Binary file not shown.
BIN
PCBs/FlipperZero/References/1.PNG
Normal file
BIN
PCBs/FlipperZero/References/1.PNG
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 184 KiB |
BIN
PCBs/FlipperZero/References/2.PNG
Normal file
BIN
PCBs/FlipperZero/References/2.PNG
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 82 KiB |
BIN
PCBs/FlipperZero/References/3.PNG
Normal file
BIN
PCBs/FlipperZero/References/3.PNG
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 96 KiB |
@@ -0,0 +1,35 @@
|
||||
EESchema-LIBRARY Version 2.3
|
||||
#encoding utf-8
|
||||
#SamacSys ECAD Model 3220-10-0300-00
|
||||
#/13184465/987070/2.49/10/3/Connector
|
||||
DEF 3220-10-0300-00 J 0 30 Y Y 1 F N
|
||||
F0 "J" 750 300 50 H V L CNN
|
||||
F1 "3220-10-0300-00" 750 200 50 H V L CNN
|
||||
F2 "322010030000" 750 100 50 H I L CNN
|
||||
F3 "http://www.cnctech.us/pdfs/3220-XX-0300-00-TR_.PDF" 750 0 50 H I L CNN
|
||||
F4 "Conn Shrouded Header (4 Sides) HDR 10 POS 1.27mm Solder ST SMD" 750 -100 50 H I L CNN "Description"
|
||||
F5 "5.45" 750 -200 50 H I L CNN "Height"
|
||||
F6 "CNC Tech" 750 -300 50 H I L CNN "Manufacturer_Name"
|
||||
F7 "3220-10-0300-00" 750 -400 50 H I L CNN "Manufacturer_Part_Number"
|
||||
F8 "" 750 -500 50 H I L CNN "Mouser Part Number"
|
||||
F9 "" 750 -600 50 H I L CNN "Mouser Price/Stock"
|
||||
F10 "3220-10-0300-00" 750 -700 50 H I L CNN "Arrow Part Number"
|
||||
F11 "https://www.arrow.com/en/products/3220-10-0300-00/cnc-tech-llc?region=nac" 750 -800 50 H I L CNN "Arrow Price/Stock"
|
||||
F12 "" 750 -900 50 H I L CNN "Mouser Testing Part Number"
|
||||
F13 "" 750 -1000 50 H I L CNN "Mouser Testing Price/Stock"
|
||||
DRAW
|
||||
X 1 1 0 0 200 R 50 50 0 0 P
|
||||
X 2 2 900 0 200 L 50 50 0 0 P
|
||||
X 3 3 0 -100 200 R 50 50 0 0 P
|
||||
X 4 4 900 -100 200 L 50 50 0 0 P
|
||||
X 5 5 0 -200 200 R 50 50 0 0 P
|
||||
X 6 6 900 -200 200 L 50 50 0 0 P
|
||||
X 7 7 0 -300 200 R 50 50 0 0 P
|
||||
X 8 8 900 -300 200 L 50 50 0 0 P
|
||||
X 9 9 0 -400 200 R 50 50 0 0 P
|
||||
X 10 10 900 -400 200 L 50 50 0 0 P
|
||||
P 5 0 1 6 200 100 700 100 700 -500 200 -500 200 100 N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
||||
@@ -0,0 +1,47 @@
|
||||
(module "322010030000" (layer F.Cu)
|
||||
(descr "3220-10-0300-00-1")
|
||||
(tags "Connector")
|
||||
(attr smd)
|
||||
(fp_text reference J** (at 0.000 -0) (layer F.SilkS)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text user %R (at 0.000 -0) (layer F.Fab)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text value "322010030000" (at 0.000 -0) (layer F.SilkS) hide
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_line (start -6.35 -2.5) (end 6.35 -2.5) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 6.35 -2.5) (end 6.35 2.5) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 6.35 2.5) (end -6.35 2.5) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -6.35 2.5) (end -6.35 -2.5) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -7.35 -4.15) (end 7.35 -4.15) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start 7.35 -4.15) (end 7.35 4.15) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start 7.35 4.15) (end -7.35 4.15) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start -7.35 4.15) (end -7.35 -4.15) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start -3.4 -2.5) (end -6.35 -2.5) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start -6.35 -2.5) (end -6.35 2.5) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start -6.35 2.5) (end -3.4 2.5) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start -2.6 3.6) (end -2.6 3.6) (layer F.SilkS) (width 0.1))
|
||||
(fp_line (start -2.5 3.6) (end -2.5 3.6) (layer F.SilkS) (width 0.1))
|
||||
(fp_line (start 3.4 -2.5) (end 6.35 -2.5) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 6.35 -2.5) (end 6.35 2.5) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 6.35 2.5) (end 3.4 2.5) (layer F.SilkS) (width 0.2))
|
||||
(fp_arc (start -2.55 3.6) (end -2.600 3.6) (angle -180) (layer F.SilkS) (width 0.1))
|
||||
(fp_arc (start -2.55 3.6) (end -2.500 3.6) (angle -180) (layer F.SilkS) (width 0.1))
|
||||
(pad 1 smd rect (at -2.540 1.765 0) (size 0.650 2.770) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 2 smd rect (at -2.540 -1.765 0) (size 0.650 2.770) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 3 smd rect (at -1.270 1.765 0) (size 0.650 2.770) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 4 smd rect (at -1.270 -1.765 0) (size 0.650 2.770) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 5 smd rect (at 0.000 1.765 0) (size 0.650 2.770) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 6 smd rect (at 0.000 -1.765 0) (size 0.650 2.770) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 7 smd rect (at 1.270 1.765 0) (size 0.650 2.770) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 8 smd rect (at 1.270 -1.765 0) (size 0.650 2.770) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 9 smd rect (at 2.540 1.765 0) (size 0.650 2.770) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 10 smd rect (at 2.540 -1.765 0) (size 0.650 2.770) (layers F.Cu F.Paste F.Mask))
|
||||
(model 3220-10-0300-00.stp
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
@@ -0,0 +1,51 @@
|
||||
(module "503398-1892" (layer F.Cu)
|
||||
(descr "503398-1892")
|
||||
(tags "Connector")
|
||||
(attr smd)
|
||||
(fp_text reference J** (at 5.996 8.167) (layer F.SilkS)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text user %R (at 5.996 8.167) (layer F.Fab)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text value "503398-1892" (at 5.996 8.167) (layer F.SilkS) hide
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_line (start 0 0) (end 0 14.05) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start 0 14.05) (end 13.1 14.05) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start 13.1 14.05) (end 13.1 0) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start 0 0) (end 2.849 0) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start 13.1 0) (end 12.474 0) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start 12.474 0) (end 12.474 2.42) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start 12.474 2.42) (end 3.554 2.42) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start 2.849 0) (end 3.554 2.42) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start 0 0) (end 2.849 0) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 2.849 0) (end 3.554 2.42) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 3.554 2.42) (end 12.109 2.42) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 13.1 3.65) (end 13.1 10.65) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 0 2.65) (end 0 10.648) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 13.1 0) (end 12.474 0) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 7.5 14.05) (end 12.3 14.05) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 3.15 14.05) (end 5.8 14.05) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 0.74 14.05) (end 1.6 14.05) (layer F.SilkS) (width 0.2))
|
||||
(fp_circle (center 4.116 0.356) (end 4.116 0.41057) (layer F.SilkS) (width 0.2))
|
||||
(pad 1 smd rect (at 4.17 1.4 0) (size 0.7 1.1) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 2 smd rect (at 5.27 1.4 0) (size 0.7 1.1) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 3 smd rect (at 6.37 1.4 0) (size 0.7 1.1) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 4 smd rect (at 7.47 1.4 0) (size 0.7 1.1) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 5 smd rect (at 8.57 1.4 0) (size 0.7 1.1) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 6 smd rect (at 9.67 1.4 0) (size 0.7 1.1) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 7 smd rect (at 10.77 1.4 0) (size 0.7 1.1) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 8 smd rect (at 11.87 1.4 0) (size 0.7 1.1) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 9 smd rect (at 2.38 13.865 0) (size 0.9 0.93) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 10 smd rect (at 6.645 13.94 90) (size 0.78 1.05) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 11 smd rect (at 13.03 12.665 0) (size 0.7 3.33) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 12 smd rect (at 12.95 1.9 0) (size 0.86 2.8) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 13 smd rect (at 0.29 1.415 0) (size 1.14 1.83) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 14 smd rect (at 0.07 12.665 0) (size 0.7 3.33) (layers F.Cu F.Paste F.Mask))
|
||||
(model 503398-1892.stp
|
||||
(at (xyz 0.25787402325728 -0.31968503486453 0.02362204818275))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
35
PCBs/FlipperZero/WiFi-Devboard-Pro/Libraries/503398-1892.lib
Normal file
35
PCBs/FlipperZero/WiFi-Devboard-Pro/Libraries/503398-1892.lib
Normal file
@@ -0,0 +1,35 @@
|
||||
EESchema-LIBRARY Version 2.3
|
||||
#encoding utf-8
|
||||
#SamacSys ECAD Model 503398-1892
|
||||
#/269057/987070/2.49/10/4/Connector
|
||||
DEF 503398-1892 J 0 30 Y Y 1 F N
|
||||
F0 "J" 1550 300 50 H V L CNN
|
||||
F1 "503398-1892" 1550 200 50 H V L CNN
|
||||
F2 "503398-1892" 1550 100 50 H I L CNN
|
||||
F3 "http://www.molex.com/webdocs/datasheets/pdf/en-us//5033981892_MEMORY_CARD_SOCKET.pdf" 1550 0 50 H I L CNN
|
||||
F4 "MicroSD SMT Push-Push 1.28mm height MicroSD SMT Push-Push 1.28mm height" 1550 -100 50 H I L CNN "Description"
|
||||
F5 "" 1550 -200 50 H I L CNN "Height"
|
||||
F6 "Molex" 1550 -300 50 H I L CNN "Manufacturer_Name"
|
||||
F7 "503398-1892" 1550 -400 50 H I L CNN "Manufacturer_Part_Number"
|
||||
F8 "538-503398-1892" 1550 -500 50 H I L CNN "Mouser Part Number"
|
||||
F9 "https://www.mouser.co.uk/ProductDetail/Molex/503398-1892?qs=b0v8CoHHvSMxV%252BW12iKaSg%3D%3D" 1550 -600 50 H I L CNN "Mouser Price/Stock"
|
||||
F10 "" 1550 -700 50 H I L CNN "Arrow Part Number"
|
||||
F11 "" 1550 -800 50 H I L CNN "Arrow Price/Stock"
|
||||
F12 "" 1550 -900 50 H I L CNN "Mouser Testing Part Number"
|
||||
F13 "" 1550 -1000 50 H I L CNN "Mouser Testing Price/Stock"
|
||||
DRAW
|
||||
X DAT2 1 0 0 200 R 50 50 0 0 P
|
||||
X CD/DAT3 2 0 -100 200 R 50 50 0 0 P
|
||||
X CMD 3 0 -200 200 R 50 50 0 0 P
|
||||
X VDD 4 0 -300 200 R 50 50 0 0 P
|
||||
X CLK 5 0 -400 200 R 50 50 0 0 P
|
||||
X VSS 6 1700 0 200 L 50 50 0 0 P
|
||||
X DAT0 7 1700 -100 200 L 50 50 0 0 P
|
||||
X DAT1 8 1700 -200 200 L 50 50 0 0 P
|
||||
X DETECT_LEVER 9 1700 -300 200 L 50 50 0 0 P
|
||||
X DETECT_SWITCH 10 1700 -400 200 L 50 50 0 0 P
|
||||
P 5 0 1 6 200 100 1500 100 1500 -500 200 -500 200 100 N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
||||
@@ -0,0 +1,140 @@
|
||||
(module 503398-1892_MOL (layer F.Cu)
|
||||
(fp_text reference REF** (at 0 -5.7755) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness .15)))
|
||||
)
|
||||
(fp_text value 503398-1892_MOL (at 0 -5.7755) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness .15)))
|
||||
)
|
||||
(fp_text user "Copyright 2021 Accelerated Designs. All rights reserved." (at 0 0) (layer Cmts.User)
|
||||
(effects (font (size .127 .127) (thickness .002)))
|
||||
)
|
||||
(fp_text user "*" (at -4.92 -5.7755) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness .15)))
|
||||
)
|
||||
(fp_text user "*" (at -4.92 -5.7755) (layer F.Fab)
|
||||
(effects (font (size 1 1) (thickness .15)))
|
||||
)
|
||||
(fp_text user "*" (at -4.92 -5.7755) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness .15)))
|
||||
)
|
||||
(fp_text user "*" (at -4.92 -5.7755) (layer F.Fab)
|
||||
(effects (font (size 1 1) (thickness .15)))
|
||||
)
|
||||
(fp_line (start 6.803999 -7.4295) (end -6.803999 -7.4295) (layer F.CrtYd) (width .05))
|
||||
(fp_line (start -6.803999 -7.4295) (end -6.803999 7.4295) (layer F.CrtYd) (width .05))
|
||||
(fp_line (start -6.803999 7.4295) (end 6.803999 7.4295) (layer F.CrtYd) (width .05))
|
||||
(fp_line (start 6.803999 7.4295) (end 6.803999 -7.4295) (layer F.CrtYd) (width .05))
|
||||
(fp_line (start -2.38 -5.7755) (end -2.38 -12.6365) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -1.28 -5.7755) (end -1.28 -12.6365) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -2.38 -12.2555) (end -3.65 -12.2555) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -1.28 -12.2555) (end -.01 -12.2555) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -2.38 -12.2555) (end -2.634 -12.3825) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -2.38 -12.2555) (end -2.634 -12.1285) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -2.634 -12.3825) (end -2.634 -12.1285) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -1.28 -12.2555) (end -1.026 -12.3825) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -1.28 -12.2555) (end -1.026 -12.1285) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -1.026 -12.3825) (end -1.026 -12.1285) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -2.38 -5.7755) (end -9.831 -5.7755) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -1.28 -5.7755) (end -9.831 -5.7755) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -9.45 -5.7755) (end -9.45 -7.0455) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -9.45 -5.7755) (end -9.45 -4.5055) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -9.45 -5.7755) (end -9.577 -6.0295) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -9.45 -5.7755) (end -9.323 -6.0295) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -9.577 -6.0295) (end -9.323 -6.0295) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -9.45 -5.7755) (end -9.577 -5.5215) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -9.45 -5.7755) (end -9.323 -5.5215) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -9.577 -5.5215) (end -9.323 -5.5215) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -6.549999 7.1755) (end -6.549999 -17.7165) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 6.549999 7.1755) (end 6.549999 -17.7165) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -6.549999 -17.3355) (end 6.549999 -17.3355) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -6.549999 -17.3355) (end -6.295999 -17.4625) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -6.549999 -17.3355) (end -6.295999 -17.2085) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -6.295999 -17.4625) (end -6.295999 -17.2085) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 6.549999 -17.3355) (end 6.295999 -17.4625) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 6.549999 -17.3355) (end 6.295999 -17.2085) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 6.295999 -17.4625) (end 6.295999 -17.2085) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -6.549999 -7.1755) (end -19.631 -7.1755) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -6.549999 7.1755) (end -19.631 7.1755) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -19.25 -7.1755) (end -19.25 7.1755) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -19.25 -7.1755) (end -19.377 -6.9215) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -19.25 -7.1755) (end -19.123 -6.9215) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -19.377 -6.9215) (end -19.123 -6.9215) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -19.25 7.1755) (end -19.377 6.9215) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -19.25 7.1755) (end -19.123 6.9215) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -19.377 6.9215) (end -19.123 6.9215) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 0 -7.1755) (end 9.470999 -7.1755) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 0 -5.7755) (end 9.470999 -5.7755) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 9.089999 -7.1755) (end 9.089999 -8.4455) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 9.089999 -5.7755) (end 9.089999 -4.5055) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 9.089999 -7.1755) (end 8.962999 -7.4295) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 9.089999 -7.1755) (end 9.216999 -7.4295) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 8.962999 -7.4295) (end 9.216999 -7.4295) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 9.089999 -5.7755) (end 8.962999 -5.5215) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 9.089999 -5.7755) (end 9.216999 -5.5215) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 8.962999 -5.5215) (end 9.216999 -5.5215) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 0 -7.1755) (end 14.551 -7.1755) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 0 6.7645) (end 14.551 6.7645) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 14.17 -7.1755) (end 14.17 6.7645) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 14.17 -7.1755) (end 14.043 -6.9215) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 14.17 -7.1755) (end 14.297 -6.9215) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 14.043 -6.9215) (end 14.297 -6.9215) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 14.17 6.7645) (end 14.043 6.5105) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 14.17 6.7645) (end 14.297 6.5105) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 14.043 6.5105) (end 14.297 6.5105) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 0 -7.1755) (end 0 -15.1765) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 6.4 -5.2755) (end 6.4 -15.1765) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 0 -14.7955) (end 6.4 -14.7955) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 0 -14.7955) (end .254 -14.9225) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 0 -14.7955) (end .254 -14.6685) (layer Cmts.User) (width 0))
|
||||
(fp_line (start .254 -14.9225) (end .254 -14.6685) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 6.4 -14.7955) (end 6.146 -14.9225) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 6.4 -14.7955) (end 6.146 -14.6685) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 6.146 -14.9225) (end 6.146 -14.6685) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -6.26 -5.7605) (end -6.26 -12.6365) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 0 -7.1755) (end 0 -12.6365) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -6.26 -12.2555) (end 0 -12.2555) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -6.26 -12.2555) (end -6.006 -12.3825) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -6.26 -12.2555) (end -6.006 -12.1285) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -6.006 -12.3825) (end -6.006 -12.1285) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 0 -12.2555) (end -.254 -12.3825) (layer Cmts.User) (width 0))
|
||||
(fp_line (start 0 -12.2555) (end -.254 -12.1285) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -.254 -12.3825) (end -.254 -12.1285) (layer Cmts.User) (width 0))
|
||||
(fp_line (start -5.827036 7.3025) (end -4.914896 7.3025) (layer F.SilkS) (width .12))
|
||||
(fp_line (start 6.676999 3.493059) (end 6.676999 -3.54576) (layer F.SilkS) (width .12))
|
||||
(fp_line (start 6.676999 -7.3025) (end -6.676999 -7.3025) (layer F.SilkS) (width .12))
|
||||
(fp_line (start -6.676999 -7.3025) (end -6.676999 -7.00764) (layer F.SilkS) (width .12))
|
||||
(fp_line (start -6.549999 7.1755) (end 6.549999 7.1755) (layer F.Fab) (width .1))
|
||||
(fp_line (start 6.549999 7.1755) (end 6.549999 -7.1755) (layer F.Fab) (width .1))
|
||||
(fp_line (start 6.549999 -7.1755) (end -6.549999 -7.1755) (layer F.Fab) (width .1))
|
||||
(fp_line (start -6.549999 -7.1755) (end -6.549999 7.1755) (layer F.Fab) (width .1))
|
||||
(fp_line (start -.127 -7.0485) (end .127 -7.0485) (layer F.SilkS) (width .12))
|
||||
(fp_line (start .127 -7.0485) (end .127 -7.3025) (layer F.SilkS) (width .12))
|
||||
(fp_line (start .127 -7.3025) (end -.127 -7.3025) (layer F.SilkS) (width .12))
|
||||
(fp_line (start -.127 -7.3025) (end -.127 -7.0485) (layer F.SilkS) (width .12))
|
||||
(fp_line (start 0 -7.1755) (end 0 -7.1755) (layer F.Fab) (width .1))
|
||||
(fp_line (start 0 -7.1755) (end 0 -7.1755) (layer F.Fab) (width .1))
|
||||
(fp_line (start 0 -7.1755) (end 0 -7.1755) (layer F.Fab) (width .1))
|
||||
(fp_line (start 0 -7.1755) (end 0 -7.1755) (layer F.Fab) (width .1))
|
||||
(fp_line (start -3.425103 7.3025) (end -.510523 7.3025) (layer F.SilkS) (width .12))
|
||||
(fp_line (start 1.130522 7.3025) (end 5.827036 7.3025) (layer F.SilkS) (width .12))
|
||||
(fp_line (start -6.676999 -4.51336) (end -6.676999 3.493059) (layer F.SilkS) (width .12))
|
||||
(fp_line (start 6.676999 -7.00524) (end 6.676999 -7.3025) (layer F.SilkS) (width .12))
|
||||
(fp_line (start 6.803999 -7.4295) (end -6.803999 -7.4295) (layer F.CrtYd) (width .05))
|
||||
(fp_line (start -6.803999 -7.4295) (end -6.803999 7.4295) (layer F.CrtYd) (width .05))
|
||||
(fp_line (start -6.803999 7.4295) (end 6.803999 7.4295) (layer F.CrtYd) (width .05))
|
||||
(fp_line (start 6.803999 7.4295) (end 6.803999 -7.4295) (layer F.CrtYd) (width .05))
|
||||
(pad 1 smd rect (at -2.38 -5.7755) (size .7112 1.0922) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 2 smd rect (at -1.28 -5.7755) (size .7112 1.0922) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 3 smd rect (at -.18 -5.7755) (size .7112 1.0922) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 4 smd rect (at .920001 -5.7755) (size .7112 1.0922) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 5 smd rect (at 2.020001 -5.7755) (size .7112 1.0922) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 6 smd rect (at 3.120001 -5.7755) (size .7112 1.0922) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 7 smd rect (at 4.220002 -5.7755) (size .7112 1.0922) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 8 smd rect (at 5.32 -5.7755) (size .7112 1.0922) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 9 smd rect (at -4.169999 6.689499) (size .889 .9398) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 10 smd rect (at .309999 6.7645) (size 1.0414 .7874) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 11 smd rect (at -6.26 -5.7605) (size 1.143 1.8288) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 12 smd rect (at 6.4 -5.2755) (size .8636 2.794) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 13 smd rect (at -6.48 5.489499) (size .7112 3.3274) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 14 smd rect (at 6.48 5.489499) (size .7112 3.3274) (layers F.Cu F.Paste F.Mask))
|
||||
)
|
||||
32
PCBs/FlipperZero/WiFi-Devboard-Pro/Libraries/5033981892.lib
Normal file
32
PCBs/FlipperZero/WiFi-Devboard-Pro/Libraries/5033981892.lib
Normal file
@@ -0,0 +1,32 @@
|
||||
EESchema-LIBRARY Version 2.3 Date: 21-02-2013 11:13:20
|
||||
#encoding utf-8
|
||||
#
|
||||
# 5033981892
|
||||
#
|
||||
DEF 5033981892 J 0 10 Y Y 1 L N
|
||||
F0 "J" 1300 400 60 H V C CNN
|
||||
F1 "5033981892" 1300 300 60 H V C CNN
|
||||
F2 "503398-1892_MOL" 1300 240 60 H I C CNN
|
||||
F3 "~" 0 0 60 H V C CNN
|
||||
$FPLIST
|
||||
503398-1892_MOL
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
X DAT2 1 0 0 300 R 59 59 1 1 B
|
||||
X CD/DAT3 2 0 -100 300 R 59 59 1 1 U
|
||||
X CMD 3 0 -200 300 R 59 59 1 1 U
|
||||
X VDD 4 0 -300 300 R 59 59 1 1 W
|
||||
X CLK 5 0 -400 300 R 59 59 1 1 U
|
||||
X VSS 6 2600 -400 300 L 59 59 1 1 W
|
||||
X DAT0 7 2600 -300 300 L 59 59 1 1 B
|
||||
X DAT1 8 2600 -200 300 L 59 59 1 1 B
|
||||
X DETECT_LEVEL 9 2600 -100 300 L 59 59 1 1 U
|
||||
X DETECT_SWITCH 10 2600 0 300 L 59 59 1 1 U
|
||||
P 2 1 1 5 300 200 300 -600 N
|
||||
P 2 1 1 5 300 -600 2300 -600 N
|
||||
P 2 1 1 5 2300 -600 2300 200 N
|
||||
P 2 1 1 5 2300 200 300 200 N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
||||
@@ -0,0 +1,29 @@
|
||||
(module "CAPC1005X55N" (layer F.Cu)
|
||||
(descr "CC0402")
|
||||
(tags "Capacitor")
|
||||
(attr smd)
|
||||
(fp_text reference C** (at 0 0) (layer F.SilkS)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text user %R (at 0 0) (layer F.Fab)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text value "CAPC1005X55N" (at 0 0) (layer F.SilkS) hide
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_line (start -0.91 -0.46) (end 0.91 -0.46) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 0.91 -0.46) (end 0.91 0.46) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 0.91 0.46) (end -0.91 0.46) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -0.91 0.46) (end -0.91 -0.46) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -0.5 -0.25) (end 0.5 -0.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 0.5 -0.25) (end 0.5 0.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 0.5 0.25) (end -0.5 0.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -0.5 0.25) (end -0.5 -0.25) (layer F.Fab) (width 0.1))
|
||||
(pad 1 smd rect (at -0.46 0 0) (size 0.6 0.62) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 2 smd rect (at 0.46 0 0) (size 0.6 0.62) (layers F.Cu F.Paste F.Mask))
|
||||
(model CC0402KRX7R7BB104.stp
|
||||
(at (xyz -0.020472440193957 -0.011023622094177 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz -90 0 0))
|
||||
)
|
||||
)
|
||||
@@ -0,0 +1,29 @@
|
||||
(module "CAPC1005X60N" (layer F.Cu)
|
||||
(descr "CL05A105KA5NQNC")
|
||||
(tags "Capacitor")
|
||||
(attr smd)
|
||||
(fp_text reference C** (at 0 0) (layer F.SilkS)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text user %R (at 0 0) (layer F.Fab)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text value "CAPC1005X60N" (at 0 0) (layer F.SilkS) hide
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_line (start -0.92 -0.47) (end 0.92 -0.47) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 0.92 -0.47) (end 0.92 0.47) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 0.92 0.47) (end -0.92 0.47) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -0.92 0.47) (end -0.92 -0.47) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -0.5 -0.25) (end 0.5 -0.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 0.5 -0.25) (end 0.5 0.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 0.5 0.25) (end -0.5 0.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -0.5 0.25) (end -0.5 -0.25) (layer F.Fab) (width 0.1))
|
||||
(pad 1 smd rect (at -0.46 0 0) (size 0.62 0.64) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 2 smd rect (at 0.46 0 0) (size 0.62 0.64) (layers F.Cu F.Paste F.Mask))
|
||||
(model CL05A105KA5NQNC.stp
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
@@ -0,0 +1,30 @@
|
||||
EESchema-LIBRARY Version 2.3
|
||||
#encoding utf-8
|
||||
#SamacSys ECAD Model CC0402KRX7R7BB104
|
||||
#/319043/987070/2.49/2/4/Capacitor
|
||||
DEF CC0402KRX7R7BB104 C 0 30 Y Y 1 F N
|
||||
F0 "C" 350 250 50 H V L CNN
|
||||
F1 "CC0402KRX7R7BB104" 350 150 50 H V L CNN
|
||||
F2 "CAPC1005X55N" 350 50 50 H I L CNN
|
||||
F3 "http://www.datasheets360.com/pdf/-5354154806277341459" 350 -50 50 H I L CNN
|
||||
F4 "Cap 100nF 16V 0402 SMD 10% X7R Phycomp 100nF Multilayer Ceramic Capacitor (MLCC) 16 V dc +/-10% X7R dielectric Standard max op. temp. +125C" 350 -150 50 H I L CNN "Description"
|
||||
F5 "0.55" 350 -250 50 H I L CNN "Height"
|
||||
F6 "KEMET" 350 -350 50 H I L CNN "Manufacturer_Name"
|
||||
F7 "CC0402KRX7R7BB104" 350 -450 50 H I L CNN "Manufacturer_Part_Number"
|
||||
F8 "603-CC402KRX7R7BB104" 350 -550 50 H I L CNN "Mouser Part Number"
|
||||
F9 "https://www.mouser.co.uk/ProductDetail/YAGEO/CC0402KRX7R7BB104?qs=AgBp2OyFlx%252BSOyhfyS7hpw%3D%3D" 350 -650 50 H I L CNN "Mouser Price/Stock"
|
||||
F10 "CC0402KRX7R7BB104" 350 -750 50 H I L CNN "Arrow Part Number"
|
||||
F11 "https://www.arrow.com/en/products/cc0402krx7r7bb104/yageo?region=nac" 350 -850 50 H I L CNN "Arrow Price/Stock"
|
||||
F12 "" 350 -950 50 H I L CNN "Mouser Testing Part Number"
|
||||
F13 "" 350 -1050 50 H I L CNN "Mouser Testing Price/Stock"
|
||||
DRAW
|
||||
X ~ 1 0 0 200 R 50 50 0 0 P
|
||||
X ~ 2 500 0 200 L 50 50 0 0 P
|
||||
P 2 0 1 6 220 100 220 -100 N
|
||||
P 2 0 1 6 280 100 280 -100 N
|
||||
P 2 0 1 6 200 0 220 0 N
|
||||
P 2 0 1 6 280 0 300 0 N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
||||
@@ -0,0 +1,30 @@
|
||||
EESchema-LIBRARY Version 2.3
|
||||
#encoding utf-8
|
||||
#SamacSys ECAD Model CL05A105KA5NQNC
|
||||
#/1601150/987070/2.49/2/3/Capacitor
|
||||
DEF CL05A105KA5NQNC C 0 30 Y Y 1 F N
|
||||
F0 "C" 350 250 50 H V L CNN
|
||||
F1 "CL05A105KA5NQNC" 350 150 50 H V L CNN
|
||||
F2 "CAPC1005X60N" 350 50 50 H I L CNN
|
||||
F3 "https://www.arrow.com/en/products/cl05a105ka5nqnc/samsung-electro-mechanics" 350 -50 50 H I L CNN
|
||||
F4 "Cap Ceramic 1uF 25V X5R 10% Pad SMD 0402 85C T/R" 350 -150 50 H I L CNN "Description"
|
||||
F5 "0.6" 350 -250 50 H I L CNN "Height"
|
||||
F6 "Samsung Electro-Mechanics" 350 -350 50 H I L CNN "Manufacturer_Name"
|
||||
F7 "CL05A105KA5NQNC" 350 -450 50 H I L CNN "Manufacturer_Part_Number"
|
||||
F8 "187-CL05A105KA5NQNC" 350 -550 50 H I L CNN "Mouser Part Number"
|
||||
F9 "https://www.mouser.co.uk/ProductDetail/Samsung-Electro-Mechanics/CL05A105KA5NQNC?qs=X6jEic%2FHinDIeFgZnm60Lw%3D%3D" 350 -650 50 H I L CNN "Mouser Price/Stock"
|
||||
F10 "CL05A105KA5NQNC" 350 -750 50 H I L CNN "Arrow Part Number"
|
||||
F11 "https://www.arrow.com/en/products/cl05a105ka5nqnc/samsung-electro-mechanics?region=europe" 350 -850 50 H I L CNN "Arrow Price/Stock"
|
||||
F12 "" 350 -950 50 H I L CNN "Mouser Testing Part Number"
|
||||
F13 "" 350 -1050 50 H I L CNN "Mouser Testing Price/Stock"
|
||||
DRAW
|
||||
X ~ 1 0 0 200 R 50 50 0 0 P
|
||||
X ~ 2 500 0 200 L 50 50 0 0 P
|
||||
P 2 0 1 6 220 100 220 -100 N
|
||||
P 2 0 1 6 280 100 280 -100 N
|
||||
P 2 0 1 6 200 0 220 0 N
|
||||
P 2 0 1 6 280 0 300 0 N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
||||
@@ -0,0 +1,30 @@
|
||||
EESchema-LIBRARY Version 2.3
|
||||
#encoding utf-8
|
||||
#SamacSys ECAD Model CL05B104KO5NNNC
|
||||
#/563787/987070/2.49/2/3/Capacitor
|
||||
DEF CL05B104KO5NNNC C 0 30 Y Y 1 F N
|
||||
F0 "C" 350 250 50 H V L CNN
|
||||
F1 "CL05B104KO5NNNC" 350 150 50 H V L CNN
|
||||
F2 "CAPC1005X55N" 350 50 50 H I L CNN
|
||||
F3 "https://datasheet.datasheetarchive.com/originals/distributors/Datasheets-DGA10/2408147.pdf" 350 -50 50 H I L CNN
|
||||
F4 "Samsung Electro-Mechanics CL05B104KO5NNNC 100nF Multilayer Ceramic Capacitor MLCC 16V dc +/-10% Tolerance SMD" 350 -150 50 H I L CNN "Description"
|
||||
F5 "0.55" 350 -250 50 H I L CNN "Height"
|
||||
F6 "Samsung Electro-Mechanics" 350 -350 50 H I L CNN "Manufacturer_Name"
|
||||
F7 "CL05B104KO5NNNC" 350 -450 50 H I L CNN "Manufacturer_Part_Number"
|
||||
F8 "187-CL05B104KO5NNNC" 350 -550 50 H I L CNN "Mouser Part Number"
|
||||
F9 "https://www.mouser.co.uk/ProductDetail/Samsung-Electro-Mechanics/CL05B104KO5NNNC?qs=hqM3L16%252BxlfT2SKOuAUq6Q%3D%3D" 350 -650 50 H I L CNN "Mouser Price/Stock"
|
||||
F10 "CL05B104KO5NNNC" 350 -750 50 H I L CNN "Arrow Part Number"
|
||||
F11 "https://www.arrow.com/en/products/cl05b104ko5nnnc/samsung-electro-mechanics?region=europe" 350 -850 50 H I L CNN "Arrow Price/Stock"
|
||||
F12 "" 350 -950 50 H I L CNN "Mouser Testing Part Number"
|
||||
F13 "" 350 -1050 50 H I L CNN "Mouser Testing Price/Stock"
|
||||
DRAW
|
||||
X ~ 1 0 0 200 R 50 50 0 0 P
|
||||
X ~ 2 500 0 200 L 50 50 0 0 P
|
||||
P 2 0 1 6 220 100 220 -100 N
|
||||
P 2 0 1 6 280 100 280 -100 N
|
||||
P 2 0 1 6 200 0 220 0 N
|
||||
P 2 0 1 6 280 0 300 0 N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
||||
@@ -0,0 +1,35 @@
|
||||
EESchema-LIBRARY Version 2.3
|
||||
#encoding utf-8
|
||||
#SamacSys ECAD Model DZ254S-11-10-48
|
||||
#/17126707/987070/2.49/10/0/Connector
|
||||
DEF DZ254S-11-10-48 J 0 30 Y Y 1 F N
|
||||
F0 "J" 750 300 50 H V L CNN
|
||||
F1 "DZ254S-11-10-48" 750 200 50 H V L CNN
|
||||
F2 "HUSRSP10W66P254_2500X250X850P" 750 100 50 H I L CNN
|
||||
F3 "https://datasheet.lcsc.com/lcsc/2209141730_DEALON-DZ254S-11-10-48_C5160793.pdf" 750 0 50 H I L CNN
|
||||
F4 "Brick nogging Square Pins 1 10 2.54mm 1x10P SMD,P=2.54mm() Pin Headers ROHS" 750 -100 50 H I L CNN "Description"
|
||||
F5 "" 750 -200 50 H I L CNN "Height"
|
||||
F6 "DEALON" 750 -300 50 H I L CNN "Manufacturer_Name"
|
||||
F7 "DZ254S-11-10-48" 750 -400 50 H I L CNN "Manufacturer_Part_Number"
|
||||
F8 "" 750 -500 50 H I L CNN "Mouser Part Number"
|
||||
F9 "" 750 -600 50 H I L CNN "Mouser Price/Stock"
|
||||
F10 "" 750 -700 50 H I L CNN "Arrow Part Number"
|
||||
F11 "" 750 -800 50 H I L CNN "Arrow Price/Stock"
|
||||
F12 "" 750 -900 50 H I L CNN "Mouser Testing Part Number"
|
||||
F13 "" 750 -1000 50 H I L CNN "Mouser Testing Price/Stock"
|
||||
DRAW
|
||||
X 1 1 0 0 200 R 50 50 0 0 P
|
||||
X 2 2 0 -100 200 R 50 50 0 0 P
|
||||
X 3 3 0 -200 200 R 50 50 0 0 P
|
||||
X 4 4 0 -300 200 R 50 50 0 0 P
|
||||
X 5 5 0 -400 200 R 50 50 0 0 P
|
||||
X 6 6 900 0 200 L 50 50 0 0 P
|
||||
X 7 7 900 -100 200 L 50 50 0 0 P
|
||||
X 8 8 900 -200 200 L 50 50 0 0 P
|
||||
X 9 9 900 -300 200 L 50 50 0 0 P
|
||||
X 10 10 900 -400 200 L 50 50 0 0 P
|
||||
P 5 0 1 6 200 100 700 100 700 -500 200 -500 200 100 N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
||||
@@ -0,0 +1,72 @@
|
||||
EESchema-LIBRARY Version 2.3
|
||||
#encoding utf-8
|
||||
#SamacSys ECAD Model ESP32-WROOM-32E-N4
|
||||
#/15884694/987070/2.49/47/4/Integrated Circuit
|
||||
DEF ESP32-WROOM-32E-N4 IC 0 30 Y Y 1 F N
|
||||
F0 "IC" 1350 300 50 H V L CNN
|
||||
F1 "ESP32-WROOM-32E-N4" 1350 200 50 H V L CNN
|
||||
F2 "ESP32WROOM32EN4" 1350 100 50 H I L CNN
|
||||
F3 "https://www.espressif.com/sites/default/files/documentation/esp32-wroom-32e_esp32-wroom-32ue_datasheet_en.pdf" 1350 0 50 H I L CNN
|
||||
F4 "RX TXRX MOD WIFI TRACE ANT SMD" 1350 -100 50 H I L CNN "Description"
|
||||
F5 "3.25" 1350 -200 50 H I L CNN "Height"
|
||||
F6 "Espressif Systems" 1350 -300 50 H I L CNN "Manufacturer_Name"
|
||||
F7 "ESP32-WROOM-32E-N4" 1350 -400 50 H I L CNN "Manufacturer_Part_Number"
|
||||
F8 "356-ESP32WRM32E132PH" 1350 -500 50 H I L CNN "Mouser Part Number"
|
||||
F9 "https://www.mouser.co.uk/ProductDetail/Espressif-Systems/ESP32-WROOM-32E-N4?qs=Li%252BoUPsLEnsPzTWsi%252BRMgQ%3D%3D" 1350 -600 50 H I L CNN "Mouser Price/Stock"
|
||||
F10 "" 1350 -700 50 H I L CNN "Arrow Part Number"
|
||||
F11 "" 1350 -800 50 H I L CNN "Arrow Price/Stock"
|
||||
F12 "" 1350 -900 50 H I L CNN "Mouser Testing Part Number"
|
||||
F13 "" 1350 -1000 50 H I L CNN "Mouser Testing Price/Stock"
|
||||
DRAW
|
||||
X GND_1 1 0 0 200 R 50 50 0 0 P
|
||||
X 3V3 2 0 -100 200 R 50 50 0 0 P
|
||||
X EN 3 0 -200 200 R 50 50 0 0 P
|
||||
X SENSOR_VP 4 0 -300 200 R 50 50 0 0 P
|
||||
X SENSOR_VN 5 0 -400 200 R 50 50 0 0 P
|
||||
X IO34 6 0 -500 200 R 50 50 0 0 P
|
||||
X IO35 7 0 -600 200 R 50 50 0 0 P
|
||||
X IO32 8 0 -700 200 R 50 50 0 0 P
|
||||
X IO33 9 0 -800 200 R 50 50 0 0 P
|
||||
X IO25 10 0 -900 200 R 50 50 0 0 P
|
||||
X IO26 11 0 -1000 200 R 50 50 0 0 P
|
||||
X IO27 12 0 -1100 200 R 50 50 0 0 P
|
||||
X IO14 13 0 -1200 200 R 50 50 0 0 P
|
||||
X IO12 14 0 -1300 200 R 50 50 0 0 P
|
||||
X GND_2 15 0 -1400 200 R 50 50 0 0 P
|
||||
X IO13 16 0 -1500 200 R 50 50 0 0 P
|
||||
X NC_1 17 0 -1600 200 R 50 50 0 0 P
|
||||
X NC_2 18 0 -1700 200 R 50 50 0 0 P
|
||||
X NC_3 19 0 -1800 200 R 50 50 0 0 P
|
||||
X NC_4 20 0 -1900 200 R 50 50 0 0 P
|
||||
X NC_5 21 0 -2000 200 R 50 50 0 0 P
|
||||
X NC_6 22 0 -2100 200 R 50 50 0 0 P
|
||||
X IO15 23 0 -2200 200 R 50 50 0 0 P
|
||||
X IO2 24 0 -2300 200 R 50 50 0 0 P
|
||||
X IO0 25 1500 0 200 L 50 50 0 0 P
|
||||
X IO4 26 1500 -100 200 L 50 50 0 0 P
|
||||
X IO16 27 1500 -200 200 L 50 50 0 0 P
|
||||
X IO17 28 1500 -300 200 L 50 50 0 0 P
|
||||
X IO5 29 1500 -400 200 L 50 50 0 0 P
|
||||
X IO18 30 1500 -500 200 L 50 50 0 0 P
|
||||
X IO19 31 1500 -600 200 L 50 50 0 0 P
|
||||
X NC_7 32 1500 -700 200 L 50 50 0 0 P
|
||||
X IO21 33 1500 -800 200 L 50 50 0 0 P
|
||||
X RXD0 34 1500 -900 200 L 50 50 0 0 P
|
||||
X TXD0 35 1500 -1000 200 L 50 50 0 0 P
|
||||
X IO22 36 1500 -1100 200 L 50 50 0 0 P
|
||||
X IO23 37 1500 -1200 200 L 50 50 0 0 P
|
||||
X GND_3 38 1500 -1300 200 L 50 50 0 0 P
|
||||
X GND_4 39 1500 -1400 200 L 50 50 0 0 P
|
||||
X GND_5 40 1500 -1500 200 L 50 50 0 0 P
|
||||
X GND_6 41 1500 -1600 200 L 50 50 0 0 P
|
||||
X GND_7 42 1500 -1700 200 L 50 50 0 0 P
|
||||
X GND_8 43 1500 -1800 200 L 50 50 0 0 P
|
||||
X GND_9 44 1500 -1900 200 L 50 50 0 0 P
|
||||
X GND_10 45 1500 -2000 200 L 50 50 0 0 P
|
||||
X GND_11 46 1500 -2100 200 L 50 50 0 0 P
|
||||
X GND_12 47 1500 -2200 200 L 50 50 0 0 P
|
||||
P 5 0 1 6 200 100 1300 100 1300 -2400 200 -2400 200 100 N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
||||
@@ -0,0 +1,85 @@
|
||||
(module "ESP32WROOM32EN4" (layer F.Cu)
|
||||
(descr "ESP32-WROOM-32E-N4-1")
|
||||
(tags "Integrated Circuit")
|
||||
(attr smd)
|
||||
(fp_text reference IC** (at 0.000 0.25) (layer F.SilkS)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text user %R (at 0.000 0.25) (layer F.Fab)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text value "ESP32WROOM32EN4" (at 0.000 0.25) (layer F.SilkS) hide
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_line (start -9 12.75) (end 9 12.75) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 9 12.75) (end 9 -12.75) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 9 -12.75) (end -9 -12.75) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -9 -12.75) (end -9 12.75) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -10.5 -13.75) (end 10.5 -13.75) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start 10.5 -13.75) (end 10.5 14.25) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start 10.5 14.25) (end -10.5 14.25) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start -10.5 14.25) (end -10.5 -13.75) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start -9 -6) (end -9 -12.75) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start -9 -12.75) (end 9 -12.75) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 9 -12.75) (end 9 -6) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 9 12) (end 9 12.75) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 9 12.75) (end 6.5 12.75) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start -6.5 12.75) (end -9 12.75) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start -9 12.75) (end -9 12) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start -10.1 -5.26) (end -10.1 -5.26) (layer F.SilkS) (width 0.1))
|
||||
(fp_line (start -10 -5.26) (end -10 -5.26) (layer F.SilkS) (width 0.1))
|
||||
(fp_arc (start -10.05 -5.26) (end -10.100 -5.26) (angle -180) (layer F.SilkS) (width 0.1))
|
||||
(fp_arc (start -10.05 -5.26) (end -10.000 -5.26) (angle -180) (layer F.SilkS) (width 0.1))
|
||||
(pad 1 smd rect (at -8.750 -5.26 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 2 smd rect (at -8.750 -3.99 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 3 smd rect (at -8.750 -2.72 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 4 smd rect (at -8.750 -1.45 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 5 smd rect (at -8.750 -0.18 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 6 smd rect (at -8.750 1.09 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 7 smd rect (at -8.750 2.36 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 8 smd rect (at -8.750 3.63 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 9 smd rect (at -8.750 4.9 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 10 smd rect (at -8.750 6.17 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 11 smd rect (at -8.750 7.44 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 12 smd rect (at -8.750 8.71 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 13 smd rect (at -8.750 9.98 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 14 smd rect (at -8.750 11.25 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 15 smd rect (at -5.715 12.5 0) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 16 smd rect (at -4.445 12.5 0) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 17 smd rect (at -3.175 12.5 0) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 18 smd rect (at -1.905 12.5 0) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 19 smd rect (at -0.635 12.5 0) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 20 smd rect (at 0.635 12.5 0) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 21 smd rect (at 1.905 12.5 0) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 22 smd rect (at 3.175 12.5 0) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 23 smd rect (at 4.445 12.5 0) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 24 smd rect (at 5.715 12.5 0) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 25 smd rect (at 8.750 11.25 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 26 smd rect (at 8.750 9.98 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 27 smd rect (at 8.750 8.71 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 28 smd rect (at 8.750 7.44 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 29 smd rect (at 8.750 6.17 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 30 smd rect (at 8.750 4.9 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 31 smd rect (at 8.750 3.63 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 32 smd rect (at 8.750 2.36 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 33 smd rect (at 8.750 1.09 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 34 smd rect (at 8.750 -0.18 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 35 smd rect (at 8.750 -1.45 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 36 smd rect (at 8.750 -2.72 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 37 smd rect (at 8.750 -3.99 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 38 smd rect (at 8.750 -5.26 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 39 smd rect (at -2.900 1.06 90) (size 0.900 0.900) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 40 smd rect (at -2.900 2.46 90) (size 0.900 0.900) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 41 smd rect (at -2.900 3.86 90) (size 0.900 0.900) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 42 smd rect (at -1.500 3.86 90) (size 0.900 0.900) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 43 smd rect (at -0.100 3.86 90) (size 0.900 0.900) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 44 smd rect (at -0.100 2.46 90) (size 0.900 0.900) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 45 smd rect (at -0.100 1.06 90) (size 0.900 0.900) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 46 smd rect (at -1.500 1.06 90) (size 0.900 0.900) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 47 smd rect (at -1.500 2.46 90) (size 0.900 0.900) (layers F.Cu F.Paste F.Mask))
|
||||
(model ESP32-WROOM-32E-N4.stp
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
@@ -0,0 +1,39 @@
|
||||
(module "HUSRSP10W66P254_2500X250X850P" (layer F.Cu)
|
||||
(descr "DZ254S-11-10-48")
|
||||
(tags "Connector")
|
||||
(attr smd)
|
||||
(fp_text reference J** (at 0 0) (layer F.SilkS)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text user %R (at 0 0) (layer F.Fab)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text value "HUSRSP10W66P254_2500X250X850P" (at 0 0) (layer F.SilkS) hide
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_line (start -12.75 -4.01) (end 12.75 -4.01) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 12.75 -4.01) (end 12.75 4.01) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 12.75 4.01) (end -12.75 4.01) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -12.75 4.01) (end -12.75 -4.01) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -12.5 -1.25) (end 12.5 -1.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 12.5 -1.25) (end 12.5 1.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 12.5 1.25) (end -12.5 1.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -12.5 1.25) (end -12.5 -1.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -12.5 1.25) (end -12.5 -3.76) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 12.5 1.25) (end 12.5 -1.25) (layer F.SilkS) (width 0.2))
|
||||
(pad 1 smd rect (at -11.43 -1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 2 smd rect (at -8.89 1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 3 smd rect (at -6.35 -1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 4 smd rect (at -3.81 1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 5 smd rect (at -1.27 -1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 6 smd rect (at 1.27 1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 7 smd rect (at 3.81 -1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 8 smd rect (at 6.35 1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 9 smd rect (at 8.89 -1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 10 smd rect (at 11.43 1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(model DZ254S-11-10-48.stp
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
@@ -0,0 +1,37 @@
|
||||
(module "HUSRSP8W66P254_2000X250X850P" (layer F.Cu)
|
||||
(descr "X6511WVS-08H-C60D48R2")
|
||||
(tags "Connector")
|
||||
(attr smd)
|
||||
(fp_text reference J** (at 0 0) (layer F.SilkS)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text user %R (at 0 0) (layer F.Fab)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text value "HUSRSP8W66P254_2000X250X850P" (at 0 0) (layer F.SilkS) hide
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_line (start -10.25 -4.01) (end 10.25 -4.01) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 10.25 -4.01) (end 10.25 4.01) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 10.25 4.01) (end -10.25 4.01) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -10.25 4.01) (end -10.25 -4.01) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -10 -1.25) (end 10 -1.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 10 -1.25) (end 10 1.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 10 1.25) (end -10 1.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -10 1.25) (end -10 -1.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -10 1.25) (end -10 -3.76) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 10 1.25) (end 10 -1.25) (layer F.SilkS) (width 0.2))
|
||||
(pad 1 smd rect (at -8.89 -1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 2 smd rect (at -6.35 1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 3 smd rect (at -3.81 -1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 4 smd rect (at -1.27 1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 5 smd rect (at 1.27 -1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 6 smd rect (at 3.81 1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 7 smd rect (at 6.35 -1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 8 smd rect (at 8.89 1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(model X6511WVS-08H-C60D48R2.stp
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
@@ -0,0 +1,27 @@
|
||||
EESchema-LIBRARY Version 2.3
|
||||
#encoding utf-8
|
||||
#SamacSys ECAD Model RC0402FR-0710KL
|
||||
#/541505/987070/2.49/2/3/Resistor
|
||||
DEF RC0402FR-0710KL R 0 30 Y Y 1 F N
|
||||
F0 "R" 550 250 50 H V L CNN
|
||||
F1 "RC0402FR-0710KL" 550 150 50 H V L CNN
|
||||
F2 "RESC1005X40N" 550 50 50 H I L CNN
|
||||
F3 "https://datasheet.datasheetarchive.com/originals/distributors/Datasheets_SAMA/902f9e387b938f871d31120f5fc1d65e.pdf" 550 -50 50 H I L CNN
|
||||
F4 "YAGEO (PHYCOMP) - RC0402FR-0710KL. - RES, THICK FILM, 10K, 1%, 0.0625W, 0402" 550 -150 50 H I L CNN "Description"
|
||||
F5 "0.4" 550 -250 50 H I L CNN "Height"
|
||||
F6 "KEMET" 550 -350 50 H I L CNN "Manufacturer_Name"
|
||||
F7 "RC0402FR-0710KL" 550 -450 50 H I L CNN "Manufacturer_Part_Number"
|
||||
F8 "603-RC0402FR-0710KL" 550 -550 50 H I L CNN "Mouser Part Number"
|
||||
F9 "https://www.mouser.co.uk/ProductDetail/YAGEO/RC0402FR-0710KL?qs=I1mnnYJTTsxUoNwrUsQExA%3D%3D" 550 -650 50 H I L CNN "Mouser Price/Stock"
|
||||
F10 "RC0402FR-0710KL" 550 -750 50 H I L CNN "Arrow Part Number"
|
||||
F11 "https://www.arrow.com/en/products/rc0402fr-0710kl/yageo?region=europe" 550 -850 50 H I L CNN "Arrow Price/Stock"
|
||||
F12 "" 550 -950 50 H I L CNN "Mouser Testing Part Number"
|
||||
F13 "" 550 -1050 50 H I L CNN "Mouser Testing Price/Stock"
|
||||
DRAW
|
||||
X ~ 1 0 0 200 R 50 50 0 0 P
|
||||
X ~ 2 700 0 200 L 50 50 0 0 P
|
||||
P 5 0 1 6 200 50 500 50 500 -50 200 -50 200 50 N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
||||
@@ -0,0 +1,27 @@
|
||||
EESchema-LIBRARY Version 2.3
|
||||
#encoding utf-8
|
||||
#SamacSys ECAD Model RC0402FR-07220RL
|
||||
#/349197/987070/2.49/2/5/Resistor
|
||||
DEF RC0402FR-07220RL R 0 30 Y Y 1 F N
|
||||
F0 "R" 550 250 50 H V L CNN
|
||||
F1 "RC0402FR-07220RL" 550 150 50 H V L CNN
|
||||
F2 "RESC1005X40N" 550 50 50 H I L CNN
|
||||
F3 "https://datasheet.datasheetarchive.com/originals/distributors/Datasheets_SAMA/902f9e387b938f871d31120f5fc1d65e.pdf" 550 -50 50 H I L CNN
|
||||
F4 "YAGEO (PHYCOMP) - RC0402FR-07220RL - RES, THICK FILM, 220R, 1%, 0.063W, 0402" 550 -150 50 H I L CNN "Description"
|
||||
F5 "0.4" 550 -250 50 H I L CNN "Height"
|
||||
F6 "KEMET" 550 -350 50 H I L CNN "Manufacturer_Name"
|
||||
F7 "RC0402FR-07220RL" 550 -450 50 H I L CNN "Manufacturer_Part_Number"
|
||||
F8 "603-RC0402FR-07220RL" 550 -550 50 H I L CNN "Mouser Part Number"
|
||||
F9 "https://www.mouser.co.uk/ProductDetail/YAGEO/RC0402FR-07220RL?qs=UOUeRUa%252B8Wkw9iNOZEwgHw%3D%3D" 550 -650 50 H I L CNN "Mouser Price/Stock"
|
||||
F10 "RC0402FR-07220RL" 550 -750 50 H I L CNN "Arrow Part Number"
|
||||
F11 "https://www.arrow.com/en/products/rc0402fr-07220rl/yageo?region=nac" 550 -850 50 H I L CNN "Arrow Price/Stock"
|
||||
F12 "" 550 -950 50 H I L CNN "Mouser Testing Part Number"
|
||||
F13 "" 550 -1050 50 H I L CNN "Mouser Testing Price/Stock"
|
||||
DRAW
|
||||
X ~ 1 0 0 200 R 50 50 0 0 P
|
||||
X ~ 2 700 0 200 L 50 50 0 0 P
|
||||
P 5 0 1 6 200 50 500 50 500 -50 200 -50 200 50 N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
||||
@@ -0,0 +1,29 @@
|
||||
(module "RESC1005X40N" (layer F.Cu)
|
||||
(descr "RC0402")
|
||||
(tags "Resistor")
|
||||
(attr smd)
|
||||
(fp_text reference R** (at 0 0) (layer F.SilkS)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text user %R (at 0 0) (layer F.Fab)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text value "RESC1005X40N" (at 0 0) (layer F.SilkS) hide
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_line (start -1.175 -0.55) (end 1.175 -0.55) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 1.175 -0.55) (end 1.175 0.55) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 1.175 0.55) (end -1.175 0.55) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.175 0.55) (end -1.175 -0.55) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -0.5 -0.25) (end 0.5 -0.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 0.5 -0.25) (end 0.5 0.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 0.5 0.25) (end -0.5 0.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -0.5 0.25) (end -0.5 -0.25) (layer F.Fab) (width 0.1))
|
||||
(pad 1 smd rect (at -0.55 0 90) (size 0.6 0.75) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 2 smd rect (at 0.55 0 90) (size 0.6 0.75) (layers F.Cu F.Paste F.Mask))
|
||||
(model RC0402FR-07220RL.stp
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
@@ -0,0 +1,40 @@
|
||||
(module "SKRPABE010" (layer F.Cu)
|
||||
(descr "SKRPABE010-1")
|
||||
(tags "Switch")
|
||||
(attr smd)
|
||||
(fp_text reference S** (at 0.000 -0) (layer F.SilkS)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text user %R (at 0.000 -0) (layer F.Fab)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text value "SKRPABE010" (at 0.000 -0) (layer F.SilkS) hide
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_line (start -2.1 -1.6) (end 2.1 -1.6) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start 2.1 -1.6) (end 2.1 1.6) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start 2.1 1.6) (end -2.1 1.6) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start -2.1 1.6) (end -2.1 -1.6) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start -3.6 -2.6) (end 3.6 -2.6) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start 3.6 -2.6) (end 3.6 2.6) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start 3.6 2.6) (end -3.6 2.6) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start -3.6 2.6) (end -3.6 -2.6) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start -1.2 -1.6) (end 1.2 -1.6) (layer F.SilkS) (width 0.1))
|
||||
(fp_line (start -1.2 1.6) (end 1.2 1.6) (layer F.SilkS) (width 0.1))
|
||||
(fp_line (start -2.1 -0.4) (end -2.1 0.4) (layer F.SilkS) (width 0.1))
|
||||
(fp_line (start 2.1 -0.4) (end 2.1 0.4) (layer F.SilkS) (width 0.1))
|
||||
(fp_line (start -3 -1) (end -3 -1) (layer F.SilkS) (width 0.1))
|
||||
(fp_line (start -3 -1) (end -3 -1) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start -3.2 -1) (end -3.2 -1) (layer F.SilkS) (width 0.2))
|
||||
(fp_arc (start -3.1 -1) (end -3.000 -1) (angle -180) (layer F.SilkS) (width 0.2))
|
||||
(fp_arc (start -3.1 -1) (end -3.200 -1) (angle -180) (layer F.SilkS) (width 0.2))
|
||||
(pad 1 smd rect (at -2.075 -1.075 90) (size 0.650 1.050) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 2 smd rect (at 2.075 -1.075 90) (size 0.650 1.050) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 3 smd rect (at -2.075 1.075 90) (size 0.650 1.050) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 4 smd rect (at 2.075 1.075 90) (size 0.650 1.050) (layers F.Cu F.Paste F.Mask))
|
||||
(model SKRPABE010.stp
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
29
PCBs/FlipperZero/WiFi-Devboard-Pro/Libraries/SKRPABE010.lib
Normal file
29
PCBs/FlipperZero/WiFi-Devboard-Pro/Libraries/SKRPABE010.lib
Normal file
@@ -0,0 +1,29 @@
|
||||
EESchema-LIBRARY Version 2.3
|
||||
#encoding utf-8
|
||||
#SamacSys ECAD Model SKRPABE010
|
||||
#/13010270/987070/2.49/4/0/Switch
|
||||
DEF SKRPABE010 S 0 30 Y Y 1 F N
|
||||
F0 "S" 950 300 50 H V L CNN
|
||||
F1 "SKRPABE010" 950 200 50 H V L CNN
|
||||
F2 "SKRPABE010" 950 100 50 H I L CNN
|
||||
F3 "https://datasheet.lcsc.com/szlcsc/ALPS-Electric-SKRPABE010_C115360.pdf" 950 0 50 H I L CNN
|
||||
F4 "Switch Tactile N.O. SPST Button J-Bend 0.05A 16VDC 1.57N SMD Automotive T/R" 950 -100 50 H I L CNN "Description"
|
||||
F5 "2.5" 950 -200 50 H I L CNN "Height"
|
||||
F6 "ALPS Electric" 950 -300 50 H I L CNN "Manufacturer_Name"
|
||||
F7 "SKRPABE010" 950 -400 50 H I L CNN "Manufacturer_Part_Number"
|
||||
F8 "688-SKRPAB" 950 -500 50 H I L CNN "Mouser Part Number"
|
||||
F9 "https://www.mouser.co.uk/ProductDetail/Alps-Alpine/SKRPABE010?qs=m0BA540hBPe1GpcSf%2FZ5Yw%3D%3D" 950 -600 50 H I L CNN "Mouser Price/Stock"
|
||||
F10 "" 950 -700 50 H I L CNN "Arrow Part Number"
|
||||
F11 "" 950 -800 50 H I L CNN "Arrow Price/Stock"
|
||||
F12 "" 950 -900 50 H I L CNN "Mouser Testing Part Number"
|
||||
F13 "" 950 -1000 50 H I L CNN "Mouser Testing Price/Stock"
|
||||
DRAW
|
||||
X NO_1 1 0 0 200 R 50 50 0 0 P
|
||||
X NO_2 2 1100 0 200 L 50 50 0 0 P
|
||||
X NO_3 3 0 -100 200 R 50 50 0 0 P
|
||||
X NO_4 4 1100 -100 200 L 50 50 0 0 P
|
||||
P 5 0 1 6 200 100 900 100 900 -200 200 -200 200 100 N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
||||
@@ -0,0 +1,29 @@
|
||||
EESchema-LIBRARY Version 2.3
|
||||
#encoding utf-8
|
||||
#SamacSys ECAD Model WS2812B-2020
|
||||
#/13449884/987070/2.49/4/4/LED (Multiple)
|
||||
DEF WS2812B-2020 LED 0 30 Y Y 1 F N
|
||||
F0 "LED" 850 300 50 H V L CNN
|
||||
F1 "WS2812B-2020" 850 200 50 H V L CNN
|
||||
F2 "WS2812B2020" 850 100 50 H I L CNN
|
||||
F3 "https://www.alldatasheet.com/datasheet-pdf/pdf/1134522/WORLDSEMI/WS2812B-2020.html" 850 0 50 H I L CNN
|
||||
F4 "LED; SMD; 2020; RGB; 2x2x0.84mm; 3.75.3V; Lens: transparent; 2kHz" 850 -100 50 H I L CNN "Description"
|
||||
F5 "0.84" 850 -200 50 H I L CNN "Height"
|
||||
F6 "Worldsemi" 850 -300 50 H I L CNN "Manufacturer_Name"
|
||||
F7 "WS2812B-2020" 850 -400 50 H I L CNN "Manufacturer_Part_Number"
|
||||
F8 "" 850 -500 50 H I L CNN "Mouser Part Number"
|
||||
F9 "" 850 -600 50 H I L CNN "Mouser Price/Stock"
|
||||
F10 "" 850 -700 50 H I L CNN "Arrow Part Number"
|
||||
F11 "" 850 -800 50 H I L CNN "Arrow Price/Stock"
|
||||
F12 "" 850 -900 50 H I L CNN "Mouser Testing Part Number"
|
||||
F13 "" 850 -1000 50 H I L CNN "Mouser Testing Price/Stock"
|
||||
DRAW
|
||||
X DO 1 1000 -100 200 L 50 50 0 0 P
|
||||
X GND 2 1000 0 200 L 50 50 0 0 P
|
||||
X DI 3 0 0 200 R 50 50 0 0 P
|
||||
X VDD 4 0 -100 200 R 50 50 0 0 P
|
||||
P 5 0 1 6 200 100 800 100 800 -200 200 -200 200 100 N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
||||
@@ -0,0 +1,35 @@
|
||||
(module "WS2812B2020" (layer F.Cu)
|
||||
(descr "WS2812B-2020-2")
|
||||
(tags "LED (Multiple)")
|
||||
(attr smd)
|
||||
(fp_text reference LED** (at 0.000 -0) (layer F.SilkS)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text user %R (at 0.000 -0) (layer F.Fab)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text value "WS2812B2020" (at 0.000 -0) (layer F.SilkS) hide
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_line (start -1.1 -1) (end 1.1 -1) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start 1.1 -1) (end 1.1 1) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start 1.1 1) (end -1.1 1) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start -1.1 1) (end -1.1 -1) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start -2.265 -2) (end 2.265 -2) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start 2.265 -2) (end 2.265 2) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start 2.265 2) (end -2.265 2) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start -2.265 2) (end -2.265 -2) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start 1.4 1.4) (end 1.4 1.4) (layer F.SilkS) (width 0.1))
|
||||
(fp_line (start 1.4 1.3) (end 1.4 1.3) (layer F.SilkS) (width 0.1))
|
||||
(fp_arc (start 1.4 1.35) (end 1.400 1.4) (angle -180) (layer F.SilkS) (width 0.1))
|
||||
(fp_arc (start 1.4 1.35) (end 1.400 1.3) (angle -180) (layer F.SilkS) (width 0.1))
|
||||
(pad 1 smd rect (at 0.915 0.55 90) (size 0.700 0.700) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 2 smd rect (at 0.915 -0.55 90) (size 0.700 0.700) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 3 smd rect (at -0.915 -0.55 90) (size 0.700 0.700) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 4 smd rect (at -0.915 0.55 90) (size 0.700 0.700) (layers F.Cu F.Paste F.Mask))
|
||||
(model WS2812B-2020.stp
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
@@ -0,0 +1,33 @@
|
||||
EESchema-LIBRARY Version 2.3
|
||||
#encoding utf-8
|
||||
#SamacSys ECAD Model X6511WVS-08H-C60D48R2
|
||||
#/17126700/987070/2.49/8/0/Connector
|
||||
DEF X6511WVS-08H-C60D48R2 J 0 30 Y Y 1 F N
|
||||
F0 "J" 650 300 50 H V L CNN
|
||||
F1 "X6511WVS-08H-C60D48R2" 650 200 50 H V L CNN
|
||||
F2 "HUSRSP8W66P254_2000X250X850P" 650 100 50 H I L CNN
|
||||
F3 "https://datasheet.lcsc.com/lcsc/2110100430_XKB-Connectivity-X6511WVS-08H-C60D48R2_C2883765.pdf" 650 0 50 H I L CNN
|
||||
F4 "Gold 250V 3A Brick nogging Square Pins 2.5mm 260 6mm -40~ 105 1 8 2.54mm Black Brass 1x8P SMD,P=2.54mm() Pin Headers ROHS" 650 -100 50 H I L CNN "Description"
|
||||
F5 "" 650 -200 50 H I L CNN "Height"
|
||||
F6 "XKB Connectivity" 650 -300 50 H I L CNN "Manufacturer_Name"
|
||||
F7 "X6511WVS-08H-C60D48R2" 650 -400 50 H I L CNN "Manufacturer_Part_Number"
|
||||
F8 "" 650 -500 50 H I L CNN "Mouser Part Number"
|
||||
F9 "" 650 -600 50 H I L CNN "Mouser Price/Stock"
|
||||
F10 "" 650 -700 50 H I L CNN "Arrow Part Number"
|
||||
F11 "" 650 -800 50 H I L CNN "Arrow Price/Stock"
|
||||
F12 "" 650 -900 50 H I L CNN "Mouser Testing Part Number"
|
||||
F13 "" 650 -1000 50 H I L CNN "Mouser Testing Price/Stock"
|
||||
DRAW
|
||||
X 1 1 0 0 200 R 50 50 0 0 P
|
||||
X 2 2 0 -100 200 R 50 50 0 0 P
|
||||
X 3 3 0 -200 200 R 50 50 0 0 P
|
||||
X 4 4 0 -300 200 R 50 50 0 0 P
|
||||
X 5 5 800 0 200 L 50 50 0 0 P
|
||||
X 6 6 800 -100 200 L 50 50 0 0 P
|
||||
X 7 7 800 -200 200 L 50 50 0 0 P
|
||||
X 8 8 800 -300 200 L 50 50 0 0 P
|
||||
P 5 0 1 6 200 100 600 100 600 -400 200 -400 200 100 N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
||||
4660
PCBs/FlipperZero/WiFi-Devboard-Pro/PCB-layout-export.dxf
Normal file
4660
PCBs/FlipperZero/WiFi-Devboard-Pro/PCB-layout-export.dxf
Normal file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
22900
PCBs/FlipperZero/WiFi-Devboard-Pro/WiFi-Devboard-Pro.kicad_pcb
Normal file
22900
PCBs/FlipperZero/WiFi-Devboard-Pro/WiFi-Devboard-Pro.kicad_pcb
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,75 @@
|
||||
{
|
||||
"board": {
|
||||
"active_layer": 0,
|
||||
"active_layer_preset": "",
|
||||
"auto_track_width": false,
|
||||
"hidden_nets": [
|
||||
"+ext_3V3"
|
||||
],
|
||||
"high_contrast_mode": 0,
|
||||
"net_color_mode": 1,
|
||||
"opacity": {
|
||||
"pads": 1.0,
|
||||
"tracks": 1.0,
|
||||
"vias": 1.0,
|
||||
"zones": 0.6
|
||||
},
|
||||
"ratsnest_display_mode": 0,
|
||||
"selection_filter": {
|
||||
"dimensions": true,
|
||||
"footprints": true,
|
||||
"graphics": true,
|
||||
"keepouts": true,
|
||||
"lockedItems": true,
|
||||
"otherItems": true,
|
||||
"pads": true,
|
||||
"text": true,
|
||||
"tracks": true,
|
||||
"vias": true,
|
||||
"zones": true
|
||||
},
|
||||
"visible_items": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
9,
|
||||
10,
|
||||
11,
|
||||
12,
|
||||
13,
|
||||
14,
|
||||
15,
|
||||
16,
|
||||
17,
|
||||
19,
|
||||
20,
|
||||
21,
|
||||
22,
|
||||
23,
|
||||
24,
|
||||
25,
|
||||
26,
|
||||
27,
|
||||
28,
|
||||
29,
|
||||
30,
|
||||
32,
|
||||
33,
|
||||
34,
|
||||
35,
|
||||
36
|
||||
],
|
||||
"visible_layers": "8001130_ffffffff",
|
||||
"zone_display_mode": 1
|
||||
},
|
||||
"meta": {
|
||||
"filename": "WiFi-Devboard-Pro.kicad_prl",
|
||||
"version": 3
|
||||
},
|
||||
"project": {
|
||||
"files": []
|
||||
}
|
||||
}
|
||||
498
PCBs/FlipperZero/WiFi-Devboard-Pro/WiFi-Devboard-Pro.kicad_pro
Normal file
498
PCBs/FlipperZero/WiFi-Devboard-Pro/WiFi-Devboard-Pro.kicad_pro
Normal file
@@ -0,0 +1,498 @@
|
||||
{
|
||||
"board": {
|
||||
"design_settings": {
|
||||
"defaults": {
|
||||
"board_outline_line_width": 0.09999999999999999,
|
||||
"copper_line_width": 0.19999999999999998,
|
||||
"copper_text_italic": false,
|
||||
"copper_text_size_h": 1.5,
|
||||
"copper_text_size_v": 1.5,
|
||||
"copper_text_thickness": 0.3,
|
||||
"copper_text_upright": false,
|
||||
"courtyard_line_width": 0.049999999999999996,
|
||||
"dimension_precision": 4,
|
||||
"dimension_units": 3,
|
||||
"dimensions": {
|
||||
"arrow_length": 1270000,
|
||||
"extension_offset": 500000,
|
||||
"keep_text_aligned": true,
|
||||
"suppress_zeroes": false,
|
||||
"text_position": 0,
|
||||
"units_format": 1
|
||||
},
|
||||
"fab_line_width": 0.09999999999999999,
|
||||
"fab_text_italic": false,
|
||||
"fab_text_size_h": 1.0,
|
||||
"fab_text_size_v": 1.0,
|
||||
"fab_text_thickness": 0.15,
|
||||
"fab_text_upright": false,
|
||||
"other_line_width": 0.15,
|
||||
"other_text_italic": false,
|
||||
"other_text_size_h": 1.0,
|
||||
"other_text_size_v": 1.0,
|
||||
"other_text_thickness": 0.15,
|
||||
"other_text_upright": false,
|
||||
"pads": {
|
||||
"drill": 0.0,
|
||||
"height": 0.62,
|
||||
"width": 0.6
|
||||
},
|
||||
"silk_line_width": 0.15,
|
||||
"silk_text_italic": false,
|
||||
"silk_text_size_h": 1.0,
|
||||
"silk_text_size_v": 1.0,
|
||||
"silk_text_thickness": 0.15,
|
||||
"silk_text_upright": false,
|
||||
"zones": {
|
||||
"45_degree_only": false,
|
||||
"min_clearance": 0.09999999999999999
|
||||
}
|
||||
},
|
||||
"diff_pair_dimensions": [
|
||||
{
|
||||
"gap": 0.0,
|
||||
"via_gap": 0.0,
|
||||
"width": 0.0
|
||||
}
|
||||
],
|
||||
"drc_exclusions": [],
|
||||
"meta": {
|
||||
"version": 2
|
||||
},
|
||||
"rule_severities": {
|
||||
"annular_width": "error",
|
||||
"clearance": "error",
|
||||
"copper_edge_clearance": "ignore",
|
||||
"courtyards_overlap": "ignore",
|
||||
"diff_pair_gap_out_of_range": "error",
|
||||
"diff_pair_uncoupled_length_too_long": "error",
|
||||
"drill_out_of_range": "error",
|
||||
"duplicate_footprints": "warning",
|
||||
"extra_footprint": "warning",
|
||||
"footprint_type_mismatch": "error",
|
||||
"hole_clearance": "error",
|
||||
"hole_near_hole": "error",
|
||||
"invalid_outline": "error",
|
||||
"item_on_disabled_layer": "error",
|
||||
"items_not_allowed": "error",
|
||||
"length_out_of_range": "error",
|
||||
"malformed_courtyard": "error",
|
||||
"microvia_drill_out_of_range": "error",
|
||||
"missing_courtyard": "ignore",
|
||||
"missing_footprint": "warning",
|
||||
"net_conflict": "warning",
|
||||
"npth_inside_courtyard": "ignore",
|
||||
"padstack": "error",
|
||||
"pth_inside_courtyard": "ignore",
|
||||
"shorting_items": "error",
|
||||
"silk_over_copper": "ignore",
|
||||
"silk_overlap": "ignore",
|
||||
"skew_out_of_range": "error",
|
||||
"through_hole_pad_without_hole": "error",
|
||||
"too_many_vias": "error",
|
||||
"track_dangling": "ignore",
|
||||
"track_width": "error",
|
||||
"tracks_crossing": "error",
|
||||
"unconnected_items": "error",
|
||||
"unresolved_variable": "error",
|
||||
"via_dangling": "warning",
|
||||
"zone_has_empty_net": "error",
|
||||
"zones_intersect": "error"
|
||||
},
|
||||
"rules": {
|
||||
"allow_blind_buried_vias": false,
|
||||
"allow_microvias": false,
|
||||
"max_error": 0.005,
|
||||
"min_clearance": 0.127,
|
||||
"min_copper_edge_clearance": 0.19999999999999998,
|
||||
"min_hole_clearance": 0.254,
|
||||
"min_hole_to_hole": 0.5,
|
||||
"min_microvia_diameter": 0.19999999999999998,
|
||||
"min_microvia_drill": 0.09999999999999999,
|
||||
"min_silk_clearance": 0.0,
|
||||
"min_through_hole_diameter": 0.19999999999999998,
|
||||
"min_track_width": 0.127,
|
||||
"min_via_annular_width": 0.049999999999999996,
|
||||
"min_via_diameter": 0.5,
|
||||
"solder_mask_clearance": 0.0,
|
||||
"solder_mask_min_width": 0.0,
|
||||
"use_height_for_length_calcs": true
|
||||
},
|
||||
"track_widths": [
|
||||
0.0,
|
||||
0.127,
|
||||
0.2,
|
||||
0.3,
|
||||
0.5,
|
||||
1.0
|
||||
],
|
||||
"via_dimensions": [
|
||||
{
|
||||
"diameter": 0.0,
|
||||
"drill": 0.0
|
||||
},
|
||||
{
|
||||
"diameter": 0.4,
|
||||
"drill": 0.2
|
||||
},
|
||||
{
|
||||
"diameter": 0.5,
|
||||
"drill": 0.3
|
||||
},
|
||||
{
|
||||
"diameter": 1.0,
|
||||
"drill": 0.5
|
||||
},
|
||||
{
|
||||
"diameter": 2.0,
|
||||
"drill": 1.0
|
||||
}
|
||||
],
|
||||
"zones_allow_external_fillets": false,
|
||||
"zones_use_no_outline": true
|
||||
},
|
||||
"layer_presets": []
|
||||
},
|
||||
"boards": [],
|
||||
"cvpcb": {
|
||||
"equivalence_files": []
|
||||
},
|
||||
"erc": {
|
||||
"erc_exclusions": [],
|
||||
"meta": {
|
||||
"version": 0
|
||||
},
|
||||
"pin_map": [
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
2,
|
||||
1,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
1,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
]
|
||||
],
|
||||
"rule_severities": {
|
||||
"bus_definition_conflict": "error",
|
||||
"bus_entry_needed": "error",
|
||||
"bus_label_syntax": "error",
|
||||
"bus_to_bus_conflict": "error",
|
||||
"bus_to_net_conflict": "error",
|
||||
"different_unit_footprint": "error",
|
||||
"different_unit_net": "error",
|
||||
"duplicate_reference": "error",
|
||||
"duplicate_sheet_names": "error",
|
||||
"extra_units": "error",
|
||||
"global_label_dangling": "warning",
|
||||
"hier_label_mismatch": "error",
|
||||
"label_dangling": "error",
|
||||
"lib_symbol_issues": "warning",
|
||||
"multiple_net_names": "warning",
|
||||
"net_not_bus_member": "warning",
|
||||
"no_connect_connected": "warning",
|
||||
"no_connect_dangling": "warning",
|
||||
"pin_not_connected": "error",
|
||||
"pin_not_driven": "error",
|
||||
"pin_to_pin": "warning",
|
||||
"power_pin_not_driven": "error",
|
||||
"similar_labels": "warning",
|
||||
"unannotated": "error",
|
||||
"unit_value_mismatch": "error",
|
||||
"unresolved_variable": "error",
|
||||
"wire_dangling": "error"
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"pinned_footprint_libs": [],
|
||||
"pinned_symbol_libs": []
|
||||
},
|
||||
"meta": {
|
||||
"filename": "WiFi-Devboard-Pro.kicad_pro",
|
||||
"version": 1
|
||||
},
|
||||
"net_settings": {
|
||||
"classes": [
|
||||
{
|
||||
"bus_width": 12.0,
|
||||
"clearance": 0.127,
|
||||
"diff_pair_gap": 0.25,
|
||||
"diff_pair_via_gap": 0.25,
|
||||
"diff_pair_width": 0.2,
|
||||
"line_style": 0,
|
||||
"microvia_diameter": 0.3,
|
||||
"microvia_drill": 0.1,
|
||||
"name": "Default",
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.127,
|
||||
"via_diameter": 0.5,
|
||||
"via_drill": 0.3,
|
||||
"wire_width": 6.0
|
||||
},
|
||||
{
|
||||
"bus_width": 12.0,
|
||||
"clearance": 0.127,
|
||||
"diff_pair_gap": 0.25,
|
||||
"diff_pair_via_gap": 0.25,
|
||||
"diff_pair_width": 0.2,
|
||||
"line_style": 0,
|
||||
"microvia_diameter": 0.3,
|
||||
"microvia_drill": 0.1,
|
||||
"name": "GND",
|
||||
"nets": [
|
||||
"GND"
|
||||
],
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.2,
|
||||
"via_diameter": 0.5,
|
||||
"via_drill": 0.3,
|
||||
"wire_width": 6.0
|
||||
},
|
||||
{
|
||||
"bus_width": 12.0,
|
||||
"clearance": 0.127,
|
||||
"diff_pair_gap": 0.25,
|
||||
"diff_pair_via_gap": 0.25,
|
||||
"diff_pair_width": 0.2,
|
||||
"line_style": 0,
|
||||
"microvia_diameter": 0.3,
|
||||
"microvia_drill": 0.1,
|
||||
"name": "Supply",
|
||||
"nets": [
|
||||
"+3V3",
|
||||
"+5V",
|
||||
"+LDO_3V3",
|
||||
"+ext_3V3",
|
||||
"+ext_5V"
|
||||
],
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.2,
|
||||
"via_diameter": 0.5,
|
||||
"via_drill": 0.3,
|
||||
"wire_width": 6.0
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"version": 2
|
||||
},
|
||||
"net_colors": null
|
||||
},
|
||||
"pcbnew": {
|
||||
"last_paths": {
|
||||
"gencad": "",
|
||||
"idf": "",
|
||||
"netlist": "",
|
||||
"specctra_dsn": "",
|
||||
"step": "",
|
||||
"vrml": ""
|
||||
},
|
||||
"page_layout_descr_file": ""
|
||||
},
|
||||
"schematic": {
|
||||
"annotate_start_num": 0,
|
||||
"drawing": {
|
||||
"default_line_thickness": 6.0,
|
||||
"default_text_size": 50.0,
|
||||
"field_names": [],
|
||||
"intersheets_ref_own_page": false,
|
||||
"intersheets_ref_prefix": "",
|
||||
"intersheets_ref_short": false,
|
||||
"intersheets_ref_show": false,
|
||||
"intersheets_ref_suffix": "",
|
||||
"junction_size_choice": 3,
|
||||
"label_size_ratio": 0.375,
|
||||
"pin_symbol_size": 25.0,
|
||||
"text_offset_ratio": 0.15
|
||||
},
|
||||
"legacy_lib_dir": "",
|
||||
"legacy_lib_list": [],
|
||||
"meta": {
|
||||
"version": 1
|
||||
},
|
||||
"net_format_name": "",
|
||||
"ngspice": {
|
||||
"fix_include_paths": true,
|
||||
"fix_passive_vals": false,
|
||||
"meta": {
|
||||
"version": 0
|
||||
},
|
||||
"model_mode": 0,
|
||||
"workbook_filename": ""
|
||||
},
|
||||
"page_layout_descr_file": "",
|
||||
"plot_directory": "",
|
||||
"spice_adjust_passive_values": false,
|
||||
"spice_external_command": "spice \"%I\"",
|
||||
"subpart_first_id": 65,
|
||||
"subpart_id_separator": 0
|
||||
},
|
||||
"sheets": [
|
||||
[
|
||||
"e63e39d7-6ac0-4ffd-8aa3-1841a4541b55",
|
||||
""
|
||||
]
|
||||
],
|
||||
"text_variables": {}
|
||||
}
|
||||
7505
PCBs/FlipperZero/WiFi-Devboard-Pro/WiFi-Devboard-Pro.kicad_sch
Normal file
7505
PCBs/FlipperZero/WiFi-Devboard-Pro/WiFi-Devboard-Pro.kicad_sch
Normal file
File diff suppressed because it is too large
Load Diff
@@ -3,7 +3,7 @@
|
||||
<!---[](https://travis-ci.com/justcallmekoko/ESP32Marauder)--->
|
||||
<!---Shields/Badges https://shields.io/--->
|
||||
|
||||
# ESP32 Marauder v0.9.15
|
||||
# ESP32 Marauder v0.10.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>
|
||||
|
||||
@@ -109,13 +109,12 @@ void CommandLine::runCommand(String input) {
|
||||
Serial.println(HELP_CH_CMD);
|
||||
Serial.println(HELP_SETTINGS_CMD);
|
||||
Serial.println(HELP_CLEARAP_CMD_A);
|
||||
Serial.println(HELP_CLEARAP_CMD_B);
|
||||
Serial.println(HELP_REBOOT_CMD);
|
||||
Serial.println(HELP_UPDATE_CMD_A);
|
||||
Serial.println(HELP_UPDATE_CMD_B);
|
||||
|
||||
// WiFi sniff/scan
|
||||
Serial.println(HELP_SCANAP_CMD);
|
||||
Serial.println(HELP_SCANSTA_CMD);
|
||||
Serial.println(HELP_SNIFF_RAW_CMD);
|
||||
Serial.println(HELP_SNIFF_BEACON_CMD);
|
||||
Serial.println(HELP_SNIFF_PROBE_CMD);
|
||||
@@ -131,8 +130,8 @@ void CommandLine::runCommand(String input) {
|
||||
// WiFi Aux
|
||||
Serial.println(HELP_LIST_AP_CMD_A);
|
||||
Serial.println(HELP_LIST_AP_CMD_B);
|
||||
Serial.println(HELP_LIST_AP_CMD_C);
|
||||
Serial.println(HELP_SEL_CMD_A);
|
||||
Serial.println(HELP_SEL_CMD_B);
|
||||
Serial.println(HELP_SSID_CMD_A);
|
||||
Serial.println(HELP_SSID_CMD_B);
|
||||
|
||||
@@ -183,12 +182,28 @@ void CommandLine::runCommand(String input) {
|
||||
else if (cmd_args.get(0) == CLEARAP_CMD) {
|
||||
int ap_sw = this->argSearch(&cmd_args, "-a"); // APs
|
||||
int ss_sw = this->argSearch(&cmd_args, "-s"); // SSIDs
|
||||
int cl_sw = this->argSearch(&cmd_args, "-c"); // Stations
|
||||
|
||||
if (ap_sw != -1)
|
||||
if (ap_sw != -1) {
|
||||
#ifdef HAS_SCREEN
|
||||
menu_function_obj.changeMenu(&menu_function_obj.clearAPsMenu);
|
||||
#endif
|
||||
wifi_scan_obj.RunClearAPs();
|
||||
}
|
||||
|
||||
if (ss_sw != -1)
|
||||
if (ss_sw != -1) {
|
||||
#ifdef HAS_SCREEN
|
||||
menu_function_obj.changeMenu(&menu_function_obj.clearSSIDsMenu);
|
||||
#endif
|
||||
wifi_scan_obj.RunClearSSIDs();
|
||||
}
|
||||
|
||||
if (cl_sw != -1) {
|
||||
#ifdef HAS_SCREEN
|
||||
menu_function_obj.changeMenu(&menu_function_obj.clearAPsMenu);
|
||||
#endif
|
||||
wifi_scan_obj.RunClearStations();
|
||||
}
|
||||
}
|
||||
|
||||
else if (cmd_args.get(0) == SETTINGS_CMD) {
|
||||
@@ -258,6 +273,15 @@ void CommandLine::runCommand(String input) {
|
||||
#endif
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_RAW_CAPTURE, TFT_WHITE);
|
||||
}
|
||||
// Scan stations
|
||||
else if (cmd_args.get(0) == SCANSTA_CMD) {
|
||||
Serial.println("Starting Station scan. Stop with " + (String)STOPSCAN_CMD);
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.clearScreen();
|
||||
menu_function_obj.drawStatusBar();
|
||||
#endif
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_STATION, TFT_ORANGE);
|
||||
}
|
||||
// Beacon sniff
|
||||
else if (cmd_args.get(0) == SNIFF_BEACON_CMD) {
|
||||
Serial.println("Starting Beacon sniff. Stop with " + (String)STOPSCAN_CMD);
|
||||
@@ -334,6 +358,7 @@ void CommandLine::runCommand(String input) {
|
||||
int ap_beacon_sw = this->argSearch(&cmd_args, "-a");
|
||||
int src_addr_sw = this->argSearch(&cmd_args, "-s");
|
||||
int dst_addr_sw = this->argSearch(&cmd_args, "-d");
|
||||
int targ_sw = this->argSearch(&cmd_args, "-c");
|
||||
|
||||
if (attack_type_switch == -1) {
|
||||
Serial.println("You must specify an attack type");
|
||||
@@ -345,6 +370,21 @@ void CommandLine::runCommand(String input) {
|
||||
// Branch on attack type
|
||||
// Deauth
|
||||
if (attack_type == ATTACK_TYPE_DEAUTH) {
|
||||
// Default to broadcast
|
||||
if ((dst_addr_sw == -1) && (targ_sw == -1)) {
|
||||
Serial.println("Sending to broadcast...");
|
||||
wifi_scan_obj.dst_mac = "ff:ff:ff:ff:ff:ff";
|
||||
}
|
||||
// Dest addr specified
|
||||
else if (dst_addr_sw != -1) {
|
||||
wifi_scan_obj.dst_mac = cmd_args.get(dst_addr_sw + 1);
|
||||
Serial.println("Sending to " + wifi_scan_obj.dst_mac + "...");
|
||||
}
|
||||
// Station list specified
|
||||
else if (targ_sw != -1)
|
||||
Serial.println("Sending to Station list");
|
||||
|
||||
// Source addr not specified
|
||||
if (src_addr_sw == -1) {
|
||||
if (!this->apSelected()) {
|
||||
Serial.println("You don't have any targets selected. Use " + (String)SEL_CMD);
|
||||
@@ -355,8 +395,14 @@ void CommandLine::runCommand(String input) {
|
||||
menu_function_obj.drawStatusBar();
|
||||
#endif
|
||||
Serial.println("Starting Deauthentication attack. Stop with " + (String)STOPSCAN_CMD);
|
||||
wifi_scan_obj.StartScan(WIFI_ATTACK_DEAUTH, TFT_RED);
|
||||
// Station list not specified
|
||||
if (targ_sw == -1)
|
||||
wifi_scan_obj.StartScan(WIFI_ATTACK_DEAUTH, TFT_RED);
|
||||
// Station list specified
|
||||
else
|
||||
wifi_scan_obj.StartScan(WIFI_ATTACK_DEAUTH_TARGETED, TFT_ORANGE);
|
||||
}
|
||||
// Source addr specified
|
||||
else {
|
||||
String src_mac_str = cmd_args.get(src_addr_sw + 1);
|
||||
sscanf(src_mac_str.c_str(), "%2hhx:%2hhx:%2hhx:%2hhx:%2hhx:%2hhx",
|
||||
@@ -478,6 +524,8 @@ void CommandLine::runCommand(String input) {
|
||||
Serial.println("SD card is not connected. Cannot perform SD Update");
|
||||
return;
|
||||
}
|
||||
wifi_scan_obj.currentScanMode = OTA_UPDATE;
|
||||
sd_obj.runUpdate();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -488,6 +536,7 @@ void CommandLine::runCommand(String input) {
|
||||
if (cmd_args.get(0) == LIST_AP_CMD) {
|
||||
int ap_sw = this->argSearch(&cmd_args, "-a");
|
||||
int ss_sw = this->argSearch(&cmd_args, "-s");
|
||||
int cl_sw = this->argSearch(&cmd_args, "-c");
|
||||
|
||||
// List APs
|
||||
if (ap_sw != -1) {
|
||||
@@ -507,6 +556,25 @@ void CommandLine::runCommand(String input) {
|
||||
Serial.println("[" + (String)i + "] " + ssids->get(i).essid);
|
||||
}
|
||||
}
|
||||
// List Stations
|
||||
else if (cl_sw != -1) {
|
||||
char sta_mac[] = "00:00:00:00:00:00";
|
||||
for (int x = 0; x < access_points->size(); x++) {
|
||||
Serial.println("[" + (String)x + "] " + access_points->get(x).essid + " " + (String)access_points->get(x).rssi + ":");
|
||||
for (int i = 0; i < access_points->get(x).stations->size(); i++) {
|
||||
wifi_scan_obj.getMAC(sta_mac, stations->get(access_points->get(x).stations->get(i)).mac, 0);
|
||||
if (stations->get(access_points->get(x).stations->get(i)).selected) {
|
||||
Serial.print(" [" + (String)access_points->get(x).stations->get(i) + "] ");
|
||||
Serial.print(sta_mac);
|
||||
Serial.println(" (selected)");
|
||||
}
|
||||
else {
|
||||
Serial.print(" [" + (String)access_points->get(x).stations->get(i) + "] ");
|
||||
Serial.println(sta_mac);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
Serial.println("You did not specify which list to show");
|
||||
return;
|
||||
@@ -517,6 +585,7 @@ void CommandLine::runCommand(String input) {
|
||||
// Get switches
|
||||
int ap_sw = this->argSearch(&cmd_args, "-a");
|
||||
int ss_sw = this->argSearch(&cmd_args, "-s");
|
||||
int cl_sw = this->argSearch(&cmd_args, "-c");
|
||||
|
||||
// select Access points
|
||||
if (ap_sw != -1) {
|
||||
@@ -564,6 +633,50 @@ void CommandLine::runCommand(String input) {
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (cl_sw != -1) {
|
||||
LinkedList<String> sta_index = this->parseCommand(cmd_args.get(cl_sw + 1), ",");
|
||||
|
||||
// Select all Stations
|
||||
if (cmd_args.get(cl_sw + 1) == "all") {
|
||||
for (int i = 0; i < stations->size(); i++) {
|
||||
if (stations->get(i).selected) {
|
||||
// Unselect "selected" ap
|
||||
Station new_sta = stations->get(i);
|
||||
new_sta.selected = false;
|
||||
stations->set(i, new_sta);
|
||||
}
|
||||
else {
|
||||
// Select "unselected" ap
|
||||
Station new_sta = stations->get(i);
|
||||
new_sta.selected = true;
|
||||
stations->set(i, new_sta);
|
||||
}
|
||||
}
|
||||
}
|
||||
// Select specific Stations
|
||||
else {
|
||||
// Mark Stations as selected
|
||||
for (int i = 0; i < sta_index.size(); i++) {
|
||||
int index = sta_index.get(i).toInt();
|
||||
if (!this->inRange(stations->size(), index)) {
|
||||
Serial.println("Index not in range: " + (String)index);
|
||||
continue;
|
||||
}
|
||||
if (stations->get(index).selected) {
|
||||
// Unselect "selected" ap
|
||||
Station new_sta = stations->get(index);
|
||||
new_sta.selected = false;
|
||||
stations->set(index, new_sta);
|
||||
}
|
||||
else {
|
||||
// Select "unselected" ap
|
||||
Station new_sta = stations->get(index);
|
||||
new_sta.selected = true;
|
||||
stations->set(index, new_sta);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// select ssids
|
||||
else if (ss_sw != -1) {
|
||||
// Get list of indices
|
||||
|
||||
@@ -24,6 +24,7 @@ extern SDInterface sd_obj;
|
||||
extern Settings settings_obj;
|
||||
extern LinkedList<AccessPoint>* access_points;
|
||||
extern LinkedList<ssid>* ssids;
|
||||
extern LinkedList<Station>* stations;
|
||||
extern const String PROGMEM version_number;
|
||||
|
||||
//// Commands
|
||||
@@ -38,6 +39,7 @@ const char PROGMEM SETTINGS_CMD[] = "settings";
|
||||
|
||||
// WiFi sniff/scan
|
||||
const char PROGMEM SCANAP_CMD[] = "scanap";
|
||||
const char PROGMEM SCANSTA_CMD[] = "scansta";
|
||||
const char PROGMEM SNIFF_RAW_CMD[] = "sniffraw";
|
||||
const char PROGMEM SNIFF_BEACON_CMD[] = "sniffbeacon";
|
||||
const char PROGMEM SNIFF_PROBE_CMD[] = "sniffprobe";
|
||||
@@ -68,15 +70,14 @@ const char PROGMEM BT_SKIM_CMD[] = "sniffskim";
|
||||
// Admin
|
||||
const char PROGMEM HELP_HEAD[] = "============ Commands ============";
|
||||
const char PROGMEM HELP_CH_CMD[] = "channel [-s <channel>]";
|
||||
const char PROGMEM HELP_CLEARAP_CMD_A[] = "clearlist -a";
|
||||
const char PROGMEM HELP_CLEARAP_CMD_B[] = "clearlist -s";
|
||||
const char PROGMEM HELP_CLEARAP_CMD_A[] = "clearlist -a/-c/-s";
|
||||
const char PROGMEM HELP_REBOOT_CMD[] = "reboot";
|
||||
const char PROGMEM HELP_UPDATE_CMD_A[] = "update -s";
|
||||
const char PROGMEM HELP_UPDATE_CMD_B[] = "update -w";
|
||||
const char PROGMEM HELP_UPDATE_CMD_A[] = "update -s/-w";
|
||||
const char PROGMEM HELP_SETTINGS_CMD[] = "settings [-s <setting> enable/disable>]/[-r]";
|
||||
|
||||
// WiFi sniff/scan
|
||||
const char PROGMEM HELP_SCANAP_CMD[] = "scanap";
|
||||
const char PROGMEM HELP_SCANSTA_CMD[] = "scansta";
|
||||
const char PROGMEM HELP_SNIFF_RAW_CMD[] = "sniffraw";
|
||||
const char PROGMEM HELP_SNIFF_BEACON_CMD[] = "sniffbeacon";
|
||||
const char PROGMEM HELP_SNIFF_PROBE_CMD[] = "sniffprobe";
|
||||
@@ -87,13 +88,13 @@ const char PROGMEM HELP_SNIFF_PMKID_CMD[] = "sniffpmkid [-c <channel>]";
|
||||
const char PROGMEM HELP_STOPSCAN_CMD[] = "stopscan";
|
||||
|
||||
// WiFi attack
|
||||
const char PROGMEM HELP_ATTACK_CMD[] = "attack -t <beacon [-l/-r/-a]/deauth [-s <src mac>]/probe/rickroll>";
|
||||
const char PROGMEM HELP_ATTACK_CMD[] = "attack -t <beacon [-l/-r/-a]/deauth [-c]/[-s <src mac>] [-d <dst mac>]/probe/rickroll>";
|
||||
|
||||
// WiFi Aux
|
||||
const char PROGMEM HELP_LIST_AP_CMD_A[] = "list -s";
|
||||
const char PROGMEM HELP_LIST_AP_CMD_B[] = "list -a";
|
||||
const char PROGMEM HELP_SEL_CMD_A[] = "select -a <index (comma separated)>";
|
||||
const char PROGMEM HELP_SEL_CMD_B[] = "select -s <index (comma separated)>";
|
||||
const char PROGMEM HELP_LIST_AP_CMD_C[] = "list -c";
|
||||
const char PROGMEM HELP_SEL_CMD_A[] = "select -a/-s/-c <index (comma separated)>";
|
||||
const char PROGMEM HELP_SSID_CMD_A[] = "ssid -a [-g <count>/-n <name>]";
|
||||
const char PROGMEM HELP_SSID_CMD_B[] = "ssid -r <index>";
|
||||
|
||||
|
||||
@@ -18,6 +18,50 @@ void LedInterface::RunSetup() {
|
||||
}
|
||||
|
||||
void LedInterface::main(uint32_t currentTime) {
|
||||
if ((!settings_obj.loadSetting<bool>("EnableLED")) ||
|
||||
(this->current_mode == MODE_OFF)) {
|
||||
this->ledOff();
|
||||
return;
|
||||
}
|
||||
|
||||
else if (this->current_mode == MODE_RAINBOW) {
|
||||
this->rainbow();
|
||||
}
|
||||
else if (this->current_mode == MODE_ATTACK) {
|
||||
this->attackLed();
|
||||
}
|
||||
else if (this->current_mode == MODE_SNIFF) {
|
||||
this->sniffLed();
|
||||
}
|
||||
else {
|
||||
this->ledOff();
|
||||
}
|
||||
};
|
||||
|
||||
void LedInterface::setMode(uint8_t new_mode) {
|
||||
this->current_mode = new_mode;
|
||||
}
|
||||
|
||||
uint8_t LedInterface::getMode() {
|
||||
return this->current_mode;
|
||||
}
|
||||
|
||||
void LedInterface::sniffLed() {
|
||||
strip.setPixelColor(0, strip.Color(0, 0, 255));
|
||||
strip.show();
|
||||
}
|
||||
|
||||
void LedInterface::attackLed() {
|
||||
strip.setPixelColor(0, strip.Color(255, 0, 0));
|
||||
strip.show();
|
||||
}
|
||||
|
||||
void LedInterface::ledOff() {
|
||||
strip.setPixelColor(0, strip.Color(0, 0, 0));
|
||||
strip.show();
|
||||
}
|
||||
|
||||
void LedInterface::rainbow() {
|
||||
strip.setPixelColor(0, this->Wheel((0 * 256 / 100 + this->wheel_pos) % 256));
|
||||
strip.show();
|
||||
|
||||
@@ -26,7 +70,7 @@ void LedInterface::main(uint32_t currentTime) {
|
||||
this->wheel_pos = this->wheel_pos - this->wheel_speed;
|
||||
if (this->wheel_pos < 0)
|
||||
this->wheel_pos = 255;
|
||||
};
|
||||
}
|
||||
|
||||
uint32_t LedInterface::Wheel(byte WheelPos) {
|
||||
WheelPos = 255 - WheelPos;
|
||||
|
||||
@@ -1,12 +1,19 @@
|
||||
#ifndef LedInterface_h
|
||||
#define LedInterface_h
|
||||
|
||||
#include "configs.h"
|
||||
#include "settings.h"
|
||||
#include <Arduino.h>
|
||||
#include <Adafruit_NeoPixel.h>
|
||||
|
||||
#define PIN 25
|
||||
#define Pixels 1
|
||||
|
||||
#define MODE_OFF 0
|
||||
#define MODE_RAINBOW 1
|
||||
#define MODE_ATTACK 2
|
||||
#define MODE_SNIFF 3
|
||||
|
||||
extern Settings settings_obj;
|
||||
extern Adafruit_NeoPixel strip;
|
||||
|
||||
class LedInterface {
|
||||
@@ -19,12 +26,23 @@ class LedInterface {
|
||||
int wheel_speed = 1; // lower = slower
|
||||
|
||||
uint32_t Wheel(byte WheelPos);
|
||||
|
||||
uint8_t current_mode = MODE_OFF;
|
||||
|
||||
void rainbow();
|
||||
void ledOff();
|
||||
void attackLed();
|
||||
void sniffLed();
|
||||
|
||||
public:
|
||||
LedInterface();
|
||||
|
||||
void RunSetup();
|
||||
void main(uint32_t currentTime);
|
||||
|
||||
void setMode(uint8_t);
|
||||
uint8_t getMode();
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -213,34 +213,6 @@ MenuFunctions::MenuFunctions()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
if (event == LV_EVENT_VALUE_CHANGED) {
|
||||
if (lv_btn_get_state(btn) == LV_BTN_STATE_CHECKED_RELEASED) {
|
||||
//Serial.print("Toggle on: ");
|
||||
//Serial.println(btn_text);
|
||||
for (int i = 0; i < access_points->size(); i++) {
|
||||
if (access_points->get(i).essid == btn_text) {
|
||||
Serial.println("Adding AP: " + (String)access_points->get(i).essid);
|
||||
AccessPoint ap = access_points->get(i);
|
||||
ap.selected = true;
|
||||
access_points->set(i, ap);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
//Serial.print("Toggle off: ");
|
||||
//Serial.println(btn_text);
|
||||
for (int i = 0; i < access_points->size(); i++) {
|
||||
if (access_points->get(i).essid == btn_text) {
|
||||
Serial.println("Removing AP: " + (String)access_points->get(i).essid);
|
||||
AccessPoint ap = access_points->get(i);
|
||||
ap.selected = false;
|
||||
access_points->set(i, ap);
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
void MenuFunctions::displaySettingsGFX(){
|
||||
@@ -273,35 +245,119 @@ MenuFunctions::MenuFunctions()
|
||||
list_btn = lv_list_add_btn(list1, LV_SYMBOL_WIFI, buf);
|
||||
lv_btn_set_checkable(list_btn, false);
|
||||
lv_obj_set_event_cb(list_btn, settings_list_cb);
|
||||
}
|
||||
}
|
||||
|
||||
// GFX Function to build a list showing all Stations scanned
|
||||
void MenuFunctions::addStationGFX(){
|
||||
extern LinkedList<Station>* stations;
|
||||
extern LinkedList<AccessPoint>* access_points;
|
||||
extern WiFiScan wifi_scan_obj;
|
||||
|
||||
//lv_list_add_text(list1, buf);
|
||||
lv_obj_t * list1 = lv_list_create(lv_scr_act(), NULL);
|
||||
lv_obj_set_size(list1, 160, 200);
|
||||
lv_obj_set_width(list1, LV_HOR_RES);
|
||||
lv_obj_align(list1, NULL, LV_ALIGN_CENTER, 0, 0);
|
||||
|
||||
// Create the dropdown menu
|
||||
/*lv_obj_t * dd = lv_dropdown_create(list1, NULL);
|
||||
lv_dropdown_set_options(dd, "Apple\n"
|
||||
"Banana\n"
|
||||
"Orange\n"
|
||||
"Cherry\n"
|
||||
"Grape\n"
|
||||
"Raspberry\n"
|
||||
"Melon\n"
|
||||
"Orange\n"
|
||||
"Lemon\n"
|
||||
"Nuts");
|
||||
lv_obj_t * list_btn;
|
||||
|
||||
//lv_obj_align(dd, LV_ALIGN_IN_RIGHT_MID, 0, 20);
|
||||
lv_obj_align(dd, NULL, LV_ALIGN_IN_RIGHT_MID, 0, 0);
|
||||
lv_obj_set_width(dd, LV_HOR_RES / 3);
|
||||
lv_obj_set_event_cb(dd, setting_dropdown_cb);
|
||||
//lv_obj_add_event_cb(dd, setting_dropdown_cb, LV_EVENT_ALL, NULL);*/
|
||||
lv_obj_t * label;
|
||||
|
||||
list_btn = lv_list_add_btn(list1, LV_SYMBOL_CLOSE, text09);
|
||||
lv_obj_set_event_cb(list_btn, station_list_cb);
|
||||
|
||||
char addr[] = "00:00:00:00:00:00";
|
||||
for (int x = 0; x < access_points->size(); x++) {
|
||||
AccessPoint cur_ap = access_points->get(x);
|
||||
|
||||
// Add non clickable button for AP
|
||||
String full_label = "AP: " + cur_ap.essid;
|
||||
char buf[full_label.length() + 1] = {};
|
||||
full_label.toCharArray(buf, full_label.length() + 1);
|
||||
list_btn = lv_list_add_btn(list1, NULL, buf);
|
||||
lv_btn_set_checkable(list_btn, false);
|
||||
|
||||
//if (access_points->get(i).selected)
|
||||
// lv_btn_toggle(list_btn);
|
||||
int cur_ap_sta_len = access_points->get(x).stations->size();
|
||||
for (int y = 0; y < cur_ap_sta_len; y++) {
|
||||
Station cur_sta = stations->get(cur_ap.stations->get(y));
|
||||
// Convert uint8_t MAC to char array
|
||||
wifi_scan_obj.getMAC(addr, cur_sta.mac, 0);
|
||||
|
||||
//char buf[stations->get(i).mac.length() + 1] = {};
|
||||
//stations->get(i).mac.toCharArray(buf, stations->get(i).mac.length() + 1);
|
||||
|
||||
list_btn = lv_list_add_btn(list1, LV_SYMBOL_WIFI, addr);
|
||||
lv_btn_set_checkable(list_btn, true);
|
||||
lv_obj_set_event_cb(list_btn, station_list_cb);
|
||||
|
||||
if (cur_sta.selected)
|
||||
lv_btn_toggle(list_btn);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Function to work with list of Stations
|
||||
void station_list_cb(lv_obj_t * btn, lv_event_t event) {
|
||||
extern LinkedList<Station>* stations;
|
||||
extern MenuFunctions menu_function_obj;
|
||||
extern WiFiScan wifi_scan_obj;
|
||||
|
||||
//lv_obj_t * btn1 = lv_btn_create(list_btn, NULL);
|
||||
//lv_obj_set_event_cb(btn1, ap_list_cb);
|
||||
//lv_obj_align(btn1, NULL, LV_ALIGN_CENTER, 0, 0);
|
||||
//lv_btn_set_checkable(btn1, true);
|
||||
String btn_text = lv_list_get_btn_text(btn);
|
||||
String display_string = "";
|
||||
char addr[] = "00:00:00:00:00:00";
|
||||
|
||||
if (event == LV_EVENT_CLICKED) {
|
||||
if (btn_text != text09) {
|
||||
//lv_list_focus_btn(lv_obj_get_parent(lv_obj_get_parent(btn)), btn);
|
||||
}
|
||||
else {
|
||||
Serial.println("Exiting...");
|
||||
lv_obj_del_async(lv_obj_get_parent(lv_obj_get_parent(btn)));
|
||||
|
||||
for (int i = 0; i < stations->size(); i++) {
|
||||
if (stations->get(i).selected) {
|
||||
wifi_scan_obj.getMAC(addr, stations->get(i).mac, 0);
|
||||
Serial.print("Selected: ");
|
||||
Serial.println(addr);
|
||||
}
|
||||
}
|
||||
|
||||
printf("LV_EVENT_CANCEL\n");
|
||||
menu_function_obj.deinitLVGL();
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_OFF);
|
||||
display_obj.exit_draw = true; // set everything back to normal
|
||||
}
|
||||
}
|
||||
|
||||
if (event == LV_EVENT_VALUE_CHANGED) {
|
||||
if (lv_btn_get_state(btn) == LV_BTN_STATE_CHECKED_RELEASED) {
|
||||
//Serial.print("Toggle on: ");
|
||||
//Serial.println(btn_text);
|
||||
for (int i = 0; i < stations->size(); i++) {
|
||||
wifi_scan_obj.getMAC(addr, stations->get(i).mac, 0);
|
||||
if (strcmp(addr, btn_text.c_str()) == 0) {
|
||||
Serial.print("Adding Station: ");
|
||||
Serial.println(addr);
|
||||
Station sta = stations->get(i);
|
||||
sta.selected = true;
|
||||
stations->set(i, sta);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
//Serial.print("Toggle off: ");
|
||||
//Serial.println(btn_text);
|
||||
for (int i = 0; i < stations->size(); i++) {
|
||||
wifi_scan_obj.getMAC(addr, stations->get(i).mac, 0);
|
||||
if (strcmp(addr, btn_text.c_str()) == 0) {
|
||||
Serial.print("Removing Station: ");
|
||||
Serial.println(addr);
|
||||
Station sta = stations->get(i);
|
||||
sta.selected = false;
|
||||
stations->set(i, sta);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -331,14 +387,6 @@ MenuFunctions::MenuFunctions()
|
||||
|
||||
if (access_points->get(i).selected)
|
||||
lv_btn_toggle(list_btn);
|
||||
|
||||
//lv_obj_t * btn1 = lv_btn_create(list_btn, NULL);
|
||||
//lv_obj_set_event_cb(btn1, ap_list_cb);
|
||||
//lv_obj_align(btn1, NULL, LV_ALIGN_CENTER, 0, 0);
|
||||
//lv_btn_set_checkable(btn1, true);
|
||||
|
||||
//label = lv_label_create(btn1, NULL);
|
||||
//lv_label_set_text(label, buf);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -841,6 +889,7 @@ void MenuFunctions::main(uint32_t currentTime)
|
||||
(wifi_scan_obj.currentScanMode != WIFI_ATTACK_AUTH) &&
|
||||
(wifi_scan_obj.currentScanMode != WIFI_ATTACK_DEAUTH) &&
|
||||
(wifi_scan_obj.currentScanMode != WIFI_ATTACK_DEAUTH_MANUAL) &&
|
||||
(wifi_scan_obj.currentScanMode != WIFI_ATTACK_DEAUTH_TARGETED) &&
|
||||
(wifi_scan_obj.currentScanMode != WIFI_ATTACK_MIMIC) &&
|
||||
(wifi_scan_obj.currentScanMode != WIFI_ATTACK_RICK_ROLL))
|
||||
display_obj.displayBuffer();
|
||||
@@ -850,7 +899,6 @@ void MenuFunctions::main(uint32_t currentTime)
|
||||
int pre_getTouch = millis();
|
||||
|
||||
// getTouch causes a 10ms delay which makes beacon spam less effective
|
||||
//if (wifi_scan_obj.currentScanMode == WIFI_SCAN_OFF)
|
||||
#ifndef MARAUDER_MINI
|
||||
pressed = display_obj.tft.getTouch(&t_x, &t_y);
|
||||
#endif
|
||||
@@ -867,6 +915,7 @@ void MenuFunctions::main(uint32_t currentTime)
|
||||
// Stop the current scan
|
||||
if ((wifi_scan_obj.currentScanMode == WIFI_SCAN_PROBE) ||
|
||||
(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_TARGET_AP) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_TARGET_AP_FULL) ||
|
||||
@@ -879,13 +928,13 @@ void MenuFunctions::main(uint32_t currentTime)
|
||||
(wifi_scan_obj.currentScanMode == WIFI_ATTACK_AUTH) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_ATTACK_DEAUTH) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_ATTACK_DEAUTH_MANUAL) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_ATTACK_DEAUTH_TARGETED) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_ATTACK_MIMIC) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_ATTACK_RICK_ROLL) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_ATTACK_BEACON_LIST) ||
|
||||
(wifi_scan_obj.currentScanMode == BT_SCAN_ALL) ||
|
||||
(wifi_scan_obj.currentScanMode == BT_SCAN_SKIMMERS))
|
||||
{
|
||||
//Serial.println("Stopping scan...");
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_OFF);
|
||||
|
||||
// If we don't do this, the text and button coordinates will be off
|
||||
@@ -915,6 +964,7 @@ void MenuFunctions::main(uint32_t currentTime)
|
||||
// Stop the current scan
|
||||
if ((wifi_scan_obj.currentScanMode == WIFI_SCAN_PROBE) ||
|
||||
(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_TARGET_AP) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_TARGET_AP_FULL) ||
|
||||
@@ -927,6 +977,7 @@ void MenuFunctions::main(uint32_t currentTime)
|
||||
(wifi_scan_obj.currentScanMode == WIFI_ATTACK_AUTH) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_ATTACK_DEAUTH) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_ATTACK_DEAUTH_MANUAL) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_ATTACK_DEAUTH_TARGETED) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_ATTACK_MIMIC) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_ATTACK_RICK_ROLL) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_ATTACK_BEACON_LIST) ||
|
||||
@@ -936,7 +987,6 @@ void MenuFunctions::main(uint32_t currentTime)
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_ACTIVE_EAPOL) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_PACKET_MONITOR))
|
||||
{
|
||||
//Serial.println("Stopping scan...");
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_OFF);
|
||||
|
||||
// If we don't do this, the text and button coordinates will be off
|
||||
@@ -963,9 +1013,9 @@ void MenuFunctions::main(uint32_t currentTime)
|
||||
(wifi_scan_obj.currentScanMode != WIFI_ATTACK_AUTH) &&
|
||||
(wifi_scan_obj.currentScanMode != WIFI_ATTACK_DEAUTH) &&
|
||||
(wifi_scan_obj.currentScanMode != WIFI_ATTACK_DEAUTH_MANUAL) &&
|
||||
(wifi_scan_obj.currentScanMode != WIFI_ATTACK_DEAUTH_TARGETED) &&
|
||||
(wifi_scan_obj.currentScanMode != WIFI_ATTACK_MIMIC) &&
|
||||
(wifi_scan_obj.currentScanMode != WIFI_ATTACK_RICK_ROLL))
|
||||
//(wifi_scan_obj.currentScanMode != WIFI_ATTACK_BEACON_LIST))
|
||||
{
|
||||
// Need this to set all keys to false
|
||||
for (uint8_t b = 0; b < BUTTON_ARRAY_LEN; b++) {
|
||||
@@ -980,8 +1030,6 @@ void MenuFunctions::main(uint32_t currentTime)
|
||||
for (uint8_t b = 0; b < current_menu->list->size(); b++) {
|
||||
display_obj.tft.setFreeFont(MENU_FONT);
|
||||
if (display_obj.key[b].justPressed()) {
|
||||
//display_obj.key[b].drawButton2(current_menu->list->get(b).name, true); // draw invert
|
||||
//display_obj.key[b].drawButton(ML_DATUM, BUTTON_PADDING, current_menu->list->get(b).name, true);
|
||||
display_obj.key[b].drawButton(true, current_menu->list->get(b).name);
|
||||
if (current_menu->list->get(b).name != text09)
|
||||
display_obj.tft.drawXBitmap(0,
|
||||
@@ -992,14 +1040,10 @@ void MenuFunctions::main(uint32_t currentTime)
|
||||
current_menu->list->get(b).color,
|
||||
TFT_BLACK);
|
||||
}
|
||||
//else if (pressed)
|
||||
// display_obj.key[b].drawButton(false, current_menu->list->get(b).name);
|
||||
|
||||
// If button was just release, execute the button's function
|
||||
if ((display_obj.key[b].justReleased()) && (!pressed))
|
||||
{
|
||||
//display_obj.key[b].drawButton2(current_menu->list->get(b).name); // draw normal
|
||||
//display_obj.key[b].drawButton(ML_DATUM, BUTTON_PADDING, current_menu->list->get(b).name);
|
||||
display_obj.key[b].drawButton(false, current_menu->list->get(b).name);
|
||||
current_menu->list->get(b).callable();
|
||||
}
|
||||
@@ -1030,7 +1074,8 @@ void MenuFunctions::main(uint32_t currentTime)
|
||||
if (current_menu->selected > 0) {
|
||||
current_menu->selected--;
|
||||
this->buttonSelected(current_menu->selected);
|
||||
this->buttonNotSelected(current_menu->selected + 1);
|
||||
if (!current_menu->list->get(current_menu->selected + 1).selected)
|
||||
this->buttonNotSelected(current_menu->selected + 1);
|
||||
}
|
||||
}
|
||||
else if ((wifi_scan_obj.currentScanMode == WIFI_PACKET_MONITOR) ||
|
||||
@@ -1045,7 +1090,8 @@ void MenuFunctions::main(uint32_t currentTime)
|
||||
if (current_menu->selected < current_menu->list->size() - 1) {
|
||||
current_menu->selected++;
|
||||
this->buttonSelected(current_menu->selected);
|
||||
this->buttonNotSelected(current_menu->selected - 1);
|
||||
if (!current_menu->list->get(current_menu->selected - 1).selected)
|
||||
this->buttonNotSelected(current_menu->selected - 1);
|
||||
}
|
||||
}
|
||||
else if ((wifi_scan_obj.currentScanMode == WIFI_PACKET_MONITOR) ||
|
||||
@@ -1408,6 +1454,8 @@ void MenuFunctions::displaySetting(String key, Menu* menu, int index) {
|
||||
// Function to build the menus
|
||||
void MenuFunctions::RunSetup()
|
||||
{
|
||||
extern LinkedList<AccessPoint>* access_points;
|
||||
|
||||
#ifndef MARAUDER_MINI
|
||||
this->initLVGL();
|
||||
#endif
|
||||
@@ -1437,6 +1485,7 @@ void MenuFunctions::RunSetup()
|
||||
wifiSnifferMenu.list = new LinkedList<MenuNode>();
|
||||
wifiAttackMenu.list = new LinkedList<MenuNode>();
|
||||
wifiGeneralMenu.list = new LinkedList<MenuNode>();
|
||||
wifiAPMenu.list = new LinkedList<MenuNode>();
|
||||
|
||||
// Bluetooth menu stuff
|
||||
bluetoothSnifferMenu.list = new LinkedList<MenuNode>();
|
||||
@@ -1474,6 +1523,7 @@ void MenuFunctions::RunSetup()
|
||||
generateSSIDsMenu.name = text_table1[27];
|
||||
clearSSIDsMenu.name = text_table1[28];
|
||||
clearAPsMenu.name = text_table1[29];
|
||||
wifiAPMenu.name = "Access Points";
|
||||
|
||||
|
||||
// Build Main Menu
|
||||
@@ -1559,11 +1609,11 @@ void MenuFunctions::RunSetup()
|
||||
this->drawStatusBar();
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_PWN, TFT_RED);
|
||||
});
|
||||
addNodes(&wifiSnifferMenu, text_table1[48], TFT_ORANGE, NULL, ESPRESSIF, [this]() {
|
||||
/*addNodes(&wifiSnifferMenu, text_table1[48], TFT_ORANGE, NULL, ESPRESSIF, [this]() {
|
||||
display_obj.clearScreen();
|
||||
this->drawStatusBar();
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_ESPRESSIF, TFT_ORANGE);
|
||||
});
|
||||
});*/
|
||||
addNodes(&wifiSnifferMenu, text_table1[49], TFT_MAGENTA, NULL, BEACON_SNIFF, [this]() {
|
||||
display_obj.clearScreen();
|
||||
this->drawStatusBar();
|
||||
@@ -1574,6 +1624,11 @@ void MenuFunctions::RunSetup()
|
||||
this->drawStatusBar();
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_RAW_CAPTURE, TFT_WHITE);
|
||||
});
|
||||
addNodes(&wifiSnifferMenu, text_table1[59], TFT_ORANGE, NULL, PACKET_MONITOR, [this]() {
|
||||
display_obj.clearScreen();
|
||||
this->drawStatusBar();
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_STATION, TFT_WHITE);
|
||||
});
|
||||
|
||||
// Build WiFi attack menu
|
||||
wifiAttackMenu.parentMenu = &wifiMenu; // Main Menu is second menu parent
|
||||
@@ -1610,6 +1665,11 @@ void MenuFunctions::RunSetup()
|
||||
this->drawStatusBar();
|
||||
wifi_scan_obj.StartScan(WIFI_ATTACK_AP_SPAM, TFT_MAGENTA);
|
||||
});
|
||||
addNodes(&wifiAttackMenu, text_table1[62], TFT_RED, NULL, DEAUTH_SNIFF, [this]() {
|
||||
display_obj.clearScreen();
|
||||
this->drawStatusBar();
|
||||
wifi_scan_obj.StartScan(WIFI_ATTACK_DEAUTH_TARGETED, TFT_ORANGE);
|
||||
});
|
||||
//addNodes(&wifiAttackMenu, "AP Mimic Flood", TFT_PURPLE, NULL, DEAUTH_SNIFF, [this]() {
|
||||
// display_obj.clearScreen();
|
||||
// this->drawStatusBar();
|
||||
@@ -1653,13 +1713,65 @@ void MenuFunctions::RunSetup()
|
||||
changeMenu(&clearAPsMenu);
|
||||
wifi_scan_obj.RunClearAPs();
|
||||
});
|
||||
addNodes(&wifiGeneralMenu, text_table1[60], TFT_BLUE, NULL, CLEAR_ICO, [this]() {
|
||||
changeMenu(&clearAPsMenu);
|
||||
wifi_scan_obj.RunClearStations();
|
||||
});
|
||||
#ifndef MARAUDER_MINI
|
||||
// Select APs on OG
|
||||
addNodes(&wifiGeneralMenu, text_table1[56], TFT_NAVY, NULL, KEYBOARD_ICO, [this](){
|
||||
display_obj.clearScreen();
|
||||
wifi_scan_obj.currentScanMode = LV_ADD_SSID;
|
||||
wifi_scan_obj.StartScan(LV_ADD_SSID, TFT_RED);
|
||||
addAPGFX();
|
||||
});
|
||||
addNodes(&wifiGeneralMenu, text_table1[61], TFT_LIGHTGREY, NULL, KEYBOARD_ICO, [this](){
|
||||
display_obj.clearScreen();
|
||||
wifi_scan_obj.currentScanMode = LV_ADD_SSID;
|
||||
wifi_scan_obj.StartScan(LV_ADD_SSID, TFT_RED);
|
||||
addStationGFX();
|
||||
});
|
||||
#else
|
||||
// Select APs on Mini
|
||||
addNodes(&wifiGeneralMenu, text_table1[56], TFT_NAVY, NULL, KEYBOARD_ICO, [this](){
|
||||
wifiAPMenu.list->clear();
|
||||
addNodes(&wifiAPMenu, text09, TFT_LIGHTGREY, NULL, 0, [this]() {
|
||||
changeMenu(wifiAPMenu.parentMenu);
|
||||
});
|
||||
int menu_limit;
|
||||
if (access_points->size() <= BUTTON_ARRAY_LEN)
|
||||
menu_limit = access_points->size();
|
||||
else
|
||||
menu_limit = BUTTON_ARRAY_LEN;
|
||||
for (int i = 0; i < menu_limit - 1; i++) {
|
||||
addNodes(&wifiAPMenu, access_points->get(i).essid, TFT_CYAN, NULL, KEYBOARD_ICO, [this, i](){
|
||||
AccessPoint new_ap = access_points->get(i);
|
||||
new_ap.selected = !access_points->get(i).selected;
|
||||
|
||||
// Change selection status of menu node
|
||||
MenuNode new_node = current_menu->list->get(i + 1);
|
||||
new_node.selected = !current_menu->list->get(i + 1).selected;
|
||||
current_menu->list->set(i + 1, new_node);
|
||||
|
||||
// Change selection status of button key
|
||||
if (new_ap.selected) {
|
||||
this->buttonSelected(i + 1);
|
||||
//changeMenu(current_menu);
|
||||
} else {
|
||||
this->buttonNotSelected(i + 1);
|
||||
//changeMenu(current_menu);
|
||||
}
|
||||
access_points->set(i, new_ap);
|
||||
//changeMenu(wifiAPMenu.parentMenu);
|
||||
}, access_points->get(i).selected);
|
||||
}
|
||||
changeMenu(&wifiAPMenu);
|
||||
});
|
||||
|
||||
wifiAPMenu.parentMenu = &wifiGeneralMenu;
|
||||
addNodes(&wifiAPMenu, text09, TFT_LIGHTGREY, NULL, 0, [this]() {
|
||||
changeMenu(wifiAPMenu.parentMenu);
|
||||
});
|
||||
#endif
|
||||
|
||||
// Build shutdown wifi menu
|
||||
@@ -1933,7 +2045,7 @@ void MenuFunctions::addNodes(Menu * menu, String name, uint16_t color, Menu * ch
|
||||
//menu->list->add(MenuNode{name, color, place, callable});
|
||||
}
|
||||
|
||||
void MenuFunctions::buildButtons(Menu * menu)
|
||||
void MenuFunctions::buildButtons(Menu * menu, int starting_index)
|
||||
{
|
||||
//Serial.println("Bulding buttons...");
|
||||
if (menu->list != NULL)
|
||||
@@ -1943,8 +2055,8 @@ void MenuFunctions::buildButtons(Menu * menu)
|
||||
for (uint8_t i = 0; i < menu->list->size(); i++)
|
||||
{
|
||||
TFT_eSPI_Button new_button;
|
||||
char buf[menu->list->get(i).name.length() + 1] = {};
|
||||
menu->list->get(i).name.toCharArray(buf, menu->list->get(i).name.length() + 1);
|
||||
char buf[menu->list->get(starting_index + i).name.length() + 1] = {};
|
||||
menu->list->get(starting_index + i).name.toCharArray(buf, menu->list->get(starting_index + i).name.length() + 1);
|
||||
display_obj.key[i].initButton(&display_obj.tft,
|
||||
KEY_X + 0 * (KEY_W + KEY_SPACING_X),
|
||||
KEY_Y + i * (KEY_H + KEY_SPACING_Y), // x, y, w, h, outline, fill, text
|
||||
@@ -1952,7 +2064,7 @@ void MenuFunctions::buildButtons(Menu * menu)
|
||||
KEY_H,
|
||||
TFT_BLACK, // Outline
|
||||
TFT_BLACK, // Fill
|
||||
menu->list->get(i).color, // Text
|
||||
menu->list->get(starting_index + i).color, // Text
|
||||
buf,
|
||||
KEY_TEXTSIZE);
|
||||
|
||||
@@ -1999,10 +2111,10 @@ void MenuFunctions::displayCurrentMenu()
|
||||
#endif
|
||||
|
||||
#ifdef MARAUDER_MINI
|
||||
if (current_menu->selected != i)
|
||||
display_obj.key[i].drawButton(false, current_menu->list->get(i).name);
|
||||
else
|
||||
if ((current_menu->selected == i) || (current_menu->list->get(i).selected))
|
||||
display_obj.key[i].drawButton(true, current_menu->list->get(i).name);
|
||||
else
|
||||
display_obj.key[i].drawButton(false, current_menu->list->get(i).name);
|
||||
#endif
|
||||
}
|
||||
display_obj.tft.setFreeFont(NULL);
|
||||
|
||||
@@ -93,6 +93,7 @@ PROGMEM static void write_bad_usb_keyboard_event_cb(lv_obj_t * keyboard, lv_even
|
||||
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);
|
||||
|
||||
@@ -157,6 +158,7 @@ class MenuFunctions
|
||||
Menu wifiSnifferMenu;
|
||||
Menu wifiAttackMenu;
|
||||
Menu wifiGeneralMenu;
|
||||
Menu wifiAPMenu;
|
||||
|
||||
// Bluetooth menu stuff
|
||||
Menu bluetoothSnifferMenu;
|
||||
@@ -166,8 +168,6 @@ class MenuFunctions
|
||||
Menu shutdownWiFiMenu;
|
||||
Menu shutdownBLEMenu;
|
||||
Menu generateSSIDsMenu;
|
||||
Menu clearSSIDsMenu;
|
||||
Menu clearAPsMenu;
|
||||
|
||||
static void lv_tick_handler();
|
||||
|
||||
@@ -191,6 +191,8 @@ class MenuFunctions
|
||||
MenuFunctions();
|
||||
|
||||
Menu* current_menu;
|
||||
Menu clearSSIDsMenu;
|
||||
Menu clearAPsMenu;
|
||||
|
||||
Ticker tick;
|
||||
|
||||
@@ -204,10 +206,11 @@ class MenuFunctions
|
||||
void joinWiFiGFX();
|
||||
void addSSIDGFX();
|
||||
void addAPGFX();
|
||||
void addStationGFX();
|
||||
void displaySettingsGFX();
|
||||
void writeBadUSB();
|
||||
|
||||
void buildButtons(Menu* menu);
|
||||
void buildButtons(Menu* menu, int starting_index = 0);
|
||||
void changeMenu(Menu* menu);
|
||||
void drawStatusBar();
|
||||
void displayCurrentMenu();
|
||||
|
||||
@@ -8,6 +8,7 @@ int num_eapol = 0;
|
||||
|
||||
LinkedList<ssid>* ssids;
|
||||
LinkedList<AccessPoint>* access_points;
|
||||
LinkedList<Station>* stations;
|
||||
|
||||
extern "C" int ieee80211_raw_frame_sanity_check(int32_t arg, int32_t arg2, int32_t arg3){
|
||||
if (arg == 31337)
|
||||
@@ -133,6 +134,7 @@ void WiFiScan::RunSetup() {
|
||||
|
||||
ssids = new LinkedList<ssid>();
|
||||
access_points = new LinkedList<AccessPoint>();
|
||||
stations = new LinkedList<Station>();
|
||||
|
||||
#ifdef HAS_BT
|
||||
NimBLEDevice::setScanFilterMode(CONFIG_BTDM_SCAN_DUPL_TYPE_DEVICE);
|
||||
@@ -147,6 +149,18 @@ void WiFiScan::RunSetup() {
|
||||
this->initWiFi(1);
|
||||
}
|
||||
|
||||
int WiFiScan::clearStations() {
|
||||
int num_cleared = stations->size();
|
||||
stations->clear();
|
||||
Serial.println("stations: " + (String)stations->size());
|
||||
|
||||
// Now clear stations list from APs
|
||||
for (int i = 0; i < access_points->size(); i++)
|
||||
access_points->get(i).stations->clear();
|
||||
|
||||
return num_cleared;
|
||||
}
|
||||
|
||||
int WiFiScan::clearAPs() {
|
||||
int num_cleared = access_points->size();
|
||||
access_points->clear();
|
||||
@@ -283,6 +297,8 @@ void WiFiScan::StartScan(uint8_t scan_mode, uint16_t color)
|
||||
RunBeaconScan(scan_mode, color);
|
||||
else if (scan_mode == WIFI_SCAN_RAW_CAPTURE)
|
||||
RunRawScan(scan_mode, color);
|
||||
else if (scan_mode == WIFI_SCAN_STATION)
|
||||
RunStationScan(scan_mode, color);
|
||||
else if (scan_mode == WIFI_SCAN_TARGET_AP)
|
||||
RunAPScan(scan_mode, color);
|
||||
else if (scan_mode == WIFI_SCAN_TARGET_AP_FULL)
|
||||
@@ -308,6 +324,8 @@ void WiFiScan::StartScan(uint8_t scan_mode, uint16_t color)
|
||||
this->startWiFiAttacks(scan_mode, color, text_table4[8]);
|
||||
else if (scan_mode == WIFI_ATTACK_DEAUTH_MANUAL)
|
||||
this->startWiFiAttacks(scan_mode, color, text_table4[8]);
|
||||
else if (scan_mode == WIFI_ATTACK_DEAUTH_TARGETED)
|
||||
this->startWiFiAttacks(scan_mode, color, text_table4[47]);
|
||||
else if (scan_mode == WIFI_ATTACK_AP_SPAM)
|
||||
this->startWiFiAttacks(scan_mode, color, " AP Beacon Spam ");
|
||||
else if (scan_mode == BT_SCAN_ALL) {
|
||||
@@ -352,7 +370,14 @@ void WiFiScan::startWiFiAttacks(uint8_t scan_mode, uint16_t color, String title_
|
||||
display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK);
|
||||
#endif
|
||||
packets_sent = 0;
|
||||
WiFi.mode(WIFI_AP_STA);
|
||||
esp_wifi_init(&cfg);
|
||||
esp_wifi_set_storage(WIFI_STORAGE_RAM);
|
||||
esp_wifi_set_mode(WIFI_AP_STA);
|
||||
esp_wifi_start();
|
||||
esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE);
|
||||
|
||||
//WiFi.mode(WIFI_AP_STA);
|
||||
|
||||
//esp_wifi_init(&cfg);
|
||||
//esp_wifi_set_storage(WIFI_STORAGE_RAM);
|
||||
//esp_wifi_set_mode(WIFI_AP_STA);
|
||||
@@ -363,6 +388,8 @@ void WiFiScan::startWiFiAttacks(uint8_t scan_mode, uint16_t color, String title_
|
||||
this->wifi_initialized = true;
|
||||
#ifdef MARAUDER_FLIPPER
|
||||
flipper_led.attackLED();
|
||||
#else
|
||||
led_obj.setMode(MODE_ATTACK);
|
||||
#endif
|
||||
initTime = millis();
|
||||
}
|
||||
@@ -372,6 +399,8 @@ bool WiFiScan::shutdownWiFi() {
|
||||
esp_wifi_set_promiscuous(false);
|
||||
WiFi.disconnect();
|
||||
WiFi.mode(WIFI_OFF);
|
||||
|
||||
dst_mac = "ff:ff:ff:ff:ff:ff";
|
||||
|
||||
esp_wifi_set_mode(WIFI_MODE_NULL);
|
||||
esp_wifi_stop();
|
||||
@@ -379,6 +408,8 @@ bool WiFiScan::shutdownWiFi() {
|
||||
|
||||
#ifdef MARAUDER_FLIPPER
|
||||
flipper_led.offLED();
|
||||
#else
|
||||
led_obj.setMode(MODE_OFF);
|
||||
#endif
|
||||
|
||||
this->wifi_initialized = false;
|
||||
@@ -399,6 +430,8 @@ bool WiFiScan::shutdownBLE() {
|
||||
|
||||
#ifdef MARAUDER_FLIPPER
|
||||
flipper_led.offLED();
|
||||
#else
|
||||
led_obj.setMode(MODE_OFF);
|
||||
#endif
|
||||
|
||||
this->ble_initialized = false;
|
||||
@@ -418,6 +451,7 @@ void WiFiScan::StopScan(uint8_t scan_mode)
|
||||
if ((currentScanMode == WIFI_SCAN_PROBE) ||
|
||||
(currentScanMode == WIFI_SCAN_AP) ||
|
||||
(currentScanMode == WIFI_SCAN_RAW_CAPTURE) ||
|
||||
(currentScanMode == WIFI_SCAN_STATION) ||
|
||||
(currentScanMode == WIFI_SCAN_TARGET_AP) ||
|
||||
(currentScanMode == WIFI_SCAN_TARGET_AP_FULL) ||
|
||||
(currentScanMode == WIFI_SCAN_PWN) ||
|
||||
@@ -431,6 +465,7 @@ void WiFiScan::StopScan(uint8_t scan_mode)
|
||||
(currentScanMode == WIFI_ATTACK_AUTH) ||
|
||||
(currentScanMode == WIFI_ATTACK_DEAUTH) ||
|
||||
(currentScanMode == WIFI_ATTACK_DEAUTH_MANUAL) ||
|
||||
(currentScanMode == WIFI_ATTACK_DEAUTH_TARGETED) ||
|
||||
(currentScanMode == WIFI_ATTACK_MIMIC) ||
|
||||
(currentScanMode == WIFI_ATTACK_RICK_ROLL) ||
|
||||
(currentScanMode == WIFI_PACKET_MONITOR) ||
|
||||
@@ -522,6 +557,8 @@ void WiFiScan::RunAPScan(uint8_t scan_mode, uint16_t color)
|
||||
|
||||
#ifdef MARAUDER_FLIPPER
|
||||
flipper_led.sniffLED();
|
||||
#else
|
||||
led_obj.setMode(MODE_SNIFF);
|
||||
#endif
|
||||
|
||||
Serial.println(text_table4[9] + (String)access_points->size());
|
||||
@@ -578,6 +615,21 @@ void WiFiScan::RunAPScan(uint8_t scan_mode, uint16_t color)
|
||||
}
|
||||
#endif
|
||||
|
||||
void WiFiScan::RunClearStations() {
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.tft.setTextWrap(false);
|
||||
display_obj.tft.setFreeFont(NULL);
|
||||
display_obj.tft.setCursor(0, 100);
|
||||
display_obj.tft.setTextSize(1);
|
||||
display_obj.tft.setTextColor(TFT_CYAN);
|
||||
|
||||
display_obj.tft.println(F(text_table4[45]));
|
||||
display_obj.tft.println(text_table4[46] + (String)this->clearStations());
|
||||
#else
|
||||
this->clearStations();
|
||||
#endif
|
||||
}
|
||||
|
||||
void WiFiScan::RunClearAPs() {
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.tft.setTextWrap(false);
|
||||
@@ -588,8 +640,11 @@ void WiFiScan::RunClearAPs() {
|
||||
|
||||
display_obj.tft.println(F(text_table4[9]));
|
||||
display_obj.tft.println(text_table4[10] + (String)this->clearAPs());
|
||||
display_obj.tft.println(F(text_table4[45]));
|
||||
display_obj.tft.println(text_table4[46] + (String)this->clearStations());
|
||||
#else
|
||||
this->clearAPs();
|
||||
this->clearStations();
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -757,6 +812,8 @@ void WiFiScan::RunEspressifScan(uint8_t scan_mode, uint16_t color) {
|
||||
|
||||
#ifdef MARAUDER_FLIPPER
|
||||
flipper_led.sniffLED();
|
||||
#else
|
||||
led_obj.setMode(MODE_SNIFF);
|
||||
#endif
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
@@ -792,6 +849,8 @@ void WiFiScan::RunPacketMonitor(uint8_t scan_mode, uint16_t color)
|
||||
{
|
||||
#ifdef MARAUDER_FLIPPER
|
||||
flipper_led.sniffLED();
|
||||
#else
|
||||
led_obj.setMode(MODE_SNIFF);
|
||||
#endif
|
||||
|
||||
sd_obj.openCapture("packet_monitor");
|
||||
@@ -865,6 +924,8 @@ void WiFiScan::RunEapolScan(uint8_t scan_mode, uint16_t color)
|
||||
{
|
||||
#ifdef MARAUDER_FLIPPER
|
||||
flipper_led.sniffLED();
|
||||
#else
|
||||
led_obj.setMode(MODE_SNIFF);
|
||||
#endif
|
||||
|
||||
num_eapol = 0;
|
||||
@@ -998,6 +1059,8 @@ void WiFiScan::RunPwnScan(uint8_t scan_mode, uint16_t color)
|
||||
|
||||
#ifdef MARAUDER_FLIPPER
|
||||
flipper_led.sniffLED();
|
||||
#else
|
||||
led_obj.setMode(MODE_SNIFF);
|
||||
#endif
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
@@ -1036,6 +1099,8 @@ void WiFiScan::RunBeaconScan(uint8_t scan_mode, uint16_t color)
|
||||
|
||||
#ifdef MARAUDER_FLIPPER
|
||||
flipper_led.sniffLED();
|
||||
#else
|
||||
led_obj.setMode(MODE_SNIFF);
|
||||
#endif
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
@@ -1067,12 +1132,53 @@ void WiFiScan::RunBeaconScan(uint8_t scan_mode, uint16_t color)
|
||||
initTime = millis();
|
||||
}
|
||||
|
||||
void WiFiScan::RunStationScan(uint8_t scan_mode, uint16_t color)
|
||||
{
|
||||
sd_obj.openCapture("station");
|
||||
|
||||
#ifdef MARAUDER_FLIPPER
|
||||
flipper_led.sniffLED();
|
||||
#else
|
||||
led_obj.setMode(MODE_SNIFF);
|
||||
#endif
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.TOP_FIXED_AREA_2 = 48;
|
||||
display_obj.tteBar = true;
|
||||
display_obj.print_delay_1 = 15;
|
||||
display_obj.print_delay_2 = 10;
|
||||
display_obj.initScrollValues(true);
|
||||
display_obj.tft.setTextWrap(false);
|
||||
display_obj.tft.setTextColor(TFT_WHITE, color);
|
||||
#ifndef MARAUDER_MINI
|
||||
display_obj.tft.fillRect(0,16,240,16, color);
|
||||
display_obj.tft.drawCentreString(text_table1[59],120,16,2);
|
||||
display_obj.touchToExit();
|
||||
#endif
|
||||
display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK);
|
||||
display_obj.setupScrollArea(display_obj.TOP_FIXED_AREA_2, BOT_FIXED_AREA);
|
||||
#endif
|
||||
|
||||
esp_wifi_init(&cfg);
|
||||
esp_wifi_set_storage(WIFI_STORAGE_RAM);
|
||||
esp_wifi_set_mode(WIFI_MODE_NULL);
|
||||
esp_wifi_start();
|
||||
esp_wifi_set_promiscuous(true);
|
||||
esp_wifi_set_promiscuous_filter(&filt);
|
||||
esp_wifi_set_promiscuous_rx_cb(&stationSnifferCallback);
|
||||
esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE);
|
||||
this->wifi_initialized = true;
|
||||
initTime = millis();
|
||||
}
|
||||
|
||||
void WiFiScan::RunRawScan(uint8_t scan_mode, uint16_t color)
|
||||
{
|
||||
sd_obj.openCapture("raw");
|
||||
|
||||
#ifdef MARAUDER_FLIPPER
|
||||
flipper_led.sniffLED();
|
||||
#else
|
||||
led_obj.setMode(MODE_SNIFF);
|
||||
#endif
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
@@ -1110,6 +1216,8 @@ void WiFiScan::RunDeauthScan(uint8_t scan_mode, uint16_t color)
|
||||
|
||||
#ifdef MARAUDER_FLIPPER
|
||||
flipper_led.sniffLED();
|
||||
#else
|
||||
led_obj.setMode(MODE_SNIFF);
|
||||
#endif
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
@@ -1149,6 +1257,8 @@ void WiFiScan::RunProbeScan(uint8_t scan_mode, uint16_t color)
|
||||
|
||||
#ifdef MARAUDER_FLIPPER
|
||||
flipper_led.sniffLED();
|
||||
#else
|
||||
led_obj.setMode(MODE_SNIFF);
|
||||
#endif
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
@@ -1562,6 +1672,7 @@ void WiFiScan::apSnifferCallbackFull(void* buf, wifi_promiscuous_pkt_type_t type
|
||||
ap.bssid[4] = snifferPacket->payload[14];
|
||||
ap.bssid[5] = snifferPacket->payload[15];
|
||||
ap.selected = false;
|
||||
ap.stations = new LinkedList<int>();
|
||||
|
||||
ap.beacon = new LinkedList<char>();
|
||||
|
||||
@@ -1708,7 +1819,8 @@ void WiFiScan::apSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type)
|
||||
snifferPacket->payload[15]},
|
||||
false,
|
||||
NULL,
|
||||
snifferPacket->rx_ctrl.rssi};
|
||||
snifferPacket->rx_ctrl.rssi,
|
||||
new LinkedList<int>()};
|
||||
|
||||
access_points->add(ap);
|
||||
|
||||
@@ -1795,6 +1907,167 @@ void WiFiScan::beaconSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type
|
||||
}
|
||||
}
|
||||
|
||||
void WiFiScan::stationSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type) {
|
||||
bool save_packet = settings_obj.loadSetting<bool>(text_table4[7]);
|
||||
|
||||
wifi_promiscuous_pkt_t *snifferPacket = (wifi_promiscuous_pkt_t*)buf;
|
||||
WifiMgmtHdr *frameControl = (WifiMgmtHdr*)snifferPacket->payload;
|
||||
wifi_pkt_rx_ctrl_t ctrl = (wifi_pkt_rx_ctrl_t)snifferPacket->rx_ctrl;
|
||||
int len = snifferPacket->rx_ctrl.sig_len;
|
||||
|
||||
String display_string = "";
|
||||
String mac = "";
|
||||
|
||||
if (type == WIFI_PKT_MGMT)
|
||||
{
|
||||
len -= 4;
|
||||
int fctl = ntohs(frameControl->fctl);
|
||||
const wifi_ieee80211_packet_t *ipkt = (wifi_ieee80211_packet_t *)snifferPacket->payload;
|
||||
const WifiMgmtHdr *hdr = &ipkt->hdr;
|
||||
}
|
||||
|
||||
char ap_addr[] = "00:00:00:00:00:00";
|
||||
char dst_addr[] = "00:00:00:00:00:00";
|
||||
|
||||
int ap_index = 0;
|
||||
|
||||
// Check if frame has ap in list of APs and determine position
|
||||
uint8_t frame_offset = 0;
|
||||
int offsets[2] = {10, 4};
|
||||
bool matched_ap = false;
|
||||
bool ap_is_src = false;
|
||||
|
||||
bool mac_match = true;
|
||||
|
||||
for (int y = 0; y < 2; y++) {
|
||||
for (int i = 0; i < access_points->size(); i++) {
|
||||
mac_match = true;
|
||||
|
||||
for (int x = 0; x < 6; x++) {
|
||||
//Serial.println((String)snifferPacket->payload[x + 10] + " | " + (String)access_points->get(i).bssid[x]);
|
||||
if (snifferPacket->payload[x + offsets[y]] != access_points->get(i).bssid[x]) {
|
||||
mac_match = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (mac_match) {
|
||||
matched_ap = true;
|
||||
if (offsets[y] == 10)
|
||||
ap_is_src = true;
|
||||
ap_index = i;
|
||||
getMAC(ap_addr, snifferPacket->payload, offsets[y]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (matched_ap)
|
||||
break;
|
||||
}
|
||||
|
||||
// If did not find ap from list in frame, drop frame
|
||||
if (!matched_ap)
|
||||
return;
|
||||
else {
|
||||
if (ap_is_src)
|
||||
frame_offset = 4;
|
||||
else
|
||||
frame_offset = 10;
|
||||
}
|
||||
/* Stuff to care about now
|
||||
* ap_is_src
|
||||
* ap_index
|
||||
*/
|
||||
|
||||
|
||||
// Check if we already have this station
|
||||
bool in_list = false;
|
||||
for (int i = 0; i < stations->size(); i++) {
|
||||
mac_match = true;
|
||||
|
||||
for (int x = 0; x < 6; x++) {
|
||||
//Serial.println((String)snifferPacket->payload[x + 10] + " | " + (String)access_points->get(i).bssid[x]);
|
||||
if (snifferPacket->payload[x + frame_offset] != stations->get(i).mac[x]) {
|
||||
mac_match = false;
|
||||
//Serial.println("MACs do not match");
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (mac_match) {
|
||||
in_list = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
getMAC(dst_addr, snifferPacket->payload, 4);
|
||||
|
||||
// Check if dest is broadcast
|
||||
if ((in_list) || (strcmp(dst_addr, "ff:ff:ff:ff:ff:ff") == 0))
|
||||
return;
|
||||
|
||||
// Add to list of stations
|
||||
Station sta = {
|
||||
{snifferPacket->payload[frame_offset],
|
||||
snifferPacket->payload[frame_offset + 1],
|
||||
snifferPacket->payload[frame_offset + 2],
|
||||
snifferPacket->payload[frame_offset + 3],
|
||||
snifferPacket->payload[frame_offset + 4],
|
||||
snifferPacket->payload[frame_offset + 5]},
|
||||
false};
|
||||
|
||||
stations->add(sta);
|
||||
|
||||
// Print findings to serial
|
||||
Serial.print((String)stations->size() + ": ");
|
||||
|
||||
char sta_addr[] = "00:00:00:00:00:00";
|
||||
|
||||
if (ap_is_src) {
|
||||
Serial.print("ap: ");
|
||||
Serial.print(ap_addr);
|
||||
Serial.print(" -> sta: ");
|
||||
getMAC(sta_addr, snifferPacket->payload, 4);
|
||||
Serial.println(sta_addr);
|
||||
}
|
||||
else {
|
||||
Serial.print("sta: ");
|
||||
getMAC(sta_addr, snifferPacket->payload, 10);
|
||||
Serial.print(sta_addr);
|
||||
Serial.print(" -> ap: ");
|
||||
Serial.println(ap_addr);
|
||||
}
|
||||
display_string.concat(sta_addr);
|
||||
display_string.concat(" -> ");
|
||||
display_string.concat(access_points->get(ap_index).essid);
|
||||
|
||||
int temp_len = display_string.length();
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
for (int i = 0; i < 40 - temp_len; i++)
|
||||
{
|
||||
display_string.concat(" ");
|
||||
}
|
||||
|
||||
Serial.print(" ");
|
||||
|
||||
if (display_obj.display_buffer->size() == 0)
|
||||
{
|
||||
display_obj.loading = true;
|
||||
display_obj.display_buffer->add(display_string);
|
||||
display_obj.loading = false;
|
||||
}
|
||||
#endif
|
||||
|
||||
// Add station index to AP in list
|
||||
//access_points->get(ap_index).stations->add(stations->size() - 1);
|
||||
|
||||
AccessPoint ap = access_points->get(ap_index);
|
||||
ap.stations->add(stations->size() - 1);
|
||||
|
||||
access_points->set(ap_index, ap);
|
||||
|
||||
if (save_packet)
|
||||
sd_obj.addPacket(snifferPacket->payload, len);
|
||||
}
|
||||
|
||||
void WiFiScan::rawSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type)
|
||||
{
|
||||
bool save_packet = settings_obj.loadSetting<bool>(text_table4[7]);
|
||||
@@ -1887,8 +2160,12 @@ void WiFiScan::deauthSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type
|
||||
Serial.print(snifferPacket->rx_ctrl.channel);
|
||||
Serial.print(" BSSID: ");
|
||||
char addr[] = "00:00:00:00:00:00";
|
||||
char dst_addr[] = "00:00:00:00:00:00";
|
||||
getMAC(addr, snifferPacket->payload, 10);
|
||||
getMAC(dst_addr, snifferPacket->payload, 4);
|
||||
Serial.print(addr);
|
||||
Serial.print(" -> ");
|
||||
Serial.print(dst_addr);
|
||||
display_string.concat(text_table4[0]);
|
||||
display_string.concat(snifferPacket->rx_ctrl.rssi);
|
||||
|
||||
@@ -2080,24 +2357,6 @@ void WiFiScan::beaconListSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
void WiFiScan::broadcastAPBeacon(uint32_t currentTime, AccessPoint custom_ssid) {
|
||||
set_channel = random(1,12);
|
||||
esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE);
|
||||
delay(1);
|
||||
|
||||
// Randomize SRC MAC
|
||||
packet[10] = packet[16] = custom_ssid.bssid[0];
|
||||
packet[11] = packet[17] = custom_ssid.bssid[1];
|
||||
packet[12] = packet[18] = custom_ssid.bssid[2];
|
||||
packet[13] = packet[19] = custom_ssid.bssid[3];
|
||||
packet[14] = packet[20] = custom_ssid.bssid[4];
|
||||
packet[15] = packet[21] = custom_ssid.bssid[5];
|
||||
|
||||
char ESSID[custom_ssid.essid.length() + 1] = {};
|
||||
custom_ssid.essid.toCharArray(ESSID, custom_ssid.essid.length() + 1);
|
||||
}*/
|
||||
|
||||
void WiFiScan::broadcastCustomBeacon(uint32_t current_time, AccessPoint custom_ssid) {
|
||||
set_channel = random(1,12);
|
||||
esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE);
|
||||
@@ -2364,7 +2623,71 @@ void WiFiScan::sendProbeAttack(uint32_t currentTime) {
|
||||
}
|
||||
}
|
||||
|
||||
void WiFiScan::sendDeauthFrame(uint8_t bssid[6], int channel) {
|
||||
void WiFiScan::sendDeauthFrame(int bssid[6], int channel, uint8_t mac[6]) {
|
||||
WiFiScan::set_channel = channel;
|
||||
esp_wifi_set_channel(channel, WIFI_SECOND_CHAN_NONE);
|
||||
delay(1);
|
||||
|
||||
// Build AP source packet
|
||||
deauth_frame_default[4] = mac[0];
|
||||
deauth_frame_default[5] = mac[1];
|
||||
deauth_frame_default[6] = mac[2];
|
||||
deauth_frame_default[7] = mac[3];
|
||||
deauth_frame_default[8] = mac[4];
|
||||
deauth_frame_default[9] = mac[5];
|
||||
|
||||
deauth_frame_default[10] = bssid[0];
|
||||
deauth_frame_default[11] = bssid[1];
|
||||
deauth_frame_default[12] = bssid[2];
|
||||
deauth_frame_default[13] = bssid[3];
|
||||
deauth_frame_default[14] = bssid[4];
|
||||
deauth_frame_default[15] = bssid[5];
|
||||
|
||||
deauth_frame_default[16] = bssid[0];
|
||||
deauth_frame_default[17] = bssid[1];
|
||||
deauth_frame_default[18] = bssid[2];
|
||||
deauth_frame_default[19] = bssid[3];
|
||||
deauth_frame_default[20] = bssid[4];
|
||||
deauth_frame_default[21] = bssid[5];
|
||||
|
||||
// Send packet
|
||||
esp_wifi_80211_tx(WIFI_IF_AP, deauth_frame_default, sizeof(deauth_frame_default), false);
|
||||
esp_wifi_80211_tx(WIFI_IF_AP, deauth_frame_default, sizeof(deauth_frame_default), false);
|
||||
esp_wifi_80211_tx(WIFI_IF_AP, deauth_frame_default, sizeof(deauth_frame_default), false);
|
||||
|
||||
packets_sent = packets_sent + 3;
|
||||
|
||||
// Build AP dest packet
|
||||
deauth_frame_default[4] = bssid[0];
|
||||
deauth_frame_default[5] = bssid[1];
|
||||
deauth_frame_default[6] = bssid[2];
|
||||
deauth_frame_default[7] = bssid[3];
|
||||
deauth_frame_default[8] = bssid[4];
|
||||
deauth_frame_default[9] = bssid[5];
|
||||
|
||||
deauth_frame_default[10] = mac[0];
|
||||
deauth_frame_default[11] = mac[1];
|
||||
deauth_frame_default[12] = mac[2];
|
||||
deauth_frame_default[13] = mac[3];
|
||||
deauth_frame_default[14] = mac[4];
|
||||
deauth_frame_default[15] = mac[5];
|
||||
|
||||
deauth_frame_default[16] = mac[0];
|
||||
deauth_frame_default[17] = mac[1];
|
||||
deauth_frame_default[18] = mac[2];
|
||||
deauth_frame_default[19] = mac[3];
|
||||
deauth_frame_default[20] = mac[4];
|
||||
deauth_frame_default[21] = mac[5];
|
||||
|
||||
// Send packet
|
||||
esp_wifi_80211_tx(WIFI_IF_AP, deauth_frame_default, sizeof(deauth_frame_default), false);
|
||||
esp_wifi_80211_tx(WIFI_IF_AP, deauth_frame_default, sizeof(deauth_frame_default), false);
|
||||
esp_wifi_80211_tx(WIFI_IF_AP, deauth_frame_default, sizeof(deauth_frame_default), false);
|
||||
|
||||
packets_sent = packets_sent + 3;
|
||||
}
|
||||
|
||||
void WiFiScan::sendDeauthFrame(uint8_t bssid[6], int channel, String dst_mac_str) {
|
||||
// Itterate through all access points in list
|
||||
// Check if active
|
||||
WiFiScan::set_channel = channel;
|
||||
@@ -2372,6 +2695,9 @@ void WiFiScan::sendDeauthFrame(uint8_t bssid[6], int channel) {
|
||||
delay(1);
|
||||
|
||||
// Build packet
|
||||
|
||||
sscanf(dst_mac_str.c_str(), "%2hhx:%2hhx:%2hhx:%2hhx:%2hhx:%2hhx",
|
||||
&deauth_frame_default[4], &deauth_frame_default[5], &deauth_frame_default[6], &deauth_frame_default[7], &deauth_frame_default[8], &deauth_frame_default[9]);
|
||||
|
||||
deauth_frame_default[10] = bssid[0];
|
||||
deauth_frame_default[11] = bssid[1];
|
||||
@@ -2395,7 +2721,7 @@ void WiFiScan::sendDeauthFrame(uint8_t bssid[6], int channel) {
|
||||
packets_sent = packets_sent + 3;
|
||||
}
|
||||
|
||||
void WiFiScan::sendDeauthAttack(uint32_t currentTime) {
|
||||
void WiFiScan::sendDeauthAttack(uint32_t currentTime, String dst_mac_str) {
|
||||
// Itterate through all access points in list
|
||||
for (int i = 0; i < access_points->size(); i++) {
|
||||
|
||||
@@ -2406,6 +2732,9 @@ void WiFiScan::sendDeauthAttack(uint32_t currentTime) {
|
||||
delay(1);
|
||||
|
||||
// Build packet
|
||||
|
||||
sscanf(dst_mac_str.c_str(), "%2hhx:%2hhx:%2hhx:%2hhx:%2hhx:%2hhx",
|
||||
&deauth_frame_default[4], &deauth_frame_default[5], &deauth_frame_default[6], &deauth_frame_default[7], &deauth_frame_default[8], &deauth_frame_default[9]);
|
||||
|
||||
deauth_frame_default[10] = access_points->get(i).bssid[0];
|
||||
deauth_frame_default[11] = access_points->get(i).bssid[1];
|
||||
@@ -3133,6 +3462,7 @@ void WiFiScan::main(uint32_t currentTime)
|
||||
// WiFi operations
|
||||
if ((currentScanMode == WIFI_SCAN_PROBE) ||
|
||||
(currentScanMode == WIFI_SCAN_AP) ||
|
||||
(currentScanMode == WIFI_SCAN_STATION) ||
|
||||
(currentScanMode == WIFI_SCAN_TARGET_AP) ||
|
||||
(currentScanMode == WIFI_SCAN_PWN) ||
|
||||
(currentScanMode == WIFI_SCAN_ESPRESSIF) ||
|
||||
@@ -3189,7 +3519,7 @@ void WiFiScan::main(uint32_t currentTime)
|
||||
}
|
||||
else if (currentScanMode == WIFI_ATTACK_DEAUTH) {
|
||||
for (int i = 0; i < 55; i++)
|
||||
this->sendDeauthAttack(currentTime);
|
||||
this->sendDeauthAttack(currentTime, this->dst_mac);
|
||||
|
||||
if (currentTime - initTime >= 1000) {
|
||||
initTime = millis();
|
||||
@@ -3209,7 +3539,7 @@ void WiFiScan::main(uint32_t currentTime)
|
||||
}
|
||||
else if (currentScanMode == WIFI_ATTACK_DEAUTH_MANUAL) {
|
||||
for (int i = 0; i < 55; i++)
|
||||
this->sendDeauthFrame(this->src_mac, this->set_channel);
|
||||
this->sendDeauthFrame(this->src_mac, this->set_channel, this->dst_mac);
|
||||
|
||||
if (currentTime - initTime >= 1000) {
|
||||
initTime = millis();
|
||||
@@ -3227,6 +3557,43 @@ void WiFiScan::main(uint32_t currentTime)
|
||||
packets_sent = 0;
|
||||
}
|
||||
}
|
||||
else if (currentScanMode == WIFI_ATTACK_DEAUTH_TARGETED) {
|
||||
// Loop through each AP
|
||||
for (int x = 0; x < access_points->size(); x++) {
|
||||
// Only get selected APs
|
||||
if (access_points->get(x).selected) {
|
||||
AccessPoint cur_ap = access_points->get(x);
|
||||
// Loop through each AP's Station
|
||||
for (int i = 0; i < cur_ap.stations->size(); i++) {
|
||||
// Only get selected Stations
|
||||
if (stations->get(cur_ap.stations->get(i)).selected) {
|
||||
Station cur_sta = stations->get(cur_ap.stations->get(i));
|
||||
|
||||
// Send deauths for each selected AP's selected Station
|
||||
for (int y = 0; y < 25; y++)
|
||||
this->sendDeauthFrame(cur_ap.bssid, cur_ap.channel, cur_sta.mac);
|
||||
|
||||
// Display packets sent on screen
|
||||
if (currentTime - initTime >= 1000) {
|
||||
initTime = millis();
|
||||
String displayString = "";
|
||||
String displayString2 = "";
|
||||
displayString.concat(text18);
|
||||
displayString.concat(packets_sent);
|
||||
for (int x = 0; x < STANDARD_FONT_CHAR_LIMIT; x++)
|
||||
displayString2.concat(" ");
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK);
|
||||
display_obj.showCenterText(displayString2, 160);
|
||||
display_obj.showCenterText(displayString, 160);
|
||||
#endif
|
||||
packets_sent = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ((currentScanMode == WIFI_ATTACK_MIMIC)) {
|
||||
// Need this for loop because getTouch causes ~10ms delay
|
||||
// which makes beacon spam less effective
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
#include "settings.h"
|
||||
#include "Assets.h"
|
||||
#include "flipperLED.h"
|
||||
#include "LedInterface.h"
|
||||
//#include "MenuFunctions.h"
|
||||
|
||||
#define bad_list_length 3
|
||||
@@ -64,6 +65,8 @@
|
||||
#define WIFI_SCAN_ACTIVE_EAPOL 23
|
||||
#define WIFI_ATTACK_DEAUTH_MANUAL 24
|
||||
#define WIFI_SCAN_RAW_CAPTURE 25
|
||||
#define WIFI_SCAN_STATION 26
|
||||
#define WIFI_ATTACK_DEAUTH_TARGETED 27
|
||||
|
||||
#define GRAPH_REFRESH 100
|
||||
|
||||
@@ -78,6 +81,7 @@ extern BatteryInterface battery_obj;
|
||||
extern TemperatureInterface temp_obj;
|
||||
extern Settings settings_obj;
|
||||
extern flipperLED flipper_led;
|
||||
extern LedInterface led_obj;
|
||||
|
||||
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);
|
||||
@@ -95,6 +99,12 @@ struct AccessPoint {
|
||||
bool selected;
|
||||
LinkedList<char>* beacon;
|
||||
int rssi;
|
||||
LinkedList<int>* stations;
|
||||
};
|
||||
|
||||
struct Station {
|
||||
uint8_t mac[6];
|
||||
bool selected;
|
||||
};
|
||||
|
||||
class WiFiScan
|
||||
@@ -235,8 +245,9 @@ class WiFiScan
|
||||
void tftDrawColorKey();
|
||||
void tftDrawGraphObjects();
|
||||
void sendProbeAttack(uint32_t currentTime);
|
||||
void sendDeauthAttack(uint32_t currentTime);
|
||||
void sendDeauthFrame(uint8_t bssid[6], int channel);
|
||||
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 broadcastRandomSSID(uint32_t currentTime);
|
||||
void broadcastCustomBeacon(uint32_t current_time, ssid custom_ssid);
|
||||
void broadcastCustomBeacon(uint32_t current_time, AccessPoint custom_ssid);
|
||||
@@ -252,6 +263,7 @@ class WiFiScan
|
||||
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);
|
||||
void RunStationScan(uint8_t scan_mode, uint16_t color);
|
||||
void RunDeauthScan(uint8_t scan_mode, uint16_t color);
|
||||
void RunEapolScan(uint8_t scan_mode, uint16_t color);
|
||||
void RunProbeScan(uint8_t scan_mode, uint16_t color);
|
||||
@@ -283,7 +295,7 @@ class WiFiScan
|
||||
String old_free_ram = "";
|
||||
String connected_network = "";
|
||||
|
||||
byte dst_mac[6] = {};
|
||||
String dst_mac = "ff:ff:ff:ff:ff:ff";
|
||||
byte src_mac[6] = {};
|
||||
|
||||
//lv_obj_t * scr = lv_cont_create(NULL, NULL);
|
||||
@@ -294,6 +306,7 @@ class WiFiScan
|
||||
void RunSetup();
|
||||
int clearSSIDs();
|
||||
int clearAPs();
|
||||
int clearStations();
|
||||
bool addSSID(String essid);
|
||||
int generateSSIDs(int count = 20);
|
||||
bool shutdownWiFi();
|
||||
@@ -311,6 +324,7 @@ class WiFiScan
|
||||
void RunGenerateSSIDs(int count = 20);
|
||||
void RunClearSSIDs();
|
||||
void RunClearAPs();
|
||||
void RunClearStations();
|
||||
void channelHop();
|
||||
uint8_t currentScanMode = 0;
|
||||
void main(uint32_t currentTime);
|
||||
@@ -322,6 +336,7 @@ class WiFiScan
|
||||
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);
|
||||
static void stationSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type);
|
||||
static void apSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type);
|
||||
static void apSnifferCallbackFull(void* buf, wifi_promiscuous_pkt_type_t type);
|
||||
static void deauthSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type);
|
||||
|
||||
@@ -10,8 +10,9 @@
|
||||
//#define MARAUDER_KIT
|
||||
//#define GENERIC_ESP32
|
||||
#define MARAUDER_FLIPPER
|
||||
//#define ESP32_LDDB
|
||||
|
||||
#define MARAUDER_VERSION "v0.9.16"
|
||||
#define MARAUDER_VERSION "v0.10.0"
|
||||
|
||||
//// BUTTON DEFINITIONS
|
||||
#ifdef MARAUDER_MINI
|
||||
@@ -353,6 +354,10 @@
|
||||
#ifdef MARAUDER_FLIPPER
|
||||
#define SD_CS 10
|
||||
#endif
|
||||
|
||||
#ifdef ESP32_LDDB
|
||||
#define SD_CS 4
|
||||
#endif
|
||||
//// END SD DEFINITIONS
|
||||
|
||||
//// SCREEN STUFF
|
||||
@@ -403,4 +408,12 @@
|
||||
#endif
|
||||
//// END SCREEN STUFF
|
||||
|
||||
//// NEOPIXEL STUFF
|
||||
#ifdef ESP32_LDDB
|
||||
#define PIN 17
|
||||
#else
|
||||
#define PIN 25
|
||||
#endif
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -142,10 +142,6 @@ void setup()
|
||||
// Serial.println("Does not have screen");
|
||||
//#endif
|
||||
|
||||
#ifdef MARAUDER_FLIPPER
|
||||
flipper_led.RunSetup();
|
||||
#endif
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.RunSetup();
|
||||
display_obj.tft.setTextColor(TFT_WHITE, TFT_BLACK);
|
||||
@@ -191,6 +187,10 @@ void setup()
|
||||
|
||||
settings_obj.begin();
|
||||
|
||||
#ifdef MARAUDER_FLIPPER
|
||||
flipper_led.RunSetup();
|
||||
#endif
|
||||
|
||||
//Serial.println("This is a test Channel: " + (String)settings_obj.loadSetting<uint8_t>("Channel"));
|
||||
//if (settings_obj.loadSetting<bool>( "Force PMKID"))
|
||||
// Serial.println("This is a test Force PMKID: true");
|
||||
@@ -314,6 +314,9 @@ void loop()
|
||||
#ifdef HAS_SCREEN
|
||||
menu_function_obj.main(currentTime);
|
||||
#endif
|
||||
#ifndef MARAUDER_FLIPPER
|
||||
led_obj.main(currentTime);
|
||||
#endif
|
||||
//cli_obj.main(currentTime);
|
||||
}
|
||||
if (wifi_scan_obj.currentScanMode == OTA_UPDATE)
|
||||
@@ -336,6 +339,9 @@ void loop()
|
||||
display_obj.main(wifi_scan_obj.currentScanMode);
|
||||
menu_function_obj.main(currentTime);
|
||||
#endif
|
||||
#ifndef MARAUDER_FLIPPER
|
||||
led_obj.main(currentTime);
|
||||
#endif
|
||||
//cli_obj.main(currentTime);
|
||||
delay(1);
|
||||
}
|
||||
|
||||
BIN
esp32_marauder/esp32_marauder.ino.d32.bin
Normal file
BIN
esp32_marauder/esp32_marauder.ino.d32.bin
Normal file
Binary file not shown.
@@ -5,6 +5,13 @@ void flipperLED::RunSetup() {
|
||||
pinMode(G_PIN, OUTPUT);
|
||||
pinMode(R_PIN, OUTPUT);
|
||||
|
||||
if (!settings_obj.loadSetting<bool>("EnableLED")) {
|
||||
digitalWrite(B_PIN, HIGH);
|
||||
digitalWrite(G_PIN, HIGH);
|
||||
digitalWrite(R_PIN, HIGH);
|
||||
return;
|
||||
}
|
||||
|
||||
delay(50);
|
||||
|
||||
digitalWrite(B_PIN, LOW);
|
||||
@@ -19,14 +26,20 @@ void flipperLED::RunSetup() {
|
||||
}
|
||||
|
||||
void flipperLED::attackLED() {
|
||||
if (!settings_obj.loadSetting<bool>("EnableLED"))
|
||||
return;
|
||||
|
||||
digitalWrite(B_PIN, HIGH);
|
||||
digitalWrite(G_PIN, HIGH);
|
||||
digitalWrite(R_PIN, HIGH);
|
||||
digitalWrite(R_PIN, HIGH);
|
||||
delay(10);
|
||||
digitalWrite(R_PIN, LOW);
|
||||
}
|
||||
|
||||
void flipperLED::sniffLED() {
|
||||
if (!settings_obj.loadSetting<bool>("EnableLED"))
|
||||
return;
|
||||
|
||||
digitalWrite(B_PIN, HIGH);
|
||||
digitalWrite(G_PIN, HIGH);
|
||||
digitalWrite(R_PIN, HIGH);
|
||||
@@ -35,6 +48,9 @@ void flipperLED::sniffLED() {
|
||||
}
|
||||
|
||||
void flipperLED::offLED() {
|
||||
if (!settings_obj.loadSetting<bool>("EnableLED"))
|
||||
return;
|
||||
|
||||
digitalWrite(B_PIN, HIGH);
|
||||
digitalWrite(G_PIN, HIGH);
|
||||
digitalWrite(R_PIN, HIGH);
|
||||
|
||||
@@ -1,12 +1,17 @@
|
||||
#ifndef flipperLED_h
|
||||
#define flipperLED_h
|
||||
|
||||
#include "configs.h"
|
||||
#include "settings.h"
|
||||
|
||||
#include <Arduino.h>
|
||||
|
||||
#define B_PIN 4
|
||||
#define G_PIN 5
|
||||
#define R_PIN 6
|
||||
|
||||
extern Settings settings_obj;
|
||||
|
||||
class flipperLED {
|
||||
|
||||
public:
|
||||
|
||||
@@ -97,6 +97,10 @@ PROGMEM const char text1_55[] = "Join WiFi";
|
||||
PROGMEM const char text1_56[] = "Select APs";
|
||||
PROGMEM const char text1_57[] = "AP Clone Spam";
|
||||
PROGMEM const char text1_58[] = "Raw Capture";
|
||||
PROGMEM const char text1_59[] = "Station Sniff";
|
||||
PROGMEM const char text1_60[] = "Clear Stations";
|
||||
PROGMEM const char text1_61[] = "Select Stations";
|
||||
PROGMEM const char text1_62[] = "Deauth Targeted";
|
||||
|
||||
|
||||
//SDInterface.cpp texts
|
||||
@@ -170,12 +174,15 @@ PROGMEM const char text4_41[] = " Bluetooth Sniff ";
|
||||
PROGMEM const char text4_42[] = " Detect Card Skimmers ";
|
||||
PROGMEM const char text4_43[] = "Scanning for\nBluetooth-enabled skimmers\nHC-03, HC-05, and HC-06...";
|
||||
PROGMEM const char text4_44[] = " AP Scan ";
|
||||
PROGMEM const char text4_45[] = "Clearing Stations...";
|
||||
PROGMEM const char text4_46[] = "Stations Cleared: ";
|
||||
PROGMEM const char text4_47[] = "Targeted Deauth";
|
||||
|
||||
//Making tables
|
||||
PROGMEM const char *text_table0[] = {text0_0,text0_1, text0_2, text0_3, text0_4, text0_5, text0_6, text0_7, text0_8};
|
||||
PROGMEM const char *text_table1[] = {text1_0,text1_1,text1_2,text1_3,text1_4,text1_5,text1_6,text1_7,text1_8,text1_9,text1_10,text1_11,text1_12,text1_13,text1_14,text1_15,text1_16,text1_17,text1_18,text1_19,text1_20,text1_21,text1_22,text1_23,text1_24,text1_25,text1_26,text1_27,text1_28,text1_29,text1_30,text1_31,text1_32,text1_33,text1_34,text1_35,text1_36,text1_37,text1_38,text1_39,text1_40,text1_41,text1_42,text1_43,text1_44,text1_45,text1_46,text1_47,text1_48,text1_49,text1_50,text1_51,text1_52,text1_53,text1_54,text1_55,text1_56,text1_57,text1_58};
|
||||
PROGMEM const char *text_table1[] = {text1_0,text1_1,text1_2,text1_3,text1_4,text1_5,text1_6,text1_7,text1_8,text1_9,text1_10,text1_11,text1_12,text1_13,text1_14,text1_15,text1_16,text1_17,text1_18,text1_19,text1_20,text1_21,text1_22,text1_23,text1_24,text1_25,text1_26,text1_27,text1_28,text1_29,text1_30,text1_31,text1_32,text1_33,text1_34,text1_35,text1_36,text1_37,text1_38,text1_39,text1_40,text1_41,text1_42,text1_43,text1_44,text1_45,text1_46,text1_47,text1_48,text1_49,text1_50,text1_51,text1_52,text1_53,text1_54,text1_55,text1_56,text1_57,text1_58,text1_59,text1_60,text1_61,text1_62};
|
||||
PROGMEM const char *text_table2[] = {text2_0,text2_1,text2_2,text2_3,text2_4,text2_5,text2_6,text2_7,text2_8,text2_9,text2_10,text2_11,text2_12,text2_13,text2_14};
|
||||
PROGMEM const char *text_table3[] = {text3_0,text3_1,text3_2,text3_3,text3_4,text3_5};
|
||||
PROGMEM const char *text_table4[] = {text4_0,text4_1,text4_2,text4_3,text4_4,text4_5,text4_6,text4_7,text1_54,text4_9,text4_10,text4_11,text4_12,text4_13,text4_14,text4_15,text4_16,text4_17,text4_18,text4_19,text4_20,text4_21,text4_22,text4_23,text4_24,text4_25,text4_26,text4_27,text4_28,text4_29,text4_30,text4_31,text4_32,text4_33,text4_34,text4_35,text4_36,text4_37,text4_38,text4_39,text4_40,text4_41,text4_42,text4_43,text4_44};
|
||||
PROGMEM const char *text_table4[] = {text4_0,text4_1,text4_2,text4_3,text4_4,text4_5,text4_6,text4_7,text1_54,text4_9,text4_10,text4_11,text4_12,text4_13,text4_14,text4_15,text4_16,text4_17,text4_18,text4_19,text4_20,text4_21,text4_22,text4_23,text4_24,text4_25,text4_26,text4_27,text4_28,text4_29,text4_30,text4_31,text4_32,text4_33,text4_34,text4_35,text4_36,text4_37,text4_38,text4_39,text4_40,text4_41,text4_42,text4_43,text4_44,text4_45,text4_46,text4_47};
|
||||
|
||||
#endif
|
||||
|
||||
1
esp32_marauder/libraries/Adafruit_NeoPixel
Submodule
1
esp32_marauder/libraries/Adafruit_NeoPixel
Submodule
Submodule esp32_marauder/libraries/Adafruit_NeoPixel added at 7fe11e4c40
1
esp32_marauder/libraries/ArduinoJson
Submodule
1
esp32_marauder/libraries/ArduinoJson
Submodule
Submodule esp32_marauder/libraries/ArduinoJson added at 079ccadbee
1
esp32_marauder/libraries/JPEGDecoder
Submodule
1
esp32_marauder/libraries/JPEGDecoder
Submodule
Submodule esp32_marauder/libraries/JPEGDecoder added at c0fad79035
1
esp32_marauder/libraries/LinkedList
Submodule
1
esp32_marauder/libraries/LinkedList
Submodule
Submodule esp32_marauder/libraries/LinkedList added at b22db1e7a7
1
esp32_marauder/libraries/NimBLE-Arduino
Submodule
1
esp32_marauder/libraries/NimBLE-Arduino
Submodule
Submodule esp32_marauder/libraries/NimBLE-Arduino added at 0d9f039ba7
1
esp32_marauder/libraries/SwitchLib
Submodule
1
esp32_marauder/libraries/SwitchLib
Submodule
Submodule esp32_marauder/libraries/SwitchLib added at ceeaeb2adb
1
esp32_marauder/libraries/TFT_eSPI
Submodule
1
esp32_marauder/libraries/TFT_eSPI
Submodule
Submodule esp32_marauder/libraries/TFT_eSPI added at ddabd86dc8
1
esp32_marauder/libraries/lv_arduino
Submodule
1
esp32_marauder/libraries/lv_arduino
Submodule
Submodule esp32_marauder/libraries/lv_arduino added at 6e833d8952
@@ -282,6 +282,12 @@ bool Settings::createDefaultSettings(fs::FS &fs) {
|
||||
jsonBuffer["Settings"][2]["range"]["min"] = false;
|
||||
jsonBuffer["Settings"][2]["range"]["max"] = true;
|
||||
|
||||
jsonBuffer["Settings"][3]["name"] = "EnableLED";
|
||||
jsonBuffer["Settings"][3]["type"] = "bool";
|
||||
jsonBuffer["Settings"][3]["value"] = true;
|
||||
jsonBuffer["Settings"][3]["range"]["min"] = false;
|
||||
jsonBuffer["Settings"][3]["range"]["max"] = true;
|
||||
|
||||
//jsonBuffer.printTo(settingsFile);
|
||||
if (serializeJson(jsonBuffer, settingsFile) == 0) {
|
||||
Serial.println(F("Failed to write to file"));
|
||||
|
||||
8728
pictures/Marauder&Horse.dxf
Normal file
8728
pictures/Marauder&Horse.dxf
Normal file
File diff suppressed because it is too large
Load Diff
BIN
pictures/jcmk_icon_black.png
Normal file
BIN
pictures/jcmk_icon_black.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.9 KiB |
Reference in New Issue
Block a user