73 lines
1.9 KiB
Bash
73 lines
1.9 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
# Fonction pour générer un enchainement de techniques
|
||
|
function generate_pattern() {
|
||
|
local technique_type=$1
|
||
|
local pattern=$2
|
||
|
|
||
|
# Lire les techniques à partir du fichier CSV
|
||
|
IFS=$'\n' read -d '' -r -a techniques < techniques.csv
|
||
|
|
||
|
# Filtrer les techniques en fonction du type demandé (défense ou attaque)
|
||
|
filtered_techniques=()
|
||
|
for technique in "${techniques[@]}"; do
|
||
|
name=$(echo "$technique" | cut -d ',' -f 1)
|
||
|
type=$(echo "$technique" | cut -d ',' -f 2)
|
||
|
if [ "$type" == "$technique_type" ]; then
|
||
|
filtered_techniques+=("$name")
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
# Générer l'enchainement de techniques
|
||
|
random_techniques=()
|
||
|
for i in $(seq 1 ${#pattern}); do
|
||
|
if [ "${pattern:i-1:1}" == "0" ]; then
|
||
|
random_techniques+=("${filtered_techniques[$RANDOM % ${#filtered_techniques[@]}]}")
|
||
|
else
|
||
|
random_techniques+=("${filtered_techniques[$RANDOM % ${#filtered_techniques[@]}]}")
|
||
|
random_techniques+=("&")
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
# Supprimer le dernier "&" s'il existe
|
||
|
if [ "${random_techniques[-1]}" == "&" ]; then
|
||
|
unset "random_techniques[${#random_techniques[@]}-1]"
|
||
|
fi
|
||
|
|
||
|
# Afficher l'enchainement de techniques
|
||
|
echo "${random_techniques[@]}"
|
||
|
}
|
||
|
|
||
|
# Demander le pattern à l'utilisateur
|
||
|
echo "Choisissez un pattern :"
|
||
|
echo "1) Défense + attaque"
|
||
|
echo "2) Défense + défense + attaque"
|
||
|
echo "3) Défense + attaque + défense + attaque"
|
||
|
echo "4) Défense + défense + attaque + attaque"
|
||
|
echo "5) Personnaliser"
|
||
|
read pattern_choice
|
||
|
|
||
|
# Générer l'enchainement de techniques en fonction du pattern choisi
|
||
|
case $pattern_choice in
|
||
|
1)
|
||
|
generate_pattern 1 "01"
|
||
|
;;
|
||
|
2)
|
||
|
generate_pattern 0 "010"
|
||
|
;;
|
||
|
3)
|
||
|
generate_pattern 0 "1010"
|
||
|
;;
|
||
|
4)
|
||
|
generate_pattern 0 "0011"
|
||
|
;;
|
||
|
5)
|
||
|
echo "Entrez le pattern (par exemple, 0101 pour une défense suivie d'une attaque répétée deux fois) :"
|
||
|
read pattern
|
||
|
generate_pattern 0 "$pattern"
|
||
|
;;
|
||
|
*)
|
||
|
echo "Choix invalide."
|
||
|
;;
|
||
|
esac
|