/imsc

Linux Scoring Engine for CyberPatriot tryout / practice images

Primary LanguageC++GNU General Public License v3.0GPL-3.0

imsc - Scoring Engine for Linux

This project is still under development.

How does it work

This is an attempt at making a scoring engine for tryout images (Linux) for CyberPatriot. The user needs to run imsc TOKEN after he/she boots up the image. The token is sent by the proctor beforehand.

A tryout image is defined using a TOML config file, which stores a ruleset (a set of vulnerabilities plus a set of penalties) plus some other information such as duration and image name. The proctor can then create tryout sessions for every participant and generate tokens for each. The token is then passed as an argument to imsc so that it can fetch and upload scoring data.

To use this, you need to host your own server with imsc-server (for now) and set up SSL certificate with certbot from Let’s Encrypt.

How to Build

Install dependencies

Arch

yay -S libcurlpp # replace yay with your favorite AUR helper
sudo pacman -S cmake crypto++ libnotify

Ubuntu

sudo apt update
sudo apt install -y cmake libcurlpp-dev libcurl4-openssl-dev libcrypto++-dev libnotify-dev

Note that for older versions of Ubuntu like Ubuntu 14 & 16, you need to obtain newer versions of cmake and gcc/g++ to enable C++17. You might also need to build & install a newer version of libcurlpp from source if you encounter build errors (don’t forget to remove the libcurlpp-dev package first).

Build

git clone --recurse-submodules https://www.github.com/oakrc/imsc
mkdir build
cd build
cmake .. -DIMSC_KEY=MySecretPassword -DIMSC_URL=https://example.com # **CHANGE THIS**
make && sudo make install

License

GPL v3.0, see LICENSE