Skip to content
/ MoMo Public

🎯 Pi 5 Wardriving & Wireless Pentest Platform | WiFi/BLE/SDR Attacks | WPA3 β€’ Evil Twin β€’ Karma β€’ Evilginx | GPS Mapping | Cloud Cracking | Part of MoMo Ecosystem

License

Notifications You must be signed in to change notification settings

M0M0Sec/MoMo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

91 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ”₯ MoMo

Modular Offensive Mobile Operations

Next-Generation Wireless Security Audit Platform
Built for Red Teams, Pentesters & Security Researchers

Version Platform Python License

Tests Coverage Build Code Style

Quick Start β€’ Features β€’ Architecture β€’ Hardware β€’ Ecosystem β€’ Docs


πŸ“– Table of Contents


🎯 What is MoMo?

MoMo is a comprehensive wireless security audit platform designed for the Raspberry Pi 5. It combines the best features of industry-standard tools like Pwnagotchi, ESP32 Marauder, and WiFi Pineapple into one powerful, extensible, and professional-grade platform.

Why MoMo?

Challenge MoMo Solution
πŸ”Œ Multiple disconnected tools βœ… Unified platform with modular architecture
πŸ“± Limited headless operation βœ… Management network + OLED display + Web UI
πŸ”„ Manual data synchronization βœ… Real-time sync with Nexus central hub
πŸ’» Requires laptop in field βœ… Fully autonomous operation with Auto-Pwn
πŸ” WPA3 bypasses existing tools βœ… Native WPA3/SAE detection and downgrade
🎭 Limited social engineering βœ… Evil Twin, Karma/MANA, Evilginx AiTM

Feature Highlights

πŸ“‘ Wireless Attacks

  • Multi-Radio Management
  • WPA2/WPA3 Attacks
  • PMKID Capture
  • Evil Twin (6 templates)
  • Karma/MANA
  • Evilginx MFA Bypass

πŸ”‘ Credential Harvesting

  • LLMNR/NBT-NS Poisoning
  • NTLM Hash Capture
  • HTTP Auth Sniffing
  • Kerberoast
  • AS-REP Roasting
  • LDAP Enumeration

πŸ€– Automation

  • Auto-Pwn Mode
  • GPS Wardriving
  • Cloud Cracking
  • Session Persistence
  • Real-time Sync
  • Event-driven Alerts

✨ Key Features

πŸ”₯ Wireless Security Testing

WiFi Attacks - Click to expand
Feature Description Status
Wardriving GPS-correlated AP scanning with SQLite persistence βœ…
Multi-Radio Manage multiple WiFi adapters simultaneously βœ…
PMKID Capture Clientless WPA2 attack via hcxdumptool βœ…
Deauth Attacks Targeted client disconnection βœ…
Handshake Capture EAPOL 4-way handshake collection βœ…
WPA3/SAE Detection, downgrade attacks, PMF handling βœ…
Evil Twin Rogue AP with captive portal (6 templates) βœ…
Karma/MANA Auto-respond to probes, EAP credential capture βœ…
Evilginx AiTM MFA bypass via session cookie capture ☁️ VPS
Bluetooth Attacks - Click to expand
Feature Description Status
BLE Scanner Device & beacon detection with RSSI tracking βœ…
GATT Explorer Service/characteristic discovery & read/write βœ…
Beacon Spoofing iBeacon & Eddystone frame injection βœ…
HID Injection Bluetooth keyboard emulation βœ…
SDR Integration - Click to expand
Feature Description Status
RTL-SDR Support V3 & V4 with HF direct sampling, bias tee βœ…
HackRF Support TX/RX capable for replay attacks βœ…
Spectrum Analyzer Frequency scanning & peak detection βœ…
Signal Decoder 433/868 MHz IoT signal capture βœ…

πŸ”‘ Credential Harvesting (NEW in v1.6.0)

