Marshall

🚀 MARSHALL — Ultimate RF Security Toolkit

GitHub license GitHub stars GitHub issues Platform Arduino


📖 Table of Contents


⚡ About Marshall

Marshall is a powerful, open-source RF security testing toolkit designed for educational purposes and security research. Built around the ESP32 microcontroller and three NRF24L01+ PA+LNA modules, this project provides a comprehensive platform for understanding wireless communication vulnerabilities in the 2.4GHz band.

“Security is not a product, but a process.” — Bruce Schneier

Marshall is the evolution of projects like RF-Clown and VOID, combining their strengths into a single, unified, and powerful tool. Whether you’re a cybersecurity student, an electronics enthusiast, or a professional penetration tester, Marshall offers a hands-on learning experience that bridges theory and practice.


🎯 Key Features

Feature Description
🔴 8+ Jamming Modes WiFi, BLE, Bluetooth Classic, Video TX, RC, Zigbee, USB Wireless, NRF24, and All-in-One mode
📡 Triple NRF24 Modules Three modules working simultaneously for maximum coverage and power
🌐 Web Interface Full control via any browser with a responsive, cyberpunk-style UI
🖥️ OLED Display Real-time status, active mode, and system information
💡 4 Status LEDs Visual feedback for different operational states
🎮 Button Control Change modes and toggle activation without a computer
🔌 Standalone Operation No PC required after initial setup
📦 Portable Design Compact and battery-ready for field use

🛠️ Hardware Requirements

Component Specification Quantity
Microcontroller ESP32-WROOM-32 (38-pin) 1
RF Modules NRF24L01+ PA+LNA (with external antenna) 3
Display OLED 0.96” I2C (SSD1306, 128x64) 1
Voltage Regulator AMS1117-3.3 (1A or higher) 1
Capacitors 10µF - 100µF (electrolytic) 3+
Push Buttons Tactile switch (4-pin) 3
LEDs Green, Red, Blue, Yellow 4
Resistors 220Ω - 330Ω 4
Power Supply 5V/2A adapter or USB-C 1

📋 Bill of Materials (BOM)

Item Description Estimated Price (USD)
ESP32 Dev Board 38-pin ESP32-WROOM-32 $8-15
NRF24L01+ PA+LNA With external antenna (x3) $12-18
OLED 0.96” I2C SSD1306, 128x64 $3-5
AMS1117-3.3 Voltage regulator $1-2
Capacitors 10µF, 100µF $1-2
Push Buttons Tactile switches (x3) $1-2
LEDs + Resistors Assorted colors + 220Ω $2-3
Breadboard 400-point or larger $3-5
Jumper Wires Male-to-male, male-to-female $5-10
Total   ~$36-62

🔌 Wiring Diagram

SPI Bus (Shared — Connect to ALL NRF24 Modules)

ESP32 Pin NRF24 Pin Description
GPIO 18 SCK SPI Clock
GPIO 19 MISO Master In Slave Out
GPIO 23 MOSI Master Out Slave In
3.3V (Regulator) VCC Power (3.3V)
GND GND Ground

Dedicated Pins (CE & CSN — Unique per Module)

Module CE Pin (ESP32) CSN Pin (ESP32)
NRF1 GPIO 16 GPIO 15
NRF2 GPIO 22 GPIO 21
NRF3 GPIO 4 GPIO 2

OLED (I2C)

OLED Pin ESP32 Pin
VCC 3.3V
GND GND
SCL GPIO 22
SDA GPIO 21

LEDs

LED ESP32 Pin Resistor
Green GPIO 12 220Ω
Red GPIO 13 220Ω
Blue GPIO 14 220Ω
Yellow GPIO 27 220Ω

Push Buttons

Button ESP32 Pin Other Pin
Left (L) GPIO 25 GND
Right (R) GPIO 26 GND
Select (S) GPIO 27 GND

💻 Software Setup

1. Install Arduino IDE

Download and install the latest version from arduino.cc.

2. Configure ESP32 Board

  1. Open Arduino IDE → File → Preferences
  2. Add this URL to Additional Boards Manager URLs: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

text

  1. Go to Tools → Board → Boards Manager
  2. Search for ESP32 and install “esp32 by Espressif Systems”

3. Install Required Libraries

From Sketch → Include Library → Manage Libraries, install:

Library Author Purpose
RF24 TMRh20 NRF24 communication
U8g2 olikraus OLED display driver
WiFiManager tzapu WiFi connection management

📡 How It Works

Jamming Modes

