5.6 KiB
5.6 KiB
date | title | weight |
---|---|---|
2019-04-04T15:59:52+02:00 | challenge.txt | 20 |
challenge.txt
définitions des paramètres de votre challenge (au format toml) :gain = 42
: nombre de points que rapporte cet exercice ;tags = ["Android", "RAT", "ROM"]
: mots-clefs de l'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]]
: chaîne de validation pour résoudre le challenge :type = "key"
: (facultatif, par défaut "key") type de flag :key
: [drapeau classique]({{< relref "/responses/simple.md" >}}),vector
: [liste de drapeaux]({{< relref "/responses/vector.md" >}}),mcq
: [question à choix multiple]({{< relref "/responses/mcq.md" >}}) (cases à cocher) avec ou sans [justification]({{< relref "/responses/mcq_justified.md" >}}),ucq
: [liste de choix]({{< relref "/responses/ucq.md" >}}) ;
id = 42
: (facultatif) identifiant du flag au sein de l'exercice, pour définir des dépendances ;label = "Intitulé"
: (facultatif, par défaut :Flag
) intitulé du drapeau ;raw = 'MieH2athxuPhai6u'
ouraw = ['part1', 'part2']
: drapeau(x) exact(s) à trouver ; sous forme de tableau, le participant n'aura pas connaissaance du nombre d'éléments ;ordered = false
: (facultatif, par défaut :false
) ignore l'ordre dans lequels les éléments du tableau sont passés ;validator_regexp = "^(?:sudo +)?(.*)$"
: (facultatif) expression rationnelle dont les groupes capturés serviront comme chaîne à valider (notez que?:
au début d'un groupe ne le capturera pas) ;casesensitive = true
: (facultatif, par défaut :false
) prend en compte 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 ;choices_cost = 42
: (facultatif) coût pour afficher les choix : avant l'affichage, se comporte comme un drapeaukey
classique (à 0, les choix sont affichés directement)noshuffle = true
: (facultatif, par défautfalse
) conserve l'ordre des propositions, au lieu de les mélanger ;[[flag.unlock_file]]
: bloque l'accès à un fichier tant que le flag n'est pas obtenu :filename = "toto.txt"
: nom du fichier tel qu'il apparaît dans le dossierfiles
;
[[flag.need_flag]]
: liste des flags devant être validés avant de débloquer celui-ci :id = 23
: identifiant du flag tel qu'il a été défini plus tôt dans le fichier ;
[[flag.choice]]
: représente un choix, répétez autant de fois qu'il y a de choix (pour lesmcq
etucq
) :label = "Intitulé de la réponse"
,value = true
(facultatif, par défautfalse
, sauf siraw
est précisé) : valeur attendue pour ce choix,raw = "Justification"
(nécessaire pour un [QCM justifié]({{< relref "/responses/mcq_justified.md" >}})) : utilisez une chaîne de caractères (notez qu'il n'est pas possible de combiner des réponses vraies justifiées et non justifiées),help = "Flag correspondant"
: (facultatif) indication affichée dans le champ de texte des QCM justifiés,- ... toutes les autres propriétés applicables à un flag simple peuvent être utilisées :
ordered
,validator_regexp
,casesensitive
, ... ;
[[hint]]
: paramètres pour un indice :filename = "toto.txt"
: (mutuellement exclusif aveccontent
) nom du fichier tel qu'il apparaît dans le dossierhints
;content = "Contenu de l'indice"
: (mutuellement exclusif avecfilename
) contenu de l'indice affiché, en markdown ;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 ;[[hint.need_flag]]
: liste des flags devant être validés pour débloquer cet indice :id = 23
: identifiant du flag ;
Voir aussi [la section sur les flags]({{< relref "/responses" >}}).
Exemple
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'
casesensitive = false
[[flag]]
type = "mcq"
label = "Conditions générales de validation de challenge"
raw = 'conscent'
[[flag.choice]]
label = "J'accepte les conditions"
value = 'conscent'
[[flag]]
type = "ucq"
label = "Quelle est la couleur du cheval blanc d'Henri IV ?"
raw = 'blanc'
choices_cost = 21
[[flag.choice]]
value = 'Noir'
[[flag.choice]]
label = 'Roux'
value = 'Alezan'
[[flag.choice]]
label = 'Brun'
value = 'Alezan'
[[flag.choice]]
label = "Crème"
value = 'Blanc'
[[flag]]
type = "mcq"
label = "Quels sont les films réalisés par C. Nolan ?"
[[flag.choice]]
label = "Memento"
value = true
[[flag.choice]]
label = "Inception"
value = true
[[flag.choice]]
label = "Transcendance"
[[hint]]
filename = 'enocean-specs.pdf'
title = "Spécifications du protocole utilisé"
[[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