A Python library for interacting with multiple CTF platforms.
Project description
CTFBridge
A unified Python interface for all major CTF platforms
Features • Install • Quickstart • Docs • License
✨ Features
- ✅ Unified API for multiple CTF platforms
- 🧠 Auto-detect platform type from just a URL
- 🔐 Clean auth flow with support for credentials and API tokens
- 🧩 Challenge enrichment — parses services and attachments from descriptions
- 🔄 Persistent sessions — save/load session state with ease
- 🤖 Async-first design — perfect for scripts, tools, and automation
📦 Installation
pip install ctfbridge
🚀 Quickstart
import asyncio
from ctfbridge import create_client
async def main():
# Connect and authenticate
client = await create_client("https://demo.ctfd.io")
await client.auth.login(username="admin", password="password")
# Get challenges
challenges = await client.challenges.get_all()
for chal in challenges:
print(f"[{chal.category}] {chal.name} ({chal.value} points)")
# Submit a flag
await client.challenges.submit(challenge_id=1, flag="CTF{flag}")
# View the scoreboard
scoreboard = await client.scoreboard.get_top(5)
for entry in scoreboard:
print(f"[+] {entry.rank}. {entry.name} - {entry.score} points")
if __name__ == "__main__":
asyncio.run(main())
🧩 Supported Platforms
CTFBridge works out of the box with:
| Platform | Login | Challenges | Submit Flags | Scoreboard |
|---|---|---|---|---|
| CTFd | ✅ | ✅ | ✅ | ✅ |
| rCTF | ✅ | ✅ | ✅ | ✅ |
| GZCTF | ✅ | ✅ | ✅ | ✅ |
| HTB | ✅ | ✅ | ✅ | ✅ |
| Berg | ❌ | ✅ | ❌ | ❌ |
| EPT | ❌ | ✅ | ❌ | ❌ |
| CryptoHack | ❌ | ✅ | ❌ | ❌ |
| pwnable.tw | ❌ | ✅ | ❌ | ❌ |
| pwnable.xyz | ❌ | ✅ | ❌ | ❌ |
| pwnable.kr | ❌ | ✅ | ❌ | ❌ |
| More... | 🚧 | 🚧 | 🚧 | 🚧 |
📖 See docs for details.
📚 Documentation
All guides and API references are available at: ctfbridge.readthedocs.io
🤝 Contributing
Contributions are welcome! We appreciate any help, from bug reports and feature requests to code enhancements and documentation improvements.
Please read our Contributing Guidelines to get started.
🛠️ Projects Using CTFBridge
| Project | Description |
|---|---|
| ctf-dl | 🗃️ A CTF challenge bulk downloader |
| ctf-sniper | 🎯 An automated flag submission tool |
| pwnv | 🧠 A CTF workspace management tool |
Using CTFBridge in the wild? Send a PR to feature it here!
📄 License
MIT License © 2025 bjornmorten
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ctfbridge-0.8.0.tar.gz.
File metadata
- Download URL: ctfbridge-0.8.0.tar.gz
- Upload date:
- Size: 113.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d186e11bd7786d6d998dad5aa19dc8eba358357e25393dc71cc0cae782476cc2
|
|
| MD5 |
abfb3b63fe6fbf4f3d35f405bd3c3c35
|
|
| BLAKE2b-256 |
74533d31724b082dbce660c65c8a23ded0cdd6e042aee089d6ef674c82d1f28f
|
File details
Details for the file ctfbridge-0.8.0-py3-none-any.whl.
File metadata
- Download URL: ctfbridge-0.8.0-py3-none-any.whl
- Upload date:
- Size: 106.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
36ef1135bff41554e528d594d2a3a0b67f3656216b2342191c704cf75c91b7c7
|
|
| MD5 |
207f86e3faadc41524a71dcbde9148cc
|
|
| BLAKE2b-256 |
8b64775b19bca8e120ff85df050b13d803eb3ed36d955eb7972bec8331865475
|