admin/sync: fill README.md with synchronisation instructions for students

This commit is contained in:
nemunaire 2018-05-02 00:30:19 +02:00 committed by Pierre-Olivier Mercier
parent 156a87abc0
commit 1a959862f1
1 changed files with 139 additions and 0 deletions

139
admin/sync/README.md Normal file
View File

@ -0,0 +1,139 @@
Format des répertoires pour la synchronisation
==============================================
- Un dossier par groupe/scénario, contenant :
* `AUTHORS.txt` avec vos noms, tels qu'ils apparraîtront sur le site
* `introduction.txt` une présentation rapide du scenario (~2-3 phrases d'accroche pour lecture rapide), compréhensible par un décideur, petit schéma a l'appui
* Un dossier par challenge : `CHID-Titre du challenge`
+ `scenario.txt` contenant le scénario du challenge, tel qu'il sera affiché sur le site, à destination des participants
+ `introduction.txt` une présentation rapide du challenge (~1-2 phrases d'accroche), compréhensible par un décideur, petit schéma a l'appui si besoin
+ `defines.txt` définitions de quelques paramètres (format [toml](https://github.com/toml-lang/toml/blob/master/versions/en/toml-v0.4.0.md)) :
- `gain = 42` : nombre de points que rapporte cet exercice ;
- `[[hint]]` : paramètres pour un indice :
* `filename = "toto.txt"` : nom du fichier tel qu'il apparaît dans le dossier `hints` ;
* `cost = 10` : coût de l'indice (par défaut 1/4 des gains du challenge) ;
* `title = "Foo Bar"` : titre de l'astuce dans l'interface (par défaut "Astuce $id") ;
+ `depends.txt` contenant les dépendances :
- une dépendance par ligne
- format d'une ligne : `CHID`
+ `flags.txt` contenant les flags :
- un flag par ligne
- format d'une ligne : `Description<TAB>Flag`
le premier caractère tabulation est utilisé comme séparateur entre la description et le flag. Prennez garde à ce que votre éditeur de texte ne remplace pas cette tabulation par des espaces !
- la description est facultative (sera remplacé par « Flag »), mais la tabulation ne l'est pas.
+ `flags-ucq.txt` pour un questionnaire type cases à cocher :
- une question par ligne
- format d'une ligne : `<RESPONSE>Intitulé`
le premier caractère `0` ou `1` indique si la bonne réponse est de cocher la case ou non. L'intitulé commence sans séparateur.
+ `flags-mcq.txt` pour un questionnaire à choix multiple :
- une question par ligne avec ses réponses, séparé par des tabulations
- format d'une ligne : `Question<TAB>Réponse 1<TAB>Réponse 2<...>`
+ `links.txt` : webographie publiée avec les solutions
- un lien par ligne
- format d'une ligne : `https://lien Description`
le premier ' ' est utilisé comme séparateur entre le lien et sa description
- liens vers les CVE concernées, metasploit/exploitDB, article qui vous a aidé, extrait/dépôt de code, ...
+ `hints/` : dossier contenant des indices pour orienter le participant (qu'il débloquera en échange d'un certain nombre de points)
- l'ordre alphabétique détermine l'ordre dans lequel seront proposé les astuces (préfixez par des numéros si besoin d'ordre)
- les fichiers textes de moins de 25 lignes sont affichés directement, les autres (autres types ou textes plus longs) sont proposés au téléchargement.
+ `resolution/` : dossier contenant les vidéos de résolution
- format MP4 (H.264 + AAC + 3GPP Timed Text)
- utiliser les sous-titres pour commenter les étapes ; pas de commentaires audio
- environ 2' par vidéo : maxi 1'30" pour les challenges simples, 3-4' maxi
- `ffmpeg -video_size 1920x1080 -framerate 25 -f x11grab -i :0.0 -f alsa -ac 2 -i hw:0 -strict experimental resolution.mp4`
- [recordMyDesktop](http://recordmydesktop.sourceforge.net/) sous Linux
- [Screencast Capture Lite](http://cesarsouza.github.io/screencast-capture/) pour Windows (pas de logiciel de « démonstration » => il faut payer la licence pour publier une vidéo)
- [Aegisub](http://www.aegisub.org/), [Gnome Subtitle](http://gnomesubtitles.org/), emacs/vim, ... pour les sous-titres
+ `files/` : fichiers à distribuer aux participants
- `DIGESTS.txt` : contenant les condensats des fichiers : `$(b2sum * > DIGESTS.txt)` à générer avant l'upload !
- Pas plus 4GB à télécharger **par challenge** (ie. tous les fichiers de ce challenge)
- Archives `.tader.bz2`, `.tar.gz`, `.tar.xz` ou `.zip` lorsque nécessaire. **PAS** de `.rar`, ...
- Compresser (sans tarball, j+wwwwwwwwwwwwwwwwwwuste via **gzip**) les fichiers lorsque c'est utile (memory dump, ...)
- Utiliser `$(split -b 240M -d BIG_FILE BIG_FILE.)` pour uploader les gros fichiers sur owncloud.
Ces fichiers seront concaténés au moment de leur import sur l'interface.
Seul le hash du fichier entier est requis dans le fichier `DIGESTS.txt`.
+ `ressources/` :
- ressources et scripts que vous avez réalisés pour le challenge : pour sa construction ou sa résolution
- schéma du SI au premier challenge concerné
- éventuellement un `README.txt` avec les liens des outils externes
Exemple d'arborescence
----------------------
Active Directory/
...
Virtualisation légère/
...
PDF/
AUTHORS.txt
introduction.txt
1-Cible cachée/
...
2-Black&White/
...
3-Ligne rouge/
files/
DIGESTS.txt
clue.pdf
big_clue.pdf.00
big_clue.pdf.01
big_clue.pdf.02
resolution/
resolution.mp4
ressources/
generator.pl
PDFextractor.exe
solver.py
pdf_index_schema.svg
flags.txt
scenario.txt
links.txt
...
Exemple `AUTHORS.txt`
-------------------
```
Courtois J. <mailto:courto_j@epita.fr>
Bombal S.
Mercier P-O. <https://nemunai.re/>
```
Vous pouvez indiquer entre chevrons, un lien qui sera associé à votre nom.
Vous pouvez utiliser un pseudo si vous n'êtes pas fier de vos réalisations.
Exemple `flags.txt`
-------------------
```
Date d'exfiltration (yyyy-mm) 2015-12
IPv6 d'exfiltration fe80::319c:1002:7c60:68fa
CocoRik0
```
Sans description comme sur cette dernière ligne, l'intitulé affiché du flag
sera "Flag :".
Exemple `links.txt`
-------------------
```
https://media.ccc.de/... Vidéo d'inspiration
https://metasplo.it/ Exploit utilisé
https://nist.gov/ CVE-2016-4242
```
Exemple `DIGESTS.txt`
---------------------
```
3222734c6c8782682a9c36135a3518e8f4d1facabf76e702cf50da0037a4ed0a425e51266c2914fb83828573e397f96c2a95d419bd85919055479d028f51dba5 fic2016.jpg
023939b0c52b0dfce66954318ab82f7a8c10af4c79c8d5781612b58c74f3ace056067d7b15967e612b176a186b46d3d900c4db8881ba47202521eec33e5bb87b fic.org
7c91450239cf9b0717642c55c3429dd7326db26e87d4ca198758053333f0640ee89d2dd9b2f1919598f89644b06aa8fc2085648e3d1e542a6db324c9b16a0bdf header.tex
```