Features • Install • Quickstart • Examples • License
- 🔽 Download all challenges from supported CTFs
- 🎯 Apply filters by category, points, or solve status
- 🗂️ Organize challenges with customizable Jinja2 templates
- 🌐 Supports CTFd, rCTF, GZCTF, HTB, EPT, Berg, CryptoHack, pwn.college, and pwnable.{tw,kr,xyz} via ctfbridge
Run directly with uv:
uvx ctf-dlOr install permanently with pip:
pip install ctf-dlctf-dl https://demo.ctfd.io -u user -p password# Download all challenges
ctf-dl https://ctf.example.com
# Specify output directory
ctf-dl https://ctf.example.com -o example-ctf/
# Filter by categories
ctf-dl https://ctf.example.com --categories Web Crypto
# Overwrite existing challenges
ctf-dl https://ctf.example.com --update
# Compress output
ctf-dl https://ctf.example.com --zip
# Use JSON output format
ctf-dl https://ctf.example.com --output-format json
# List available templates
ctf-dl --list-templates
challenges/
├── README.md
├── pwn/
│ ├── rsa-beginner/
│ │ ├── README.md
│ │ └── files/
│ │ ├── chal.py
│ │ └── output.txt
├── web/
│ ├── sql-injection/
│ │ ├── README.md
│ │ └── files/
│ │ └── app.py
Contributions are welcome! See ctfbridge regarding platform support, or open an issue or pull request to improve ctf-dl itself.
MIT License © 2025 bjornmorten