https://github.com/theflash2k/ctfd-cli
A Command Line Utility to perform actions with a CTFd Instance using the CTFd REST API
https://github.com/theflash2k/ctfd-cli
ctfd
Last synced: about 1 year ago
JSON representation
A Command Line Utility to perform actions with a CTFd Instance using the CTFd REST API
- Host: GitHub
- URL: https://github.com/theflash2k/ctfd-cli
- Owner: TheFlash2k
- Created: 2023-10-29T19:33:50.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-12-20T22:42:18.000Z (over 2 years ago)
- Last Synced: 2023-12-21T01:15:21.679Z (over 2 years ago)
- Topics: ctfd
- Language: Python
- Homepage:
- Size: 35.2 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# CTFd-CLI
A Command Line Utility to perform actions with a CTFd Instance using the CTFd REST API.
---
In order to interact with the CTFd API, you need to have an API key and the IP/Hostname of the CTFd instance. These can be configured inside the `.env` file.
For starters, you can copy the `.env.example` file and rename it to `.env` and fill in the values.
## Usage
```bash
usage: ctfd-cli.py [-h] [--ctfd-instance CTFD_INSTANCE] [--ctfd-token CTFD_TOKEN] {user,team} ...
CTFd CLI
positional arguments:
{user,team}
user User mode
team Team mode
options:
-h, --help show this help message and exit
--ctfd-instance CTFD_INSTANCE
CTFd instance URL
--ctfd-token CTFD_TOKEN
CTFd admin token
```
### User mode
```bash
usage: ctfd-cli.py user [-h] {create,delete,update,get,list}
positional arguments:
{create,delete,update,get,list}
create Create user
delete Delete user
update Update user
get Get user
list List users
options:
-h, --help show this help message and exit
```
- Create user:
```bash
usage: ctfd-cli.py user create [-h] --name NAME --password PASSWORD [--email EMAIL] [--team-id TEAM_ID] [--role ROLE]
[--verified VERIFIED] [--banned BANNED] [--hidden HIDDEN]
options:
-h, --help show this help message and exit
--name NAME Username [required]
--password PASSWORD Password [required]
--email EMAIL Email
--team-id TEAM_ID Team ID
--role ROLE Role
--verified VERIFIED Verified
--banned BANNED Banned
--hidden HIDDEN Hidden
```
- Delete user:
```bash
usage: ctfd-cli.py user delete [-h] --user-id USER_ID
options:
-h, --help show this help message and exit
--user-id USER_ID User ID
```
- Update user:
```bash
usage: ctfd-cli.py user update [-h] --user-id USER_ID [--attributes ATTRIBUTES] [--attributes-json ATTRIBUTES_JSON]
options:
-h, --help show this help message and exit
--user-id USER_ID User ID
--attributes ATTRIBUTES
Attributes (passed as a json object)
--attributes-json ATTRIBUTES_JSON
Attributes json file
```
The update attributes can be plain json object passed from the command-line as follows:
```bash
python3 ctfdcli.py user update --attributes '{"banned": true, "hidden": false}'
```
Or you can pass a json file containing the attributes:
```json: attributes.json
{
"banned": true,
"hidden": false
}
```
```bash
python3 ctfdcli.py user update --attributes-json attributes.json
```
- Get user:
```bash
usage: ctfd-cli.py user get [-h] --user-id USER_ID
```
- List users:
Get a list of all users (Only those that have 'hidden=false' and 'banned=false')
```bash
usage: ctfd-cli.py user list
```
### Team mode
> I haven't written the documentation for this but it is complete.
---
### Bulk Add
For bulk add, you need to run `parse` first, and then just validate. Then running bulk add will automatically add the users and teams to CTFd.
> By design, I've allowed only 3 users per team. You can modify it in `bulker.py:12`
---
## NOTE:
If someone can help me in writing a full documentation, please make a pull request, I'll review and merge, really busy these days to write a full documentation.