MoMo-Creds Module - Click to expand
Feature Description Status
Responder LLMNR/NBT-NS/mDNS poisoning βœ…
NTLM Capture NTLMv1/v2 hash capture via SMB/HTTP βœ…
NTLM Relay Hash relay to target systems βœ…
HTTP Sniffer Basic/Digest/Form/Bearer credential capture βœ…
Kerberoast Service ticket extraction for offline cracking βœ…
AS-REP Roast Target accounts without pre-authentication βœ…
LDAP Enum AD user/group/computer enumeration βœ…
Auto Export Hashcat/John format export βœ…

Export Formats:

  • Hashcat: 5500 (NTLMv1), 5600 (NTLMv2), 13100 (Kerberos RC4), 18200 (AS-REP)
  • John the Ripper: NETLM, NETNTLMv2, krb5tgs

πŸ€– Autonomous Operation

Auto-Pwn Mode - Click to expand
Feature Description
Target Discovery Automatic network scanning and prioritization
Attack Chaining PMKID β†’ Deauth β†’ Evil Twin fallback sequence
Session Persistence Resume after reboot, save progress
Safety Features Battery monitoring, max duration limits
Cloud Integration Auto-sync captures to Nexus for cracking

Modes:

  • passive - Scan only, no attacks
  • balanced - Smart targeting, avoid detection
  • aggressive - Maximum speed, all techniques

πŸ–₯️ Headless Operation

Feature Description
Management Network Dedicated wlan0 for tablet/phone control
OLED Display 128x64 interactive menu with GPIO buttons
Web Dashboard Real-time dark-theme UI with SSE updates
Auto-Whitelist Management network protected from attacks

πŸš€ First Boot Wizard

Feature Description
Web-based Setup Modern React UI, mobile-friendly
Auto WiFi AP Connect to MoMo-Setup network
QR Code Display Scan OLED QR to connect
Nexus Discovery Auto-find Nexus via mDNS
Headless Mode /boot/momo-config.yml for fleet deploy

πŸš€ Quick Start

First Boot (New Device)

  1. Flash MoMo image to SD card
  2. Power on Raspberry Pi
  3. Connect to MoMo-Setup WiFi (password: momosetup)
  4. Browser opens wizard automatically
  5. Complete 6-step setup in ~2 minutes

Headless? Copy configs/momo-config.example.yml to /boot/momo-config.yml

One-Line Install (Raspberry Pi 5)

curl -fsSL https://raw.githubusercontent.com/M0M0Sec/MoMo/main/deploy/momo-quickstart.sh | sudo bash

Verify Installation

momo version        # Show version info
momo doctor         # Run system diagnostics
momo run --dry-run  # Test without hardware

Access Dashboard

momo web-url --show-token
# Output: http://192.168.4.1:8082?token=xxxxx

πŸ“¦ Installation

Prerequisites

Requirement Minimum Recommended
Hardware Raspberry Pi 4 Raspberry Pi 5
OS Raspberry Pi OS Lite 64-bit Raspberry Pi OS Lite 64-bit
Python 3.11 3.12+
Storage 16GB SD 64GB+ SD
WiFi Adapter 1x Monitor Mode 2x (Attack + Management)

Method 1: Automated Install

# Download and run installer
curl -fsSL https://raw.githubusercontent.com/M0M0Sec/MoMo/main/deploy/install.sh | sudo bash

# Configure
sudo nano /etc/momo/momo.yml

# Enable service
sudo systemctl enable --now momo

Method 2: Manual Install

# Clone repository
git clone https://github.com/M0M0Sec/MoMo.git
cd MoMo

# Create virtual environment
python3 -m venv venv
source venv/bin/activate

# Install dependencies
pip install -e ".[full]"

# Install system dependencies
sudo apt install -y hcxdumptool hcxtools aircrack-ng gpsd gpsd-clients

# Run
momo run -c configs/momo.yml

Method 3: Development Setup

# Install with dev dependencies
pip install -e ".[dev]"

# Setup pre-commit hooks
pre-commit install

# Run tests
pytest tests/ -v --cov=momo

# Run linting
ruff check momo/
mypy momo/

πŸ—οΈ Architecture

Clean Architecture Design

