Today I wrote and shipped ctfdfetch
a simple python tool to “fetch” challenges
from any CTFd hosted CTF.
The code is on gitlab and pypi. This means downloading all the challenges for a CTF locally can be as simple as:
pip3 install ctfdfetch
ctfdfetch --server https://ctf.example.com --user hacker
Most of the code I was familiar with such as requests and beautiful soup, so probably the biggest thing I learned was how to package everything up. Even that had much better documentation then I remember.
It's not all fun and games. I actually started to write this program in go, but it seemed like I was fighting against the gain more than I would have liked to even just to do something simple like a POST request with a cookie from a previous connection. So still more to learn.