Mode Description Channels Used
WiFi Disrupts 2.4GHz WiFi networks 1, 6, 11
BLE Disrupts Bluetooth Low Energy 2, 26, 80
Bluetooth Disrupts Classic Bluetooth 32, 46, 78
Video TX Disrupts video transmitters 70, 75, 80
RC Disrupts RC controllers 1, 3, 7
Zigbee Disrupts Zigbee/IoT devices 11, 15, 25
USB Wireless Disrupts USB wireless peripherals 40, 50, 60
NRF24 Generic NRF24 disruption 76, 78, 79
All-in-One Combined multi-protocol attack 6, 26, 46

Channel Strategy

Each mode uses specific strategic channels optimized for maximum disruption:


🌐 Web Interface

After flashing, Marshall creates a WiFi network:

Setting Value
SSID Marshall_Network
Password secure123
IP Address 192.168.4.1

Features


🚀 Getting Started

Phase 1: Hardware Assembly

  1. Set up the regulator — Connect AMS1117-3.3 to a 5V source
  2. Build the SPI bus — Connect SCK, MOSI, MISO to all three NRF24 modules
  3. Add capacitors — Place 10µF-100µF capacitors near each NRF24 module
  4. Connect dedicated pins — Wire CE and CSN for each module
  5. Add OLED and LEDs — Connect the display and indicator LEDs
  6. Add buttons — Connect the three push buttons

