# Pwnflow
π― **Visualize Your Security Testing & Analysis Journey**
Pwnflow is a mind-mapping platform designed specifically for cybersecurity professionals. it helps you visualize, track, and share your security testing methodologies while maintaining complete control over your sensitive data.
## π Key Features
### Core Capabilities
- πΊοΈ **Interactive Mind Maps**: Create and navigate complex security testing workflows with an intuitive visual interface
- π€ **AI-Powered Assistance**: Generate node suggestions and expand your methodology with integrated AI capabilities
- π **Command Templates**: Save and reuse CLI commands with variable substitution
- π **Progress Tracking**: Visualize testing progress and methodology coverage
### Security & Privacy
- π **Self-Hosted Option**: Run entirely on your infrastructure
- π **Encrypted Exports**: AES-256-GCM encryption for secure sharing of Projects & Templates
- π **Authentication/Authorization**: Token-based authentication withresource-level access control
- π€ **AI Privacy**: Only non-sensitive data (node titles/descriptions) shared with AI - no commands or sensitive details
### Import/Export
- π₯ **Template Import**: Load methodologies from GitHub or private repositories
- π€ **Multiple Export Formats**: CSV and encrypted formats
- π **Legacy Migration**: Import from previous Pwnflow versions
- π¦ **Bulk Operations**: Export multiple projects or templates at once
## ποΈ Architecture
- **Frontend**: React 19 + TypeScript + Vite
- TailwindCSS for styling
- XYFlow for mind map visualization
- Zustand for state management
- **Backend**: FastAPI (Python 3.12)
- Neo4j graph database for storing relationships
- Redis
## π Getting Started
### Prerequisites
- Docker and Docker Compose
- Node.js 18+ and pnpm (for development)
- Python 3.12+ (for backend development)
### Quick Start with Docker
1. Clone the repository:
```bash
git clone https://github.com/rb-x/pwnflow.git
cd pwnflow
```
2. Make the run script executable:
```bash
chmod +x run.sh
```
3. Start the development environment:
```bash
./run.sh dev
```
This will automatically:
- Check for Docker and Docker Compose
- Create `.env.development` with secure defaults (Neo4j password: `password`)
- To enable the AI feature, press CTRL+C. Then, add your [Gemini API Key](https://aistudio.google.com/apikey) in your .env file & restart the application by running `./run.sh dev`
- Start all services (Frontend, Backend, Neo4j, Redis)
- Display service URLs
4. Access the application:
- Frontend: http://localhost:5173
- Backend API: http://localhost:8000
- API Documentation: http://localhost:8000/docs
- Neo4j Browser: http://localhost:7474
- Redis Commander: http://localhost:8081
### Other Commands
```bash
./run.sh prod # Start production environment (with nginx)
./run.sh stop # Stop all containers
./run.sh clean # Stop and remove all containers and volumes
```
### Development Setup
#### Option 1: Using Docker (Recommended)
```bash
./run.sh dev
```
This starts all services with hot-reload enabled. Perfect for full-stack development.
#### Option 2: Manual Development Setup
If you prefer running services individually without Docker:
**Frontend Development**
```bash
cd frontend
pnpm install
pnpm dev # Runs on http://localhost:5173
```
**Backend Development**
```bash
cd backend
pipenv install --dev
pipenv shell
python main.py # Runs on http://localhost:8000
```
**Note**: For manual setup, you'll need Neo4j and Redis running locally:
- Neo4j: Download from [neo4j.com](https://neo4j.com/download/)
- Redis: `brew install redis` (macOS) or `apt install redis` (Linux)
## π Project Structure
```
pwnflow/
βββ frontend/ # React TypeScript application
β βββ src/
β β βββ components/ # UI components
β β βββ pages/ # Route pages
β β βββ services/ # API services
β β βββ store/ # State management
β βββ package.json
βββ backend/ # FastAPI application
β βββ api/ # API endpoints
β βββ crud/ # Database operations
β βββ models/ # Data models
β βββ schemas/ # Pydantic schemas
β βββ services/ # Business logic
βββ docker-compose.*.yml
```
## π§ Configuration
The `run.sh` script handles all environment configuration automatically:
- **Development** (`./run.sh dev`): Creates `.env.development` with secure defaults
- **Production** (`./run.sh prod`): Creates `.env.production` with strong passwords
To add AI features, simply edit the generated `.env.development` or `.env.production` file and add your `GOOGLE_API_KEY`.
### Production Deployment
For production deployment:
1. Run the production setup:
```bash
./run.sh prod
```
This will:
- Check for existing `.env.production` file
- Generate secure passwords and secrets if needed
- Prompt you to update CORS origins for your domain
- Run security checklist before starting
- Start all services behind nginx proxy
2. On first run, update `.env.production`:
- Set your domain in `BACKEND_CORS_ORIGINS`
- Add your `GOOGLE_API_KEY` for AI features (optional)
- Review all generated passwords
3. Create your first user (registration is disabled by default for security):
```bash
# Create admin user via CLI (inside backend container)
docker exec -it pwnflow-backend-prod python create_user.py create admin admin@yourcompany.com
# Or using docker-compose:
docker compose -f docker-compose.prod.yml exec backend python create_user.py create admin admin@yourcompany.com
# The script will output:
# User created successfully:
# Username: admin
# Password:
# Email: admin@yourcompany.com
```
4. Additional production steps:
β οΈ Security Notice: We absolutely don't recommend exposing Pwnflow to the internet. If you must:
1. Whitelist trusted IP addresses through your WAF or firewall
2. Registration is disabled by default - only manual user creation via SSH
- Set up SSL/TLS certificates (Let's Encrypt recommended)
- Set up monitoring and logging
- Implement regular security updates
## π Documentation
π§ Documentation is currently being updated for the new full-stack architecture
## π― Use Cases
Pwnflow is perfect for:
- **Penetration Testers**: Track methodology and findings
- **Security Analysts**: Document investigation workflows
- **Incident Responders**: Map out response procedures
- **Security Teams**: Share knowledge and methodologies
- **Researchers**: Organize and visualize attack paths
## π‘οΈ Security
Pwnflow is designed with security in mind:
- **Privacy-First AI**: AI features only access node titles and descriptions - never sensitive data like findings or variables
- **Encrypted Exports**: Secure sharing with AES-256-GCM encryption
- **Zero Telemetry**: No tracking or data collection
- **Open Source**: Full transparency and community-driven security
Created with β€οΈ in π«π· by [Riadh BOUCHAHOUA (rb-x)](https://github.com/rb-x/) & [Ludovic COULON (LasCC)](https://github.com/LasCC/)
---
**Join the Pwnflow community and revolutionize your security testing workflow!**
[Website-legacy](https://pwnflow.sh) | [Documentation-legacy](https://docs.pwnflow.sh) | [Templates-legacy](https://github.com/rb-x/pwnflow-templates)