MoMo follows Clean Architecture principles with clear separation of concerns:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                        PRESENTATION                              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”              β”‚
β”‚  β”‚   Web UI    β”‚  β”‚  REST API   β”‚  β”‚    CLI      β”‚              β”‚
β”‚  β”‚  (Flask)    β”‚  β”‚  (FastAPI)  β”‚  β”‚   (Click)   β”‚              β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜              β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                        APPLICATION                               β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”‚
β”‚  β”‚                    Plugin Manager                        β”‚    β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”‚    β”‚
β”‚  β”‚  β”‚Wardriverβ”‚ β”‚Evil Twinβ”‚ β”‚  Karma  β”‚ β”‚  Creds  β”‚ ...   β”‚    β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚    β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                          DOMAIN                                  β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”              β”‚
β”‚  β”‚ AccessPoint β”‚  β”‚ GPSPosition β”‚  β”‚  Handshake  β”‚  ...         β”‚
β”‚  β”‚   (Model)   β”‚  β”‚   (Model)   β”‚  β”‚   (Model)   β”‚              β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜              β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                      INFRASTRUCTURE                              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”        β”‚
β”‚  β”‚  WiFi  β”‚ β”‚  BLE   β”‚ β”‚  GPS   β”‚ β”‚  SDR   β”‚ β”‚ Creds  β”‚  ...   β”‚
β”‚  β”‚Scanner β”‚ β”‚Scanner β”‚ β”‚ Client β”‚ β”‚Manager β”‚ β”‚Manager β”‚        β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Directory Structure

momo/
β”œβ”€β”€ core/                          # Core utilities
β”‚   β”œβ”€β”€ events.py                  # Pub/Sub event bus
β”‚   β”œβ”€β”€ plugin.py                  # Plugin system
β”‚   β”œβ”€β”€ capability.py              # Feature gates
β”‚   └── security.py                # Input sanitization
β”‚
β”œβ”€β”€ domain/                        # Business models
β”‚   └── models.py                  # Pydantic models
β”‚
β”œβ”€β”€ infrastructure/                # Hardware abstraction
β”‚   β”œβ”€β”€ wifi/                      # WiFi scanner, radio manager
β”‚   β”œβ”€β”€ ble/                       # BLE scanner, GATT, HID
β”‚   β”œβ”€β”€ gps/                       # GPS client, distance tracking
β”‚   β”œβ”€β”€ sdr/                       # RTL-SDR, HackRF, spectrum
β”‚   β”œβ”€β”€ capture/                   # Handshake capture
β”‚   β”œβ”€β”€ eviltwin/                  # Rogue AP, captive portal
β”‚   β”œβ”€β”€ karma/                     # Karma/MANA attacks
β”‚   β”œβ”€β”€ wpa3/                      # WPA3 detection & attacks
β”‚   β”œβ”€β”€ creds/                     # Credential harvesting (NEW)
β”‚   β”‚   β”œβ”€β”€ responder.py           # LLMNR/NBT-NS poisoning
β”‚   β”‚   β”œβ”€β”€ ntlm.py                # NTLM capture & relay
β”‚   β”‚   β”œβ”€β”€ http_sniffer.py        # HTTP auth sniffing
β”‚   β”‚   β”œβ”€β”€ kerberos.py            # Kerberoast, AS-REP
β”‚   β”‚   β”œβ”€β”€ ldap_enum.py           # AD enumeration
β”‚   β”‚   └── manager.py             # Central orchestrator
β”‚   β”œβ”€β”€ autopwn/                   # Autonomous attack engine
β”‚   β”œβ”€β”€ display/                   # OLED menu system
β”‚   β”œβ”€β”€ cracking/                  # John + Cloud proxy
β”‚   β”œβ”€β”€ hardware/                  # Device auto-detection
β”‚   β”œβ”€β”€ management/                # Headless network
β”‚   β”œβ”€β”€ nexus/                     # Nexus sync client
β”‚   └── database/                  # Async SQLite
β”‚
β”œβ”€β”€ apps/
β”‚   β”œβ”€β”€ momo_core/                 # Main service loop
β”‚   β”œβ”€β”€ momo_plugins/              # Plugin collection
β”‚   β”‚   β”œβ”€β”€ wardriver.py
β”‚   β”‚   β”œβ”€β”€ evil_twin.py
β”‚   β”‚   β”œβ”€β”€ karma_mana.py
β”‚   β”‚   β”œβ”€β”€ creds_harvester.py     # NEW
β”‚   β”‚   └── ...
β”‚   └── momo_web/                  # Flask API + Web UI
β”‚
β”œβ”€β”€ plugins/                       # Modern plugin architecture
β”œβ”€β”€ configs/                       # Configuration files
β”œβ”€β”€ tests/                         # Test suite
β”‚   β”œβ”€β”€ unit/                      # Unit tests (484 tests)
β”‚   β”œβ”€β”€ integration/               # Integration tests
β”‚   └── e2e/                       # End-to-end tests
└── docs/                          # Documentation

