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.
| 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 |
| 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 |
| 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 |
| 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 |
| Module | CE Pin (ESP32) | CSN Pin (ESP32) |
|---|---|---|
| NRF1 | GPIO 16 | GPIO 15 |
| NRF2 | GPIO 22 | GPIO 21 |
| NRF3 | GPIO 4 | GPIO 2 |
| OLED Pin | ESP32 Pin |
|---|---|
| VCC | 3.3V |
| GND | GND |
| SCL | GPIO 22 |
| SDA | GPIO 21 |
| LED | ESP32 Pin | Resistor |
|---|---|---|
| Green | GPIO 12 | 220Ω |
| Red | GPIO 13 | 220Ω |
| Blue | GPIO 14 | 220Ω |
| Yellow | GPIO 27 | 220Ω |
| Button | ESP32 Pin | Other Pin |
|---|---|---|
| Left (L) | GPIO 25 | GND |
| Right (R) | GPIO 26 | GND |
| Select (S) | GPIO 27 | GND |
Download and install the latest version from arduino.cc.
text
From Sketch → Include Library → Manage Libraries, install:
| Library | Author | Purpose |
|---|---|---|
| RF24 | TMRh20 | NRF24 communication |
| U8g2 | olikraus | OLED display driver |
| WiFiManager | tzapu | WiFi connection management |
| 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 |
Each mode uses specific strategic channels optimized for maximum disruption:
After flashing, Marshall creates a WiFi network:
| Setting | Value |
|---|---|
| SSID | Marshall_Network |
| Password | secure123 |
| IP Address | 192.168.4.1 |
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