Every problem must contain a problem.json. This file provides metadata about the problem through a series of mandatory and optional fields.

Field Datatype Required Description
author String Yes Author of the problem.
score Int Yes Points gained for solving the problem.
name String Yes The title of the problem on the competition page.
event String Yes The event in which this problem appears, such as “picoCTF 2019.”
description String Template Yes Description for the problem. jinja2 template.
category String Yes Category of the problem.
hints List[String] Yes Additional help to the problem.
version String No Version string for the problem. Defaults to “1.0.0”.
tags List[String] No Minor descriptors for the problem.
organization String No Organization that the problem identifies with.
pkg_architecture String No Compatible architectures. Defaults to “all”.
pkg_description String No Description for the deb package. Defaults to desc.
pkg_name String No Optional name for the problem package. Defaults to name. Check here for the naming policy.
pkg_dependencies List[String] No List of package dependencies. Defaults to none.
pip_python_version String No Python version that the packages listed in pip_requirements will be installed to, e.g., “3.6”. Defaults to “3”.
pip_requirements List[String] No List of pip requirements for the challenge. Defaults to none. Can alternatively include a requirements.txt in your problem directory.