Event-Driven Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    publish     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    subscribe    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Plugin A  β”‚ ───────────▢   β”‚  Event Bus  β”‚  ◀───────────── β”‚   Plugin B  β”‚
β”‚  (Scanner)  β”‚                β”‚             β”‚                 β”‚  (Display)  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜                 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                      β”‚
                               β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”
                               β”‚   Plugin C  β”‚
                               β”‚   (Logger)  β”‚
                               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“‘ Supported Hardware

WiFi Adapters

Adapter Chipset Monitor Injection 5GHz WiFi 6/6E Recommended
Alfa AWUS036AXML MT7921AUN βœ… βœ… βœ… βœ… 6E ⭐⭐⭐
Alfa AWUS036ACH RTL8812AU βœ… βœ… βœ… ❌ ⭐⭐⭐
Alfa AWUS036ACM MT7612U βœ… βœ… βœ… ❌ ⭐⭐
Alfa AWUS036ACS RTL8811AU βœ… βœ… βœ… ❌ ⭐⭐
TP-Link Archer T2U+ RTL8821AU βœ… βœ… βœ… ❌ ⭐
Panda PAU09 RT5572 βœ… βœ… ❌ ❌ ⭐

SDR Devices

Device Frequency TX Use Case
RTL-SDR V4 500kHz - 1.7GHz ❌ IoT sniffing, ADS-B
RTL-SDR V3 24MHz - 1.7GHz ❌ General purpose
HackRF One 1MHz - 6GHz βœ… Replay attacks
YARD Stick One 300-928MHz βœ… Sub-GHz specialist

Other Hardware

Category Recommended Device Notes
GPS u-blox NEO-M8N USB, high accuracy
Bluetooth Sena UD100 Long range, BT5.0
OLED Display SSD1306 128x64 I2C, 0.96"
Power PiSugar 3 5000mAh, UPS

🌐 Web Interface & API

Dashboard

Access the real-time dashboard:

momo web-url --show-token
# β†’ http://192.168.4.1:8082?token=xxxxx

Features:

  • πŸ—ΊοΈ Real-time wardriving map (Leaflet.js)
  • πŸ“Š Live statistics with SSE updates
  • πŸ“ Handshake management
  • βš™οΈ Configuration editor
  • πŸ”” Alert notifications

REST API Endpoints

Core Endpoints
Method Endpoint Description
GET /api/status System status
GET /api/stats Runtime statistics
GET /api/config Current configuration
GET /sse/events Real-time event stream
GET /metrics Prometheus metrics
WiFi Endpoints
Method Endpoint Description
GET /api/wardriver/aps Discovered access points
POST /api/eviltwin/start Start Evil Twin attack
POST /api/karma/start Start Karma/MANA
GET /api/wpa3/networks WPA3 network list
POST /api/capture/start Start handshake capture
Credential Endpoints (NEW)
Method Endpoint Description
GET /api/creds/status Harvesting statistics
POST /api/creds/start Start credential harvesting
POST /api/creds/stop Stop harvesting
GET /api/creds/ntlm Captured NTLM hashes
GET /api/creds/http HTTP credentials
GET /api/creds/kerberos Kerberos tickets
POST /api/creds/export Export to file
Hardware Endpoints
Method Endpoint Description
GET /api/hardware/devices Connected devices
GET /api/ble/devices BLE scan results
GET /api/sdr/spectrum Spectrum data
GET /api/gps/position Current GPS position

