A plugin for CTFd that allows administrators to manage multiple challenges at once and visualize challenge dependencies in an interactive network graph.
If you find this plugin useful for your CTF events, consider supporting the developer:
This plugin was developed to streamline challenge management for CTF administrators, making it easier to handle large competition setups with complex dependency relationships between challenges.
-
Bulk Management:
- Edit multiple challenges simultaneously
- Apply category, value, and state changes in batch
- Search and filter challenges by various criteria
-
Challenge Dependency Visualization:
- Interactive network graph of challenge dependencies
- Drag-and-drop interface for creating and modifying prerequisite relationships
- Visual validation of dependency logic (orphan challenges, circular dependencies)
- Color-coded categories for easy identification
-
Enhanced Flag Management:
- Add, edit, and remove multiple flags at once
- Support for case sensitivity options
- Compatible with various flag types
-
User-Friendly Interface:
- Modern, responsive design
- Real-time visual feedback
- Detailed challenge information view
-
Create the plugin directory structure in your CTFd installation:
mkdir -p /path/to/CTFd/plugins/bulk_challenge_manager/templates mkdir -p /path/to/CTFd/plugins/bulk_challenge_manager/assets
-
Copy the plugin files to the appropriate locations:
__init__.py
→/path/to/CTFd/plugins/bulk_challenge_manager/
bulk_manager.js
,challenge_map.js
→/path/to/CTFd/plugins/bulk_challenge_manager/assets/
bulk_manager.css
,challenge_map.css
→/path/to/CTFd/plugins/bulk_challenge_manager/assets/
- Template files →
/path/to/CTFd/plugins/bulk_challenge_manager/templates/
-
Restart your CTFd instance to load the plugin.
- In the CTFd admin panel, go to Admin → Bulk Challenge Manager
- Use filters at the top to narrow down the challenge list
- Select challenges using the checkboxes
- Apply bulk edits using the form at the bottom
- Save changes with the "Apply Changes" button
- In the CTFd admin panel, go to Admin → Challenge Map
- View the interactive network of challenge relationships
- Right-click on a challenge to start creating a dependency
- Click on another challenge to establish the relationship
- Click on any challenge to view its details
- Use the category filters to focus on specific challenge types
- Click "Check Logic" to validate your challenge dependency structure
- Click "Save Layout" to persist your arrangement
The plugin adds two main components to CTFd:
- Bulk Manager: A tabular interface for editing multiple challenges with a powerful filtering system
- Challenge Map: A cytoscape.js-powered network visualization of challenge dependencies with an intuitive interface for creating and managing prerequisite relationships
Both components interact with the CTFd database through custom API endpoints to update challenge data and their relationships.
- CTFd v3.0.0 or higher
- Modern web browser with JavaScript enabled
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the project
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request