help/content/files/challenge.md

6.2 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]] : drapeau classique à valider pour résoudre le challenge : * 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' ou raw = ['part1', 'part2'] : drapeau exact à trouver ; sous forme de tableau, le participant n'aura pas connaissaance du nombre d'éléments ;
        • 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) ;
      • ordered = false : (facultatif, par défaut : false) ignore l'ordre dans lequels les éléments du tableau sont passés ;
      • 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.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 dossier files ;
        • [[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_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 ; pour un QCM justifié, utilisez une chaîne de caractères (notez qu'il n'est pas possible de combiner des réponses vraies justifiées et justifiées),
          • help = "Flag correspondant" : (facultatif) indication affichée dans le champ de texte des QCM justifiés ;
    • [[flag_ucq]] : drapeau sous forme de question à choix unique : * id = 42 : (facultatif) identifiant du flag au sein de l'exercice, pour définir des dépendances ;
      • label = "Intitulé du groupe" : (facultatif) intitulé du groupe de choix ;
      • raw = 'MieH2athxuPhai6u' : drapeau attendu parmi les propositions ;
        • 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) ;
      • 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) ;
        • [[flag_ucq.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 dossier files ;
        • [[flag_ucq.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 ;
    • [[hint]] : paramètres pour un indice :
      • 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é, 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 ;

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'
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'
ignorecase = true
displayAs = "select"

  [[flag_ucq.choice]]
  value = 'Noir'

  [[flag_ucq.choice]]
  label = 'Roux'
  value = 'Alezan'

  [[flag_ucq.choice]]
  label = 'Brun'
  value = 'Alezan'

  [[flag_ucq.choice]]
  label = "Crème"
  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 = '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

Rendu