Authentication

# Using environment variable
export MOMO_UI_TOKEN="your-secure-token"

# Using header
curl -H "Authorization: Bearer $MOMO_UI_TOKEN" http://localhost:8082/api/status

# Using query parameter (for browsers)
http://localhost:8082/?token=your-secure-token

πŸ”Œ Plugin Development

MoMo features a modern, Marauder-inspired plugin architecture with full lifecycle management.

Creating a Plugin

"""Example MoMo Plugin."""

from momo.core.plugin import Plugin, PluginMetadata, PluginType

class MyAwesomePlugin(Plugin):
    """My custom attack plugin."""
    
    @staticmethod
    def metadata() -> PluginMetadata:
        return PluginMetadata(
            name="my_awesome_plugin",
            version="1.0.0",
            author="Your Name",
            description="Does awesome things",
            plugin_type=PluginType.ATTACK,
            priority=100,
            requires=["wifi"],
        )
    
    async def on_load(self) -> None:
        """Called when plugin is registered."""
        self.log.info("Plugin loaded")
        
        # Subscribe to events
        await self.subscribe("ap_discovered", self.on_ap_found)
    
    async def on_start(self) -> None:
        """Called when plugin is activated."""
        self.log.info("Plugin started")
        
        # Start background task
        self._task = asyncio.create_task(self._worker())
    
    async def on_stop(self) -> None:
        """Called when plugin is deactivated."""
        if self._task:
            self._task.cancel()
        self.log.info("Plugin stopped")
    
    async def on_ap_found(self, event: dict) -> None:
        """Handle discovered access point."""
        ap = event['data']
        self.log.info(f"Found AP: {ap['ssid']}")
        
        # Publish event
        await self.emit("my_event", {"status": "processing"})
    
    async def _worker(self) -> None:
        """Background worker loop."""
        while True:
            await asyncio.sleep(10)
            # Do periodic work


# Entry point
def create_plugin() -> Plugin:
    return MyAwesomePlugin()

Plugin Lifecycle

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   load    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   start   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ UNLOADED β”‚ ────────▢ β”‚  LOADED  β”‚ ────────▢ β”‚ RUNNING  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜           β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜
                                                   β”‚
                                              stop β”‚
                                                   β–Ό
                                             β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                                             β”‚ STOPPED  β”‚
                                             β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
Hook Async Use For
on_load() βœ… Event subscriptions, lightweight init
on_start() βœ… Start background tasks, connect to hardware
on_tick(ctx) ❌ Periodic sync operations
on_stop() βœ… Cleanup, stop tasks
on_unload() βœ… Final cleanup

Plugin Types

Type Priority Description
CORE 0 Essential system plugins
SCANNER 10 WiFi/BLE scanning
CAPTURE 20 Data capture
ATTACK 30 Active attacks
ANALYSIS 40 Data analysis
UI 50 User interface
CUSTOM 100 Custom plugins

βš™οΈ Configuration

Main Configuration File

# /etc/momo/momo.yml

# ═══════════════════════════════════════════════════════════════════
# General Settings
# ═══════════════════════════════════════════════════════════════════
mode: aggressive                    # passive, balanced, aggressive

interface:
  name: wlan1                       # Primary attack interface
  mac_randomization: true
  channel_hop: true
  channels: [1, 6, 11]              # 2.4GHz channels
  channels_5ghz: [36, 40, 44, 48]   # 5GHz non-DFS channels

# ═══════════════════════════════════════════════════════════════════
# Headless Operation
# ═══════════════════════════════════════════════════════════════════
management:
  enabled: true
  interface: wlan0                  # Pi5 internal WiFi
  mode: ap                          # ap or client
  ap_ssid: MoMo-Management
  ap_password: YourSecurePassword   # ⚠️ CHANGE THIS
  auto_whitelist: true              # Protect from self-attack
  bind_web_to_management: true

