add assistant guide
parent
9d526c8afc
commit
bad5615efe
|
@ -0,0 +1,197 @@
|
|||
# How to use the assistant
|
||||
This guide will describe all the functions of the assistant.
|
||||
Please read it before playing.
|
||||
|
||||
The game is controlled completely by running the assistant script.
|
||||
The script is located in the `assistant` subfolder, and you launch it
|
||||
by running `python assistant.py` (or `./assistant.py`) in terminal in the folder.
|
||||
|
||||
On Windows, you can use the command line or PowerShell, but make sure you're
|
||||
running it as an administrator! The game will error out otherwise.
|
||||
|
||||
The assistant tells you the basic commands when you launch it,
|
||||
and you can type `help` anytime to get a list of all commands.
|
||||
## Double-checking that everything is in order
|
||||
Before launching the game, you can run `git pull` to make sure that you are on the latest project version.
|
||||
|
||||
Then you are free to start the assistant script. Before launching the game, you can double-check that your installation
|
||||
is in order by typing `check`:
|
||||
```
|
||||
Welcome to the adaptive game assistant.
|
||||
Basic commands are:
|
||||
(S)tart, (N)ext, (H)elp, (C)heck, (E)xit
|
||||
Waiting for your input:
|
||||
check
|
||||
checking Python version:
|
||||
OK, Python version higher than 3.7.
|
||||
checking Vagrant version:
|
||||
OK, Vagrant version higher than 2.2.
|
||||
checking Virtualbox version:
|
||||
OK, VirtualBox version higher than 5 detected.
|
||||
Waiting for your input:
|
||||
```
|
||||
If the assistant tells you that everything is OK, you can move on to playing
|
||||
the game.
|
||||
|
||||
If you tried to play the game previously and something went wrong, you can also
|
||||
make sure there are no leftover files by typing `abort`:
|
||||
```
|
||||
Waiting for your input:
|
||||
abort
|
||||
Aborting game, deleting all VMs.
|
||||
==> attacker: Forcing shutdown of VM...
|
||||
==> attacker: Destroying VM and associated drives...
|
||||
==> web: Forcing shutdown of VM...
|
||||
==> web: Destroying VM and associated drives...
|
||||
==> br: Forcing shutdown of VM...
|
||||
==> br: Destroying VM and associated drives...
|
||||
==> internet-router: Forcing shutdown of VM...
|
||||
==> internal-router: Forcing shutdown of VM...
|
||||
==> internal-router: Destroying VM and associated drives...
|
||||
Game aborted, progress reset, VMs deleted.
|
||||
Waiting for your input:
|
||||
```
|
||||
## Starting the game
|
||||
You start the game by typing `start` in the assistant.
|
||||
What will follow is a short quiz where you answer yes/no questions.
|
||||
### The quiz
|
||||
Your answers to the quiz will help the assistant decide what levels you will
|
||||
play.
|
||||
```
|
||||
Waiting for your input:
|
||||
start
|
||||
Before the game starts, please fill in a little quiz.
|
||||
It will help better decide what levels you will play.
|
||||
Please answer 'yes' if you have ever used a tool or skill before,
|
||||
or 'no' if you haven't.
|
||||
Are you familiar with metamask?
|
||||
no
|
||||
Are you familiar with SQL injection?
|
||||
yes
|
||||
Are you familiar with webshell?
|
||||
```
|
||||
If you suddenly realize that you can't play the game just yet, you can
|
||||
interrupt the quiz by typing `exit` as well. The game will not start.
|
||||
|
||||
## Setup
|
||||
After you fill out the quiz, the assistant will set up the virtual environment
|
||||
for the game. This can take a while (20-30 minutes), so you should be patient.
|
||||
|
||||
During this initial set-up, the assistant may also ask for your input when it's setting up an internet connection for the virtual machines. It will ask you for an internet provider - it's usually the first one on the list.
|
||||
|
||||
This is what the end of succesful setup looks like. (both `ok` and `changed` are good.):
|
||||
```
|
||||
PLAY RECAP *********************************************************************
|
||||
attacker : ok=5 changed=4 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|
||||
|
||||
If you do not see any error messages above,
|
||||
then the game was started succesfully!
|
||||
You can start playing now.
|
||||
```
|
||||
|
||||
Once you see this in the terminal window, you can move on to
|
||||
completing the first level objective.
|
||||
|
||||
### Troubleshooting problems
|
||||
If the assistant gets stuck on a command, outputs an error or `failed` in the
|
||||
command line, something went wrong during setup.
|
||||
|
||||
There is a brief list of known errors and possible causes in the [[troubleshooting]] doc, along
|
||||
with solutions.
|
||||
|
||||
## Moving on to next level
|
||||
Once you finish a level and find the corresponding flag, it is time to
|
||||
continue the game in the assistant.
|
||||
|
||||
For that there is the `next` command. You will also need to enter the flag
|
||||
you found in order to continue.
|
||||
```
|
||||
Waiting for your input:
|
||||
next
|
||||
To continue, please enter the flag you found:
|
||||
(case sensitive)
|
||||
[flag]
|
||||
Flag is correct!
|
||||
Going to set up level 2
|
||||
Setting up next level: level2b
|
||||
Bringing machine 'web' up with 'virtualbox' provider...
|
||||
```
|
||||
Once more, you should keep an eye for possible errors in the output.
|
||||
If everything seems fine, you can go read the level instructions and play!
|
||||
|
||||
## Finishing the game
|
||||
Once you go through all the levels, there is no need to press `next`, but you
|
||||
should still submit your last flag!
|
||||
You do that by typing `finish` into the assistant.
|
||||
```
|
||||
Waiting for your input:
|
||||
finish
|
||||
To continue, please enter the flag you found:
|
||||
(case sensitive)
|
||||
[flag]
|
||||
Flag is correct!
|
||||
Game finished, total time saved!
|
||||
```
|
||||
|
||||
You save the log by typing `log`.
|
||||
```
|
||||
Waiting for your input:
|
||||
log
|
||||
Writing file...
|
||||
Waiting for your input:
|
||||
```
|
||||
The log will be saved as `assistant/logs/game_log.yml`.
|
||||
If you previously saved another log (on accident, or for troubleshooting
|
||||
reasons), the assistant will ask you if it can rewrite the current log.
|
||||
## Getting hints
|
||||
Sometimes, it might happen you will get stuck while trying to complete a level.
|
||||
For that reason, there is a hint system present in the assistant.
|
||||
|
||||
You can ask for a hint by writing `hint` into the assistant, and then picking
|
||||
a number of the hint you want. (By typing `hint`, you will also get a recap
|
||||
of all the hints you received previously.)
|
||||
|
||||
```
|
||||
Waiting for your input:
|
||||
hint
|
||||
Choose which hint to take (Write a number):
|
||||
0: (cancel, take no hint)
|
||||
1: Where to start
|
||||
2: Database
|
||||
3: Input
|
||||
4: Solution
|
||||
2
|
||||
2: [hint text will be right here!]
|
||||
Waiting for your input:
|
||||
```
|
||||
If taking all the other hints doesn't help, the final hint is always the
|
||||
exact solution for how to find the flag in the level.
|
||||
|
||||
## Quitting the assistant
|
||||
To properly quit the assistant, write `exit`. It will automatically stop
|
||||
the running game, and delete all the data.
|
||||
```
|
||||
Waiting for your input:
|
||||
exit
|
||||
Aborting game, deleting all VMs.
|
||||
==> attacker: Forcing shutdown of VM...
|
||||
==> attacker: Destroying VM and associated drives...
|
||||
==> web: Forcing shutdown of VM...
|
||||
==> web: Destroying VM and associated drives...
|
||||
==> br: Forcing shutdown of VM...
|
||||
==> br: Destroying VM and associated drives...
|
||||
==> internet-router: Forcing shutdown of VM...
|
||||
==> internet-router: Destroying VM and associated drives...
|
||||
==> internal-router: Forcing shutdown of VM...
|
||||
==> internal-router: Destroying VM and associated drives...
|
||||
Game aborted, progress reset, VMs deleted.
|
||||
Exiting...
|
||||
```
|
||||
## Restoring a game log
|
||||
If you forgot to save the log after you ended the game, and you already exit
|
||||
the assistant, don't panic.
|
||||
The game saves a log of the last game on every quit action.
|
||||
In the `assistant/logs` folder, you should see several files named something
|
||||
like `aborted_game1617806264.6124976`. The last modified of these should be the
|
||||
log of the game you just played. If you forgot to save your log, you can use
|
||||
this one in its place.
|
Reference in New Issue