Phase 2: Software Upload

  1. Clone the repository: ```bash git clone https://github.com/here-is-leo/Marshall.git cd Marshall Open the project in Arduino IDE (Marshall.ino)

Select the board: Tools ← Board ← ESP32 Dev Module

Select the port: Tools ← Port ← (your COM port)

Upload the code: Click the Upload button

Phase 3: Web Control Power on the device

Connect to the Marshall_Network WiFi (password: secure123)

Open a browser and go to http://192.168.4.1

Start controlling — select modes, start/stop jamming

🔧 Troubleshooting Issue Solution NRF24 not detected Check capacitors on VCC/GND. Verify 3.3V power. Check CE/CSN pins. OLED not working Verify I2C connections (SDA=21, SCL=22). Try address 0x3D instead of 0x3C. Web interface not loading Connect to Marshall_Network. Use 192.168.4.1. Disable firewall temporarily. Board keeps resetting Use a 2A power supply. Add a 1000µF capacitor to the input. Upload fails Hold BOOT button, press EN, release BOOT to enter download mode. 📚 Learning Resources Official Documentation ESP32 Datasheet

NRF24L01+ Datasheet

OLED SSD1306 Datasheet

Tutorials RF24 Library Documentation

U8g2 Library Examples

ESP32 Web Server Tutorial

Books “Wireless Communications & Networks” — William Stallings

“Practical RF Handbook” — Ian Hickman

🛡️ Legal & Ethical Disclaimer ⚠️ IMPORTANT: This project is intended SOLELY for educational purposes and authorized security testing in controlled environments.

✅ Legal uses: Learning, research, security testing with explicit permission

❌ Illegal uses: Unauthorized jamming, disrupting public communications, interfering with emergency services

You are solely responsible for how you use this tool. The developer assumes no liability for any misuse or damages caused by this project.

🤝 Contributing Contributions are welcome! Here’s how you can help:

Fork the repository

Create a feature branch: git checkout -b feature/AmazingFeature

Commit your changes: git commit -m ‘Add some AmazingFeature’

Push to the branch: git push origin feature/AmazingFeature

Open a Pull Request

Contribution Ideas Add new jamming modes

Improve the web interface

Add support for more hardware

Create video tutorials

Translate the documentation

📄 License This project is licensed under the MIT License — see the LICENSE file for details.

👤 Developer Ilya Farahani (Leo)

🔗 GitHub: @here-is-leo

🌐 Website: here-is-leo-blog.ilyafarahanii.workers.dev

📧 Email: ilyafarahani9@gmail.com

💬 Telegram: @Here_is_leo

⭐ Support the Project If you found this project useful, please consider:

⭐ Starring the repository

🍴 Forking and sharing it

☕ Buying me a coffee at coffeebede.com/leo

📢 Spreading the word to others who might benefit

Made with 💻, ☕, and 🔒 by Leo

🇮🇷 نسخه فارسی 🚀 مارشال — ابزار جامع تست امنیت RF https://img.shields.io/github/license/here-is-leo/Marshall https://img.shields.io/github/stars/here-is-leo/Marshall https://img.shields.io/github/issues/here-is-leo/Marshall https://img.shields.io/badge/%D9%BE%D9%84%D8%AA%D9%81%D8%B1%D9%85-ESP32-blue https://img.shields.io/badge/Arduino-IDE-00979D

⚡ درباره مارشال مارشال یک ابزار قدرتمند و منبع‌باز برای تست امنیت RF است که برای اهداف آموزشی و تحقیقات امنیتی طراحی شده است. این پروژه بر پایه میکروکنترلر ESP32 و سه ماژول NRF24L01+ PA+LNA ساخته شده و بستر کاملی برای درک آسیب‌پذیری‌های ارتباطات بی‌سیم در باند ۲.۴ گیگاهرتز فراهم می‌کند.

“امنیت یک محصول نیست، بلکه یک فرآیند است.” — بروس شنایر

مارشال تکامل پروژه‌هایی مانند RF-Clown و VOID است که نقاط قوت آنها را در یک ابزار واحد و قدرتمند ترکیب کرده است. چه دانشجوی امنیت سایبری باشید، چه علاقه‌مند به الکترونیک، چه متخصص تست نفوذ، مارشال تجربه‌ای عملی برای یادگیری ارائه می‌دهد که تئوری و عمل را به هم پیوند می‌زند.

🎯 ویژگی‌های کلیدی ویژگی توضیح 🔴 بیش از ۸ حالت جمینگ WiFi، BLE، بلوتوث کلاسیک، Video TX، RC، Zigbee، USB Wireless، NRF24 و حالت All-in-One 📡 سه ماژول NRF24 سه ماژول همزمان برای حداکثر پوشش و قدرت 🌐 وب‌اینترفیس کنترل کامل از طریق مرورگر با رابط کاربری سایبرپانکی 🖥️ نمایشگر OLED نمایش لحظه‌ای وضعیت، مود فعال و اطلاعات سیستم 💡 ۴ LED وضعیت بازخورد بصری برای حالت‌های مختلف عملیاتی 🎮 کنترل با دکمه تغییر مود و فعال‌سازی بدون کامپیوتر 🔌 عملکرد مستقل پس از راه‌اندازی اولیه، نیازی به کامپیوتر نیست 📦 طراحی قابل حمل جمع‌وجور و آماده برای استفاده در میدان 🛠️ نیازمندی‌های سخت‌افزاری قطعه مشخصات تعداد میکروکنترلر ESP32-WROOM-32 (۳۸ پین) ۱ ماژول‌های RF NRF24L01+ PA+LNA (با آنتن خارجی) ۳ نمایشگر OLED 0.96 اینچی I2C (SSD1306, 128x64) ۱ رگولاتور ولتاژ AMS1117-3.3 (۱ آمپر یا بیشتر) ۱ خازن‌ها ۱۰µF - ۱۰۰µF (الکترولیتی) ۳+ دکمه‌ها تاکت سویچ (۴ پایه) ۳ LEDها سبز، قرمز، آبی، زرد ۴ مقاومت‌ها ۲۲۰Ω - ۳۳۰Ω ۴ منبع تغذیه آداپتور ۵ ولت/۲ آمپر یا USB-C ۱ 📋 لیست قطعات (BOM) قطعه توضیح قیمت تقریبی (تومان) ESP32 Dev Board ۳۸ پین ESP32-WROOM-32 ۱۵۰-۳۰۰ هزار NRF24L01+ PA+LNA با آنتن خارجی (×۳) ۲۴۰-۴۵۰ هزار OLED 0.96 I2C SSD1306, 128x64 ۵۰-۱۵۰ هزار AMS1117-3.3 رگولاتور ولتاژ ۲۰-۵۰ هزار خازن‌ها ۱۰µF, ۱۰۰µF ۱۰-۳۰ هزار دکمه‌ها تاکت سویچ (×۳) ۲۰-۵۰ هزار LED + مقاومت رنگ‌های متنوع + ۲۲۰Ω ۲۰-۵۰ هزار بردبورد ۴۰۰ نقطه یا بزرگتر ۵۰-۱۰۰ هزار سیم‌های جامپر مادگی-مادگی، مادگی-نری ۵۰-۱۵۰ هزار جمع کل ~۶۰۰-۱.۲۰۰ هزار 🔌 نقشه اتصال باس SPI (مشترک — به همه ماژول‌های NRF24 متصل شود) پین ESP32 پین NRF24 توضیح GPIO 18 SCK کلاک SPI GPIO 19 MISO Master In Slave Out GPIO 23 MOSI Master Out Slave In ۳.۳V (رگولاتور) VCC تغذیه (۳.۳ ولت) GND GND زمین پین‌های اختصاصی (CE و CSN — منحصر به هر ماژول) ماژول CE (ESP32) CSN (ESP32) NRF1 GPIO 16 GPIO 15 NRF2 GPIO 22 GPIO 21 NRF3 GPIO 4 GPIO 2 OLED (I2C) پین OLED پین ESP32 VCC ۳.۳V GND GND SCL GPIO 22 SDA GPIO 21 LEDها LED پین ESP32 مقاومت سبز GPIO 12 ۲۲۰Ω قرمز GPIO 13 ۲۲۰Ω آبی GPIO 14 ۲۲۰Ω زرد GPIO 27 ۲۲۰Ω دکمه‌ها دکمه پین ESP32 پین دیگر چپ (L) GPIO 25 GND راست (R) GPIO 26 GND انتخاب (S) GPIO 27 GND 💻 راه‌اندازی نرم‌افزار ۱. نصب Arduino IDE آخرین نسخه را از arduino.cc دانلود و نصب کنید.

۲. پیکربندی برد ESP32 ۱. Arduino IDE را باز کنید ← File ← Preferences ۲. این آدرس را در Additional Boards Manager URLs وارد کنید:

text https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json ۳. به Tools ← Board ← Boards Manager بروید ۴. ESP32 را جستجو کرده و “esp32 by Espressif Systems” را نصب کنید

۳. نصب کتابخانه‌های مورد نیاز از Sketch ← Include Library ← Manage Libraries، کتابخانه‌های زیر را نصب کنید:

کتابخانه نویسنده کاربرد RF24 TMRh20 ارتباط با NRF24 U8g2 olikraus درایور OLED WiFiManager tzapu مدیریت اتصال وای‌فای 📡 نحوه عملکرد حالت‌های جمینگ حالت توضیح کانال‌های استفاده شده WiFi اختلال در شبکه‌های وای‌فای ۲.۴ گیگاهرتز ۱, ۶, ۱۱ BLE اختلال در بلوتوث کم‌مصرف ۲, ۲۶, ۸۰ Bluetooth اختلال در بلوتوث کلاسیک ۳۲, ۴۶, ۷۸ Video TX اختلال در فرستنده‌های ویدئویی ۷۰, ۷۵, ۸۰ RC اختلال در کنترلرهای RC ۱, ۳, ۷ Zigbee اختلال در دستگاه‌های Zigbee/IoT ۱۱, ۱۵, ۲۵ USB Wireless اختلال در لوازم جانبی بی‌سیم USB ۴۰, ۵۰, ۶۰ NRF24 اختلال عمومی NRF24 ۷۶, ۷۸, ۷۹ All-in-One حمله ترکیبی چندپروتکلی ۶, ۲۶, ۴۶ استراتژی کانال‌ها هر حالت از کانال‌های استراتژیک بهینه‌سازی شده برای حداکثر اختلال استفاده می‌کند:

WiFi: کانال‌های ۱، ۶، ۱۱ (شلوغ‌ترین کانال‌ها)

BLE: هر سه کانال تبلیغاتی BLE (۲، ۲۶، ۸۰)

Bluetooth: کانال‌های استراتژیک در طیف ۷۹ کاناله

🌐 وب‌اینترفیس پس از فلش، مارشال یک شبکه وای‌فای ایجاد می‌کند:

تنظیمات مقدار SSID Marshall_Network رمز عبور secure123 آدرس IP 192.168.4.1 ویژگی‌ها به‌روزرسانی لحظه‌ای وضعیت (هر ۲ ثانیه)

انتخاب مود با نشانگرهای بصری

شروع/توقف عملیات جمینگ

ناوبری مود قبلی/بعدی

طراحی واکنش‌گرا (کار بر روی موبایل، تبلت، دسکتاپ)

🚀 شروع کار فاز اول: مونتاژ سخت‌افزار ۱. رگولاتور را تنظیم کنید — AMS1117-3.3 را به منبع ۵ ولت وصل کنید ۲. باس SPI را بسازید — SCK، MOSI، MISO را به هر سه ماژول NRF24 وصل کنید ۳. خازن‌ها را اضافه کنید — خازن‌های ۱۰µF-۱۰۰µF را نزدیک هر ماژول NRF24 قرار دهید ۴. پین‌های اختصاصی را وصل کنید — CE و CSN هر ماژول را سیم‌کشی کنید ۵. OLED و LEDها را اضافه کنید — نمایشگر و LEDهای نشانگر را وصل کنید ۶. دکمه‌ها را اضافه کنید — سه دکمه فشاری را وصل کنید

فاز دوم: آپلود نرم‌افزار ۱. مخزن را کلون کنید:

bash git clone https://github.com/here-is-leo/Marshall.git cd Marshall ۲. پروژه را باز کنید در Arduino IDE (Marshall.ino) ۳. برد را انتخاب کنید: Tools ← Board ← ESP32 Dev Module ۴. پورت را انتخاب کنید: Tools ← Port ← (پورت COM شما) ۵. کد را آپلود کنید: روی دکمه Upload کلیک کنید

فاز سوم: کنترل از طریق وب ۱. دستگاه را روشن کنید ۲. به شبکه Marshall_Network متصل شوید (رمز: secure123) ۳. مرورگر را باز کنید و به http://192.168.4.1 بروید ۴. شروع به کنترل کنید — مودها را انتخاب کنید، جمینگ را شروع/توقف کنید

🔧 عیب‌یابی مشکل راه‌حل NRF24 شناسایی نمی‌شود خازن‌های VCC/GND را بررسی کنید. تغذیه ۳.۳ ولت را چک کنید. پین‌های CE/CSN را بررسی کنید. OLED کار نمی‌کند اتصالات I2C را بررسی کنید (SDA=21, SCL=22). آدرس 0x3D را به جای 0x3C امتحان کنید. وب‌اینترفیس باز نمی‌شود به Marshall_Network متصل شوید. از 192.168.4.1 استفاده کنید. فایروال را موقتاً غیرفعال کنید. برد مدام ریست می‌شود از منبع تغذیه ۲ آمپر استفاده کنید. یک خازن ۱۰۰۰µF به ورودی اضافه کنید. آپلود انجام نمی‌شود دکمه BOOT را نگه دارید، EN را بزنید، BOOT را رها کنید تا وارد حالت دانلود شود. 📚 منابع آموزشی مستندات رسمی دیتاشیت ESP32

دیتاشیت NRF24L01+

دیتاشیت OLED SSD1306

آموزش‌ها مستندات کتابخانه RF24

نمونه‌های کتابخانه U8g2

آموزش وب‌سرور ESP32

کتاب‌ها “ارتباطات بی‌سیم و شبکه‌ها” — ویلیام استالینگز

“راهنمای عملی RF” — ایان هیکمن

🛡️ سلب مسئولیت قانونی و اخلاقی ⚠️ مهم: این پروژه صرفاً برای اهداف آموزشی و تست امنیتی مجاز در محیط‌های کنترل‌شده طراحی شده است.

✅ مصارف قانونی: یادگیری، تحقیق، تست امنیتی با اجازه صریح

❌ مصارف غیرقانونی: جمینگ غیرمجاز، اختلال در ارتباطات عمومی، تداخل با خدمات اضطراری

شما شخصاً مسئول نحوه استفاده از این ابزار هستید. توسعه‌دهنده هیچ مسئولیتی در قبال سوءاستفاده یا خسارات ناشی از این پروژه ندارد.

🤝 مشارکت مشارکت شما welcome است! راه‌های کمک:

مخزن را Fork کنید

یک شاخه ویژگی ایجاد کنید: git checkout -b feature/AmazingFeature

تغییرات را Commit کنید: git commit -m ‘Add some AmazingFeature’

به شاخه Push کنید: git push origin feature/AmazingFeature

یک Pull Request باز کنید

ایده‌های مشارکت افزودن حالت‌های جدید جمینگ

بهبود وب‌اینترفیس

پشتیبانی از سخت‌افزارهای بیشتر

ایجاد آموزش‌های ویدئویی

ترجمه مستندات

📄 مجوز این پروژه تحت مجوز MIT منتشر شده است — برای جزئیات بیشتر فایل LICENSE را ببینید.

👤 توسعه‌دهنده ایلیا فراهانی (لیو)

🔗 گیت‌هاب: @here-is-leo

🌐 وب‌سایت: here-is-leo-blog.ilyafarahanii.workers.dev

📧 ایمیل: ilyafarahani9@gmail.com

💬 تلگرام: @Here_is_leo

⭐ حمایت از پروژه اگر این پروژه برای شما مفید بود، لطفاً در نظر بگیرید:

⭐ ستاره دادن به مخزن

🍴 Fork کردن و به اشتراک گذاشتن آن

☕ خرید یک قهوه برای من در coffeebede.com/leo

📢 انتشار آن در میان دیگرانی که ممکن است بهره‌مند شوند

ساخته شده با 💻، ☕ و 🔒 توسط لیو

📚 Additional Resources Quick Links Repository

Issues

Discussions

Related Projects RF-Clown — Original inspiration

VOID — Predecessor project

ESP32-Deauther — WiFi security testing

Last Updated: August 2026 Version: 1.0.0