oled:
  enabled: true
  i2c_address: "0x3C"
  menu:
    enabled: true
    idle_timeout: 30.0

# ═══════════════════════════════════════════════════════════════════
# Attack Modules
# ═══════════════════════════════════════════════════════════════════
aggressive:
  enabled: true
  deauth:
    enabled: true
    max_per_minute: 0               # 0 = unlimited
  evil_twin:
    enabled: true
  pmkid:
    enabled: true
  ssid_blacklist: []                # Your networks (protected)

eviltwin:
  enabled: false
  portal_template: generic          # generic, hotel, corporate, facebook, google, router

karma:
  enabled: false
  respond_to_all: true
  capture_eap: true

wpa3:
  enabled: true
  auto_downgrade: false

# ═══════════════════════════════════════════════════════════════════
# Credential Harvesting
# ═══════════════════════════════════════════════════════════════════
creds:
  enabled: false
  interface: eth0
  output_dir: logs/creds
  
  responder:
    enabled: true
    llmnr: true
    nbns: true
  
  ntlm:
    enabled: true
    smb_port: 445
    http_port: 80
  
  http:
    enabled: true
    ports: [80, 8080, 8000]
  
  kerberos:
    enabled: false
    dc_ip: ""
    domain: ""

# ═══════════════════════════════════════════════════════════════════
# Auto-Pwn Mode
# ═══════════════════════════════════════════════════════════════════
autopwn:
  enabled: false
  mode: balanced                    # passive, balanced, aggressive
  min_signal_dbm: -80
  max_concurrent_attacks: 1
  enable_pmkid: true
  enable_deauth: true
  enable_eviltwin: false

# ═══════════════════════════════════════════════════════════════════
# Hardware
# ═══════════════════════════════════════════════════════════════════
ble:
  enabled: false
  scan_duration: 5.0

sdr:
  enabled: false
  device_type: rtlsdr

hardware:
  auto_detect: true
  auto_configure: true

# ═══════════════════════════════════════════════════════════════════
# Cracking & Sync
# ═══════════════════════════════════════════════════════════════════
cracking:
  enabled: true
  use_john: true
  cloud_enabled: false
  nexus_api_url: ""

plugins:
  enabled:
    - wardriver
    - active_wifi
    - creds_harvester

πŸ”§ CLI Reference

# ═══════════════════════════════════════════════════════════════════
# General Commands
# ═══════════════════════════════════════════════════════════════════
momo version                    # Show version and build info
momo doctor                     # Run system diagnostics
momo status                     # Show runtime status

# ═══════════════════════════════════════════════════════════════════
# Running MoMo
# ═══════════════════════════════════════════════════════════════════
momo run                        # Start with default config
momo run -c /path/to/momo.yml   # Start with custom config
momo run --dry-run              # Simulate without hardware
momo run --debug                # Enable debug logging

# ═══════════════════════════════════════════════════════════════════
# Web Interface
# ═══════════════════════════════════════════════════════════════════
momo web-url                    # Show Web UI URL
momo web-url --show-token       # Include auth token

# ═══════════════════════════════════════════════════════════════════
# Maintenance
# ═══════════════════════════════════════════════════════════════════
momo rotate-now                 # Force log rotation
momo export --format hashcat    # Export captured data
momo backup                     # Backup configuration

🌐 MoMo Ecosystem

MoMo is part of an integrated offensive security ecosystem. Each project is designed for seamless collaboration.

                              ☁️ CLOUD LAYER
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚  GPU Cracking  β”‚  Evilginx VPS  β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                     β”‚
                              β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”
                              β”‚             β”‚
                              β”‚ 🟒 NEXUS    β”‚
                              β”‚ Central Hub β”‚
                              β”‚             β”‚
                              β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
                                     β”‚
           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
           β”‚                         β”‚                         β”‚
    β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”          β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”
    β”‚             β”‚          β”‚               β”‚         β”‚             β”‚
    β”‚  πŸ”΅ MOMO    │◀────────▢│ πŸ‘» GHOSTBRIDGE│◀───────▢│  🎭 MIMIC   β”‚
    β”‚   WiFi/BLE  β”‚          β”‚    Network    β”‚         β”‚  USB Attack β”‚
    β”‚    Pi 5     β”‚          β”‚    Implant    β”‚         β”‚  Pi Zero    β”‚
    β”‚             β”‚          β”‚               β”‚         β”‚             β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Ecosystem Components

