Skip to content

CTF Architect Overview

CTF Architect is a command-line tool for standardised challenge creation and management.

It consists of 2 main commands:

  • ctfa repo: Commands for managing the challenge repository.
  • ctfa chall: Commands for creating and editing challenges.

How it works

CTF Architect is centered around 2 TOML configuration files - ctf_config.toml (CTF Config file) and chall.toml (Challenge Config file).

In CTF Architect, challenges are stored in a file structure called a Challenge Repository. Each Challenge Repository has a ctf_config.toml at the root, which contains metadata about the repository, such as categories, difficulties and flag format.

Meanwhile, a challenge is stored within a subdirectory of the Challenge Repository, and each challenge has a chall.toml file which contains metadata about the challenge, such as the flag, hints and services.

The CTF Config file follows the rules of the Challenge Repository Specification, and the Challenge Config file follows the rules of the Challenge Specification.

The Challenge Repository

The Challenge Repository is a directory that contains all the challenges for a CTF. It has the following structure:

.
└── 📁 {repo_name}/
    ├── 📁 challenges/
    │   ├── 📁 {category_name}/
    │   │   ├── 📁 ...
    │   │   └── 📄 README.md
    │   ├── 📁 ...
    │   └── 📄 README.md
    └── 📄 ctf_config.toml

The challenges/ directory contains folders for each challenge category specified in the ctf_config.toml file. Each category folder contains the challenges for that category. The README.md file in each category folder and the challenges/ directory contains information such as the difficulty distribution, challenge info, and services.

Why use CTF Architect?

CTF Architect aims to provide a standardised and streamlined way to manage challenges for a CTF. Unlike alternatives such as ctfcli, it is not designed to work with one CTF platform, but rather to be a general-purpose tool for managing challenges.

With the ability to create custom extensions and plugins, CTF Architect aims to solely focus on the challenge creation and management aspect of CTFs, leaving the deployment of challenges to plugins and integrations. (NOTE: This is a planned feature, but not yet implemented)

Using CTF Architect has several features to help streamline the development and management of challenges for a CTF:

  • Standardised Format: All challenges are stored and must be submitted in a standardised format, making it easier to manage and share challenges.
  • Metadata Management: Metadata for challenges and Challenge Repositories are stored in TOML files, which are easy to read and manually edit.
  • Extensible: CTF Architect is designed to be extensible, with the ability to add new commands and features easily.
  • Cross-Platform: CTF Architect tries its best to be platform-independent, with support for Windows and Linux systems.