admin/sync: update README.md to introduce new syntax of the year
This commit is contained in:
parent
1a959862f1
commit
0d125071ef
@ -1,42 +1,57 @@
|
||||
Format des répertoires pour la synchronisation
|
||||
==============================================
|
||||
Détails de l'aborescence attendue
|
||||
---------------------------------
|
||||
|
||||
- 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)) :
|
||||
- Un dossier par thème `IDTEAM-Nom du thème` (`IDTEAM` peut être un mot, sans tiret `-` ; le nom du thème est celui qui sera affiché dans l'interface, soyez créatifs !), contenant :
|
||||
* `AUTHORS.txt` avec vos noms, tels qu'ils apparraîtront sur le site (voir exemple [plus bas](#exemple-authorstxt))
|
||||
* `overview.txt` une présentation rapide du scenario (~2-3 phrases d'accroche pour lecture rapide), compréhensible par un décideur, petit schéma à l'appui
|
||||
* Un dossier par challenge : `CHID-Titre du challenge` (avec `CHID` l'identifiant numérique du challenge, typiquement son numéro d'ordre), contenant :
|
||||
+ `overview.txt` une présentation rapide du challenge (~1-2 phrases d'accroche), compréhensible par un décideur, petit schéma à l'appui si besoin
|
||||
+ `statement.txt` contenant le scénario du challenge, tel qu'il sera affiché sur le site, à destination des participants
|
||||
+ `challenge.txt` définitions des paramètres de votre challenge (au 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 ;
|
||||
- `[[depend]]` : dépendance à un autre exercice :
|
||||
* `id = CHID` : identifiant du challenge ;
|
||||
* `theme = "NomDuTheme"` : (facultatif) nom du thème dans lequel aller chercher l'identifiant (par défaut, on prend le thème courant) ;
|
||||
- `[[flag]]` : drapeau classique à valider pour résoudre le challenge :
|
||||
* `label = "Intitulé"` : (facultatif, par défaut : `Flag`) intitulé du drapeau ;
|
||||
* `raw = 'MieH2athxuPhai6u'` : drapeau exact à trouver ;
|
||||
* `ignorecase = true` : (facultatif, par défaut : `false`) ignore la case de ce drapeau ;
|
||||
* `help = "Indication"` : (facultatif) chaîne de caractères placée sous le champ du formulaire, idéale pour donner une indication de format ;
|
||||
- `[[flag_mcq]]` : drapeau sous forme de question à choix multiple (cases à cocher) :
|
||||
* `label = "Intitulé du groupe"` : (facultatif) intitulé du groupe de choix ;
|
||||
* `[[flag_mcq.choice]]` : représente un choix, répétez autant de fois qu'il y a de choix :
|
||||
+ `label = "Intitulé de la réponse"`,
|
||||
+ `value = true` : (facultatif, par défaut `false`) valeur attendue pour ce choix ;
|
||||
- `[[flag_ucq]]` : drapeau sous forme de question à choix unique :
|
||||
* `label = "Intitulé du groupe"` : (facultatif) intitulé du groupe de choix ;
|
||||
* `raw = 'MieH2athxuPhai6u'` : drapeau attendu parmi les propositions ;
|
||||
* `help = "Indication"` : (facultatif, uniquement si `displayAs = select`) chaîne de caractères placée sous le champ du formulaire ;
|
||||
* `displayAs = "select|radio"` : (facultatif, par défaut `radio`) manière dont est affichée le choix : `select` pour une liste de choix, `radio` pour des boutons radios ;
|
||||
* `choices_cost = 20` : (facultatif, par défaut `0`) coût pour afficher les choix, avant l'affichage, se comporte comme un `flag` classique (à 0, les choix sont affichés directement) ;
|
||||
* `[[flag_ucq.choice]]` : représente un choix, répétez autant de fois qu'il y a de choix :
|
||||
+ `value = "response"` : valeur qui sera retournée pour comparaison avec la valeur `raw` du ucq,
|
||||
+ `label = "Intitulé de la réponse"` : (facultatif, par défaut identique à `value`) ;
|
||||
- `[[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<...>`
|
||||
* `filename = "toto.txt"` : (mutuellement exclusif avec `content`) nom du fichier tel qu'il apparaît dans le dossier `hints` ;
|
||||
* `content = "Contenu de l'indice"` : (mutuellement exclusif avec `filename`) contenu de l'indice affiché ;
|
||||
* `cost = 10` : (facultatif, par défaut 1/4 des gains du challenge) coût de l'indice ;
|
||||
* `title = "Foo Bar"` : (facultatif, par défaut "Astuce $id") titre de l'astuce dans l'interface ;
|
||||
+ `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
|
||||
+ `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 `.tar.bz2`, `.tar.gz`, `.tar.xz` ou `.zip` lorsque nécessaire. **PAS** de `.rar`, ...
|
||||
- Compresser (sans tarball, juste via **gzip**) les fichiers lorsque c'est utile (memory dump, images BMP, disques, fichiers textes, ...)
|
||||
- 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`.
|
||||
+ `resolution.mp4` : la vidéo de résolution, montée :
|
||||
- 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
|
||||
@ -44,14 +59,6 @@ Format des répertoires pour la synchronisation
|
||||
- [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é
|
||||
@ -61,13 +68,13 @@ Format des répertoires pour la synchronisation
|
||||
Exemple d'arborescence
|
||||
----------------------
|
||||
|
||||
Active Directory/
|
||||
SATURN-Active Directory/
|
||||
...
|
||||
Virtualisation légère/
|
||||
SATURN-Virtualisation légère/
|
||||
...
|
||||
PDF/
|
||||
JUPITER-PDF/
|
||||
AUTHORS.txt
|
||||
introduction.txt
|
||||
overview.txt
|
||||
1-Cible cachée/
|
||||
...
|
||||
2-Black&White/
|
||||
@ -79,21 +86,21 @@ Exemple d'arborescence
|
||||
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
|
||||
challenge.txt
|
||||
links.txt
|
||||
overview.txt
|
||||
resolution.mp4
|
||||
scenario.txt
|
||||
...
|
||||
|
||||
|
||||
Exemple `AUTHORS.txt`
|
||||
-------------------
|
||||
Exemple `AUTHORS.txt` {#exemple-authorstxt}
|
||||
---------------------
|
||||
|
||||
```
|
||||
Courtois J. <mailto:courto_j@epita.fr>
|
||||
@ -106,20 +113,79 @@ 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`
|
||||
-------------------
|
||||
Exemple `challenge.txt` {#exemple-challengetxt}
|
||||
-----------------------
|
||||
|
||||
```
|
||||
Date d'exfiltration (yyyy-mm) 2015-12
|
||||
IPv6 d'exfiltration fe80::319c:1002:7c60:68fa
|
||||
CocoRik0
|
||||
gain = 42
|
||||
|
||||
[[depend]]
|
||||
id = 2
|
||||
|
||||
[[flag]]
|
||||
label = "Date d'exfiltration"
|
||||
help= "Format : yyyy-mm"
|
||||
raw = '2015-12'
|
||||
|
||||
[[flag]]
|
||||
label = "IPv6 d'exfiltration"
|
||||
raw = 'fe80::319c:1002:7c60:68fa'
|
||||
ignorecase = true
|
||||
|
||||
[[flag_ucq]]
|
||||
label = "Conditions générales de validation de challenge"
|
||||
raw = 'conscent'
|
||||
|
||||
[[flag_ucq.choice]]
|
||||
label = "J'accepte les conditions"
|
||||
value = 'conscent'
|
||||
|
||||
[[flag_ucq]]
|
||||
label = "Quelle est la couleur du cheval blanc d'Henri IV ?"
|
||||
raw = 'blanc'
|
||||
displayAs = "select"
|
||||
|
||||
[[flag_ucq.choice]]
|
||||
label = "Noir"
|
||||
value = 'noir'
|
||||
|
||||
[[flag_ucq.choice]]
|
||||
label = "Vert"
|
||||
value = 'vert'
|
||||
|
||||
[[flag_ucq.choice]]
|
||||
label = "Blanc"
|
||||
value = 'blanc'
|
||||
|
||||
[[flag_mcq]]
|
||||
label = "Quels sont les films réalisés par C. Nolan ?"
|
||||
|
||||
[[flag_mcq.choice]]
|
||||
label = "Memento"
|
||||
value = true
|
||||
|
||||
[[flag_mcq.choice]]
|
||||
label = "Inception"
|
||||
value = true
|
||||
|
||||
[[flag_mcq.choice]]
|
||||
label = "Transcendance"
|
||||
|
||||
[[hint]]
|
||||
filename = 'top100.txt'
|
||||
title = "L'astuce du siècle"
|
||||
|
||||
[[hint]]
|
||||
content = """
|
||||
Le TOML c'est magique.
|
||||
Je peux avoir des chaînes de caractères sur plusieurs lignes !
|
||||
"""
|
||||
title = "L'astuce du siècle"
|
||||
cost = 30
|
||||
```
|
||||
|
||||
Sans description comme sur cette dernière ligne, l'intitulé affiché du flag
|
||||
sera "Flag :".
|
||||
|
||||
|
||||
Exemple `links.txt`
|
||||
Exemple `links.txt` {#exemple-linkstxt}
|
||||
-------------------
|
||||
|
||||
```
|
||||
@ -129,7 +195,7 @@ https://nist.gov/ CVE-2016-4242
|
||||
```
|
||||
|
||||
|
||||
Exemple `DIGESTS.txt`
|
||||
Exemple `DIGESTS.txt` {#exemple-digeststxt}
|
||||
---------------------
|
||||
|
||||
```
|
||||
@ -137,3 +203,9 @@ Exemple `DIGESTS.txt`
|
||||
023939b0c52b0dfce66954318ab82f7a8c10af4c79c8d5781612b58c74f3ace056067d7b15967e612b176a186b46d3d900c4db8881ba47202521eec33e5bb87b fic.org
|
||||
7c91450239cf9b0717642c55c3429dd7326db26e87d4ca198758053333f0640ee89d2dd9b2f1919598f89644b06aa8fc2085648e3d1e542a6db324c9b16a0bdf header.tex
|
||||
```
|
||||
|
||||
---
|
||||
title: Format des répertoires pour la synchronisation
|
||||
author: FIC team 2019
|
||||
date: "Dernière mise à jour du document : 08 mai 2018"
|
||||
---
|
||||
|
Loading…
x
Reference in New Issue
Block a user