A powerful web-based application for managing Flipper Zero and WiFi Pineapple devices.
Features • Installation • Quick Start • Usage • Documentation
Bad-Antics Device Manager Web Edition is a Flask-based web application that provides a powerful, browser-accessible interface for managing and monitoring Flipper Zero and WiFi Pineapple devices. Access your devices from anywhere on your network!
- ✅ Browser-Based - Access from any device on your network (phone, tablet, laptop, desktop)
- ✅ Remote Access - Manage devices from other computers on the same network
- ✅ Cross-Platform - Runs on Windows, Linux, and macOS
- ✅ Easy Deployment - Run on any machine with Python
- ✅ Multi-User - Share access with team members
- ✅ Responsive Design - Works beautifully on desktop and mobile
- ✅ Zero Installation - Just install Python packages and run
-
🔌 Auto-Connect - Automatically detects and connects to Flipper Zero via USB
-
📊 Device Monitor - Real-time display of:
- Device information (model, firmware version)
- System uptime
- Memory usage
- Serial port details
-
🎮 CLI Commands - Execute any Flipper CLI command directly:
info device uptime free subghz tx <parameters> storage list <path> -
📁 File Explorer
- Browse Flipper's internal and external storage
- Read file contents
- Delete files
- Download files to computer
-
📡 Sub-GHz Transmission
- Carrier transmission
- Static signal transmission
- Custom frequency and modulation
- Load from files
- Raw data transmission
-
🌐 Auto-Discovery - Automatically locates Pineapple on network
-
🔐 Authentication - Secure login with token-based API access
-
📈 Status Monitoring - View:
- Device status and uptime
- Connected clients
- System logs
- Notifications
-
⚙️ Configuration - Manage device settings
-
📝 Logs - Access detailed operation logs
Requirements: Python 3.10+
# Navigate to the web app folder
cd pineflip-web-app
# Install dependencies
pip install -r requirements.txt
# Run the Flask server
python app.pyThe application will be available at: http://localhost:5000
PowerShell:
$env:FLASK_DEBUG = "1"
$env:PINEAPPLE_USER = "root"
$env:PINEAPPLE_PASS = "flooding"
$env:AUTO_CONNECT_FLIPPER = "1"
python app.pyCommand Prompt:
set FLASK_DEBUG=1
set PINEAPPLE_USER=root
set PINEAPPLE_PASS=flooding
set AUTO_CONNECT_FLIPPER=1
python app.pypython app.py --port 5001- Windows 10+, Linux, or macOS
- Python 3.10 or higher
- pip (Python package manager)
- USB cable for Flipper Zero
- Network connection to WiFi Pineapple (optional)
- Flask 3.0+
- requests 2.32+
- pyserial 3.5+
- WTForms 1.2+
- Flask-Limiter 4.1+
- bcrypt 5.0+
git clone https://github.com/yourusername/pineflip-web-app.git
cd pineflip-web-app
pip install -r requirements.txt
python app.pyThe application will be available at http://localhost:5000
- Connect Flipper Zero via USB
- Open the Flipper tab in the web interface
- The app auto-detects the serial port
- Click "Connect"
- Status indicator will show when connected
The device monitor displays:
- Port: Serial port in use (e.g., COM3)
- Device Info: Manufacturer, model, firmware
- Uptime: How long the device has been running
- Memory: RAM and storage usage
- Go to the Flipper tab
- Enter a CLI command (e.g.,
info device,uptime,free) - Click "Send"
- View results in the output panel
Common Commands:
info device # Show device information
uptime # Show system uptime
free # Show memory usage
storage list /ext # List external storage files
storage read /ext/file.txt # Read file contents
- Go to the File Explorer section
- Enter a path (e.g.,
/ext,/int,/data) - Click "List Files"
- Browse the file listing
- Click on a file to view or delete it
- Ensure Pineapple is powered on and on your network
- Open the Pineapple tab
- Enter connection details:
- URL: Auto-detected or manual IP (typically
http://172.16.42.1) - Username: Usually
root - Password: Device password
- URL: Auto-detected or manual IP (typically
- Click "Connect"
- Status indicator will show when authenticated
- Once connected, click "Refresh Status"
- View current device status, connected clients, and logs
- Logs update automatically in the background
pineflip-web-app/
├── app.py # Flask application
├── requirements.txt # Python dependencies
├── README.md # This file
├── README.txt # Original documentation
├── LICENSE # MIT License
├── templates/ # HTML templates
│ ├── base.html # Base template
│ ├── home.html # Home page
│ ├── flipper.html # Flipper management
│ ├── pineapple.html # Pineapple management
│ ├── nav.html # Navigation
│ └── footer.html # Footer
└── tests/ # Test files
├── test_flipper_monitor.py
└── test_status_devices.py
# Flask configuration
FLASK_ENV=development # development or production
FLASK_DEBUG=1 # Enable debug mode (dev only)
SECRET_KEY=your_secret_key # Flask secret key
# Device configuration
FLIPPER_PORT=COM3 # Serial port (auto-detect if not set)
FLIPPER_BAUD=230400 # Baud rate (default)
# Pineapple configuration
PINEAPPLE_URL=http://172.16.42.1
PINEAPPLE_USER=root
PINEAPPLE_PASS=your_password
# Auto-connect options
AUTO_CONNECT_FLIPPER=1 # Auto-connect to Flipper on startup
AUTO_CONNECT_PINEAPPLE=0 # Auto-connect to Pineapple on startupWindows PowerShell:
$env:FLASK_DEBUG = "1"
$env:PINEAPPLE_USER = "root"
$env:PINEAPPLE_PASS = "flooding"
python app.pyWindows Command Prompt:
set FLASK_DEBUG=1
set PINEAPPLE_USER=root
set PINEAPPLE_PASS=flooding
python app.pyPowerShell:
$env:FLASK_DEBUG = "1"
$env:PINEAPPLE_USER = "root"
$env:PINEAPPLE_PASS = "flooding"
python app.pyCommand Prompt:
set FLASK_DEBUG=1
set PINEAPPLE_USER=root
set PINEAPPLE_PASS=flooding
python app.pyIssue: "ModuleNotFoundError: No module named 'Flask'"
Solution:
pip install -r requirements.txt --upgradeIssue: "Address already in use" error
Solutions:
- Run on a different port:
python app.py --port 5001
- Or find and stop the process using port 5000
Issue: Connection status stays "Not Connected"
Solutions:
- Check USB cable is properly connected
- Verify port in Device Manager (Settings → Device Manager → Ports)
- Try different USB port on computer
- Restart Flipper Zero
- Update Flipper firmware
Debug:
from device_manager import FlipperDevice
f = FlipperDevice()
print(f.connect()) # Should return True if connectedIssue: Can't connect to Pineapple / Authentication fails
Solutions:
- Ensure Pineapple is powered on and on your network
- Check network connectivity (try ping
172.16.42.1) - Verify credentials (default:
root/flooding) - Check IP address with
ipconfig(should be172.16.x.x) - Try accessing
http://172.16.42.1in browser
Debug:
from device_manager import PineappleDevice
p = PineappleDevice()
p.discover_url() # Should find the device
p.authenticate() # Should return TrueIssue: "Cannot reach localhost:5000"
Solutions:
- Ensure Flask is running:
python app.py
- Try
http://127.0.0.1:5000instead - Check firewall isn't blocking port 5000
- Try a different port (5001, 5002, etc.)
GET /flipper- Flipper management interfacePOST /flipper/connect- Connect to devicePOST /flipper/disconnect- Disconnect from devicePOST /flipper/command- Send CLI commandGET /flipper_status- Get real-time device status
GET /pineapple- Pineapple management interfacePOST /pineapple/connect- Authenticate with devicePOST /pineapple/disconnect- Disconnect from deviceGET /pineapple_status- Get device statusGET /pineapple/logs- Get device operation logs
GET /status- Overall application statusGET /status/flipper_network- Flipper network and connection statusGET /status/pineapple_network- Pineapple network and connection status
pip install waitress
waitress-serve --port=5000 --host=0.0.0.0 app:apppip install gunicorn
gunicorn -w 4 -b 0.0.0.0:5000 app:app- Install Nginx
- Configure reverse proxy to localhost:5000
- Run Flask app:
waitress-serve --port=5000 app:app
- Access via Nginx (typically http://your-domain)
Contributions are welcome! Here's how:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Add tests if applicable
- Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
This tool is provided for authorized use only. Users are responsible for:
- Ensuring they own or have permission to use devices
- Complying with all applicable laws and regulations
- Using this tool responsibly and ethically
- Flipper Devices - For the awesome Flipper Zero
- WiFi Pineapple - For the incredible platform
- Flask Team - For the excellent web framework
- Community - For feedback and contributions
Made with ❤️ by the Bad-Antics team