Damiens' Simple Scoring Suite
A minimalist scoring engine for Red-Blue cyber competitions.
DSSS is a bare-bones scoring engine for Red-Blue cyber competitions, with a focus on simplicity, clarity, and frugality. It intends to be as minimal and focused as possible, while being easy to configure and deploy.
To deploy DSSS, a docker compose deployment is the recommended method of deployment currently, this will handle the complete install process so that the user only needs to configure the scoring checks and competition within the configuration and the deployment will handle the rest. To deploy follow these steps as root/sudo on the system!
git clone https://github.com/CyberDefenseOrganization/dsss
cd dsss/docker
docker compose up -dTo deploy DSSS, it is required that both NodeJS and Python are installed and available in your system path, alongside both npm and PDM. This can be accomplished through the following on Debian/Ubuntu:
sudo apt-get update
sudo apt-get install nodejs npm pdmgit clone https://github.com/CyberDefenseOrganization/dsss
cd dsss
pdm install
pdm run startgt clone https://github.com/CyberDefenseOrganization/dsss
cd dsss/
npm install
npm run devAll checks in DSSS are simply subclasses of the BaseCheck class, implementing the constructor as well as an asynchronous check method.
Below is an example of what the Random check looks like.
class RandomCheck(BaseCheck):
likelihood: float
def __init__(self, likelihood: float = 0.5) -> None:
self.likelihood = likelihood
super().__init__("0.0.0.0", None, 10)
@override
async def check(self) -> tuple[bool, str | None]:
if random.random() > 1 - self.likelihood:
return (True, "lucky")
else:
return (False, "unlucky")To extend DSSS with your own custom checks, simply create a file in ./dsss/checks/ containing a class that inherits from BaseCheck. Worth noting is that all checks are ran concurrently, so try to avoid blocking if possible.
