1
0
Fork 0

add assistant guide

Lili (Tlapka) 2024-01-30 15:06:35 +01:00
parent 9d526c8afc
commit bad5615efe
1 changed files with 197 additions and 0 deletions

197
Assistant-guide.-.md Normal file

@ -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.