Write more explanation about validator_regexp
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
7a9084f84e
commit
8167024de1
|
@ -50,10 +50,26 @@ casse.
|
||||||
|
|
||||||
## Flag modulable
|
## Flag modulable
|
||||||
|
|
||||||
|
Parfois, plusieurs réponses peuvent être valides. Le système de validation se
|
||||||
|
contentant d'une seule comparaison de hash, il ne peut valider qu'une seule et
|
||||||
|
unique solution.
|
||||||
|
|
||||||
### Exemple
|
Pour que plusieurs réponses soient valides, il faut pouvoir sélectionner des
|
||||||
|
parties communes significatives. Ces parties seront utilisées pour la création
|
||||||
|
du hash initial, et ensuite, lorsqu'il faudra vérifier les soumissions des
|
||||||
|
participants.
|
||||||
|
|
||||||
Si par exemple, on estime que plusieurs réponses sont correctes (ici, plusieurs secondes) :
|
{{% notice warning %}}
|
||||||
|
Dans aucune circonstance il n'est possible de valider deux chaînes complètement
|
||||||
|
différentes. Par exemple, il n'est pas possible de valider :\
|
||||||
|
Donnez un ingrédient de la choucroute : `(choux|pomme de terre|...)`\
|
||||||
|
Car il n'est pas possible d'avoir un hash qui valide à la fois `choux` et
|
||||||
|
`pomme de terre`.
|
||||||
|
{{% /notice %}}
|
||||||
|
|
||||||
|
On utilise l'attribut `validator_regexp` pour établir une expression rationnelle
|
||||||
|
qui servira à sélectionner les parties significatives de la réponse.
|
||||||
|
Par exemple :
|
||||||
|
|
||||||
```toml
|
```toml
|
||||||
[[flag]]
|
[[flag]]
|
||||||
|
@ -62,6 +78,40 @@ raw = '11:22:33+02:00'
|
||||||
validator_regexp = "([0-9]{1,2}):([0-9]{1,2}):[0-9]{1,2}"
|
validator_regexp = "([0-9]{1,2}):([0-9]{1,2}):[0-9]{1,2}"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Ici, nous demandons l'heure de l'exfiltration, mais plusieurs journaux
|
||||||
|
enregistrent l'exfiltration à des secondes différentes. Les secondes n'étant
|
||||||
|
pas significative car la période de log donné est sur plus d'une journée, on
|
||||||
|
peut considérer qu'un participant qui donne la bonne heure et la bonne minute a
|
||||||
|
répondu à la question. On le laisse cependant recopier le timestamp complet
|
||||||
|
pour qu'il fasse l'effort de trouver la bonne valeur selon lui (il pourrait
|
||||||
|
être tenté de ne pas aller au bout de la démarche si on lui demande directement
|
||||||
|
une valeur approximative).
|
||||||
|
|
||||||
|
On garde toujours dans le `raw` la valeur complète attendue, telle que l'on
|
||||||
|
peut la recopier. Et l'on indique une `validator_regexp` qui sélectionnera la
|
||||||
|
ou les valeurs significatives, à la fois dans le `raw` et dans les réponses des
|
||||||
|
participants.
|
||||||
|
|
||||||
|
La valeur qui sera hashée pour comparaison sera `1122`, ce qui correspond à la
|
||||||
|
concaténation de tous les groupes de notre expression rationnelle.
|
||||||
|
|
||||||
|
Il est préférable d'écrire une expression rationnelle vague, qui ne fait pas
|
||||||
|
apparaître les termes de la réponses. Ici, nous aurions pu utiliser
|
||||||
|
l'expression rationnelle suivante : `(11):(22):(?:33|34|35)`, mais cela aurait
|
||||||
|
fait apparaître clairement les termes de la réponse. L'attribut étant parfois
|
||||||
|
transmis aux participants pour être utilisé par l'interface, il est prérérable
|
||||||
|
de rester vague, en utilisant les caractères joker. Par exemple :
|
||||||
|
|
||||||
|
```toml
|
||||||
|
[[flag]]
|
||||||
|
label = "Commande utilisée pour l'exfiltration"
|
||||||
|
raw = 'apt-get search yolo'
|
||||||
|
validator_regexp = "^(?:sudo *)?(.*)$"
|
||||||
|
```
|
||||||
|
|
||||||
|
Dans cet exemple `sudo` est facultatif, plutôt que de sélectionner `(apt-get
|
||||||
|
search yolo)$`, on exclut plutôt `sudo`, en le plaçant dans un groupe
|
||||||
|
non-capturant (`?:`), ce qui ne révèle pas d'information.
|
||||||
|
|
||||||
## Propriétés
|
## Propriétés
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user