Project Description Platform Links
πŸ”΅ MoMo WiFi/BLE/SDR Audit Platform Pi 5 GitHub
🟒 Nexus Central C2 Hub Pi 4 GitHub
πŸ‘» GhostBridge Transparent Network Implant NanoPi R2S GitHub
🎭 Mimic USB Attack Platform Pi Zero 2W GitHub

Nexus Integration

# Enable Nexus sync in momo.yml
nexus:
  enabled: true
  api_url: "http://nexus.local:8080"
  device_id: "momo-field-01"
  sync_interval: 30
  
  sync:
    handshakes: true
    credentials: true
    wardriving: true

πŸ“š Documentation

Document Description
πŸ“– OPERATIONS.md Operations guide & best practices
πŸ” SECURITY.md Security hardening & OPSEC
πŸ”§ HARDWARE.md Hardware setup & recommendations
πŸ“‘ WIFI_ATTACKS.md WiFi attack techniques
πŸ”‘ CREDENTIALS.md Credential harvesting guide
πŸ€– AUTOPWN.md Auto-Pwn mode documentation
πŸš€ FIRST_BOOT.md First Boot Wizard guide
πŸ”Œ PLUGINS.md Plugin development guide
πŸ—ΊοΈ ROADMAP.md Development roadmap
πŸ“ CHANGELOG.md Version history

πŸ“Š Project Status

Version Phase Status
v0.1.0 Core Infrastructure βœ…
v0.5.0 Bluetooth Scanner βœ…
v0.7.0 Cracking Integration βœ…
v1.0.0 WPA3/SAE Attacks βœ…
v1.2.0 Bluetooth Expansion βœ…
v1.5.0 SDR Integration βœ…
v1.5.2 Management Network βœ…
v1.6.0 Credential Harvesting βœ…
v1.7.0 First Boot Wizard βœ… NEW

Statistics:

  • πŸ“ 527 Tests passing
  • πŸ“Š 87% Coverage
  • πŸ”Œ 52 Plugins available
  • πŸ“‘ 6 Attack Modules

🀝 Contributing

Contributions are welcome! Please read our contributing guidelines.

How to Contribute

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing)
  3. Commit changes (git commit -m 'feat: add amazing feature')
  4. Push to branch (git push origin feature/amazing)
  5. Open a Pull Request

Commit Convention

type(scope): description

Types: feat, fix, docs, style, refactor, test, chore

Development Workflow

# Setup
git clone https://github.com/M0M0Sec/MoMo.git
cd MoMo
pip install -e ".[dev]"
pre-commit install

# Test
pytest tests/ -v --cov=momo

# Lint
ruff check momo/
mypy momo/

# Format
black momo/

⚠️ Legal Disclaimer

MoMo is designed for authorized security testing and educational purposes only.

  • βœ… Only use on networks you own or have explicit written permission to test
  • βœ… Respect local laws and regulations regarding wireless security testing
  • βœ… Follow responsible disclosure practices
  • ❌ The developers are not responsible for misuse of this tool
  • ❌ Unauthorized access to computer systems is illegal

πŸ“œ License

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


MoMo Ecosystem

Part of the πŸ”₯ MoMo Ecosystem
Inspired by Pwnagotchi β€’ ESP32 Marauder β€’ WiFi Pineapple

πŸ”΅ MoMo β€’ 🟒 Nexus β€’ πŸ‘» GhostBridge β€’ 🎭 Mimic

Made with ❀️ by the MoMo Team

About

🎯 Pi 5 Wardriving & Wireless Pentest Platform | WiFi/BLE/SDR Attacks | WPA3 β€’ Evil Twin β€’ Karma β€’ Evilginx | GPS Mapping | Cloud Cracking | Part of MoMo Ecosystem

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published