A discord.py bot focused on providing CTF tools for collaboration in Discord servers (ctftime.org commands, team setup, utilites, etc)! If you have a feature request, make it a GitHub issue or use the >request "x" command.
Invite to your server
Join the support server
Go to https://discordapp.com/developers/applications/me and create a new app. On your app detail page, save the Client ID. You will need it later to authorize your bot for your server.
After creating app, on the app details page, scroll down to the section named bot, and create a bot user. Save the token, you will need it later to run the bot.
install all necessary libraries pip3 -r requirements.txt
create "auth.py" to contain one variable "auth_token=" set to the value of your bot's token
python3 nullctf.py
This bot has commands for encoding/decoding, ciphers, and other commonly accessed tools during CTFs. But, the main use for NullCTF is to easily set up a CTF for your discord server to play as a team. The following commands listed are probably going to be used the most.
>ctf create "ctf name"
This is the command you'll use when you want to begin a new CTF. This command will make a text channel with your supplied name under the category 'CTF' (If the category doesn't exist it will be created). Must have permissions to manage channels
NOTE: the following ctf specific commands will only be accepted under the channel created for that ctf. This is to avoid clashes with multiple ctfs going on in the same server.
-
>ctf join/leave
Using this command will either give or remove the role of a created ctf to/from you. -
>ctf challenge add/working/solved "challenge name"
Allows users to add challenges to a list, and then set the status of that challenge. Use quotations -
>ctf challenge list
This is the list command that was previously mentioned, it displays the added challenges, who's working on what, and if a challenge is solved (and by who). -
>ctf end
Delete the ctf info from the db, and remove the role from your server. Must have permissions to manage channels
The following commands use the api from ctftime
-
>ctftime countdown/timeleft
Countdown will return when a selected CTF starts, and timeleft will return when any currently running CTFs end in the form of days hours minutes and seconds.
-
>ctftime upcoming <number>
Uses the api mentioned to return an embed up to 5 upcoming CTFs. If no number is provided the default is 3. -
>ctftime current
Displays any currently running CTFs in the same embed as previously mentioned. -
>ctftime top <year>
Shows the ctftime leaderboards from a certain year (dates back to 2011).
Utility commands
-
>magicb filetype
Returns the mime and magicbytes of your supplied filetype. Useful for stegonography challenges where a filetype is corrupt. -
>rot "a message" <right/left>
Returns all 25 possible rotations for a message with an optional direction (defaults to left). -
>b64 encode/decode "message"
Encode or decode in base64 (at the time of writing this, if there are any unprintable characters this command will not work, this goes for all encoding/decoding commands). -
>binary encode/decode "message"
Encode or decode in binary. -
>hex encode/decode "message"
Encode or decode in hex. -
>url encode/decode "message"
Encode or decode with url parse. This could be used for generating XSS payloads. -
>reverse "message"
Reverse a message. -
>counteach "message"
Count the occurrences of each character in the supplied message. -
>characters "message"
Count the amount of characters in your message. -
>wordcount a test
Counts the amount of words in your message (don't use quotations). -
>htb
Return when the next hackthebox machine is going live from @hackthebox_eu on twitter. -
>cointoss
Get a 50/50 cointoss to make all your life's decisions. -
>request/report "a feature"/"a bug"
Dm's the creator with your feature/bug request/report. -
>help pagenumber
Returns the help page of your supplied number (currently there are 2 pages)