Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EVILPLAYER

A Raspberry Pi turned into a portable music player appliance with an integrated offensive security toolkit for authorized penetration testing. Features a Waveshare 1.44" LCD HAT with joystick, a hacker-themed web dashboard, and 14 built-in pentest tools.

Features

Music Player

  • MPD-powered audio with FLAC/MP3/OGG/WAV/OPUS support
  • Web dashboard with real-time spectrum visualizer
  • LCD screen with play/pause, skip, volume, shuffle, repeat
  • Drag-and-drop upload, playlists, queue management
  • Bluetooth A2DP sink (pair your phone as a speaker)
  • OTA self-update from GitHub

Offensive Toolkit (14 Tools)

Tool Description
Network Scanner nmap/arp-scan host discovery, port scanning, OS detection
Credential Harvester LLMNR/NBT-NS/mDNS poisoner with NTLM hash capture
USB HID Injector BadUSB-style keystroke injection via USB gadget
WiFi Monitor Monitor mode, packet capture, deauth, WPA handshake
Bluetooth A2DP Sink Turn the Pi into a wireless speaker
Bluetooth HID Wireless keyboard injection over Bluetooth
BLE Scanner Scan for BLE beacons, advertise iBeacon/Eddystone
Evil Twin WiFi Rogue AP with captive portal (Facebook/generic login)
DNS Spoofing Redirect DNS queries + passive DNS monitoring
Hash Cracker hashcat/john integration for cracking captured hashes
Tor Tunnel Route traffic through Tor, transparent proxy, exit IP check
WireGuard VPN VPN client/server with key generation
Reverse Shell SSH tunnels, netcat shells, webhook beacons, persistence
OTA Update Self-update from GitHub, config backup/restore

HID Payloads

  • windows_shell.txt - Open cmd via Win+R
  • open_router.txt - Open router admin page
  • powershell_download.txt - Download and execute
  • linux_reverse_shell.txt - Linux reverse shell
  • linux_wifi_steal.txt - Extract saved WiFi passwords
  • linux_usb_exfil.txt - Copy files to USB drive
  • macos_reverse_shell.txt - macOS reverse shell
  • macos_wifi_steal.txt - Extract Keychain WiFi passwords
  • macos_recon.txt - System reconnaissance
  • chromeos_shell.txt - ChromeOS shell access
  • chromeos_wifi_dump.txt - ChromeOS WiFi config dump

Hardware

Part Notes
Raspberry Pi (Zero 2 W, 3, 4, 5) WH = pre-soldered headers for LCD HAT
Waveshare 1.44" LCD HAT (ST7735) Must have joystick + KEY1-3 buttons
microSD 16-64 GB OS + music library
Audio output (pick one)
A) USB audio dongle Cheap USB sound card (note: uses the data port)
B) PCM5102 I2S DAC Recommended for Pi Zero (plays while USB gadget runs)
C) MAX98357A I2S amp Standalone speaker build

Quick Start

  1. Flash Raspberry Pi OS Lite to SD card
  2. Boot the Pi and SSH in:
    ssh pi@evilplayer.local
  3. Clone and install:
    git clone https://github.com/YOUR_USERNAME/evilplayer.git
    cd evilplayer
    sudo bash install.sh
    sudo reboot

Done. The Pi boots straight into the player.

LCD Controls

Input Action
OK play/pause
LEFT/RIGHT prev/next track
UP/DOWN volume (+ auto-repeat)
KEY1 shuffle toggle
KEY2 repeat OFF/ALL/ONE
KEY3 menu (library/playlists/queue/pentest/settings)

Screen blanks after 5 min idle; any button wakes it.

Web Dashboard

Open http://10.55.0.1 when plugged via USB, or http://evilplayer.local:8000 over WiFi.

Tabs:

  • LIBRARY - Browse and upload music
  • QUEUE - Manage playback queue
  • PLAYLISTS - Save/load playlists
  • FX - Visual effects (boot sequence, intrusion alert, skull rain, self-destruct)
  • LAB - USB attack surface analysis (educational)
  • PENTEST - All 14 offensive tools with live output
  • LOG - Event log

Optional Auth Token

Add password protection:

sudo systemctl edit evilplayer-webui

Add:

[Service]
Environment=PLAYER_TOKEN=your_secret_token

Browse with: http://evilplayer.local:8000?token=your_secret_token

Ways to Add Music

  1. SD card - Pop it out, drag files onto the MUSIC partition (FAT32)
  2. USB gadget - Plug Pi into PC, appears as a "MUSIC" drive
  3. Web upload - Drag & drop at http://10.55.0.1 or http://evilplayer.local:8000
  4. SCP:
    scp file.mp3 pi@evilplayer.local:/var/lib/player/music/
    ssh pi@evilplayer.local 'mpc update'

Project Layout

opt/evilplayer/
  lcd_driver.py        ST7735 SPI LCD driver
  input_gpio.py        Joystick/buttons via GPIO
  mpdctl.py            MPD control wrapper
  evlog.py             Shared event logger
  ui/
    main_ui.py         On-device LCD interface
  webui/
    app.py             Flask backend
    templates/
      index.html       Dashboard HTML
    static/
      app.js           Dashboard JavaScript
      style.css        Hacker-themed CSS
  gadget/
    usb_gadget.sh      USB gadget setup script
    usbsync.py         USB share file importer
  conf/
    mpd.conf           MPD configuration
  pentest/             Offensive security toolkit
    __init__.py
    manager.py         Tool lifecycle & state management
    scanner.py         Network recon (nmap/arp-scan)
    responder.py       LLMNR/NBT-NS credential harvester
    hid_inject.py      USB HID keyboard injector
    wifi_mon.py        WiFi monitor/deauth/handshake
    bt_sink.py         Bluetooth A2DP sink
    bt_hid.py          Bluetooth HID keyboard
    btle_scan.py       BLE scanner/advertiser
    evil_twin.py       Rogue WiFi AP + captive portal
    dns_spoof.py       DNS spoofing
    hashcrack.py       Hashcat/John wrapper
    tor_tunnel.py      Tor tunnel + transparent proxy
    wireguard_vpn.py   WireGuard VPN client/server
    reverse_shell.py   Reverse shells + persistence
    ota_update.py      Self-update from GitHub
    payloads/          HID payload scripts
systemd/               Systemd service files
tools/                 CLI utilities
install.sh             Installer script

Dependencies

Installed automatically by install.sh:

  • Audio: mpd, mpc
  • Python: flask, pillow, numpy, spidev, rpi.gpio, mpd, scapy
  • Networking: nmap, arp-scan, tcpdump, avahi
  • Bluetooth: bluez, bluez-tools
  • WiFi: hostapd, dnsmasq
  • Security: hashcat, john, tor, wireguard-tools
  • Input: xdotool

Troubleshooting

  • LCD white/black: Check SPI is enabled (raspi-config nonint do_spi 0), reseat HAT. If rotated, change MADCTL_VAL in lcd_driver.py (try 0x00 / 0x60 / 0xA0 / 0xC0).
  • No sound: Run aplay -l to list devices, adjust device: in /etc/mpd.conf, then sudo systemctl restart mpd.
  • USB gadget not working: Use the data port (not power). Check systemctl status evilplayer-gadget.
  • Logs: journalctl -u evilplayer-lcdui -f, -u evilplayer-webui, or the LOG tab in the dashboard.

Legal

For authorized penetration testing and educational purposes only. All actions are logged. Users are responsible for complying with all applicable laws and regulations. Only use on networks and systems you own or have explicit written permission to test.

License

MIT