TP1-ESCAPE-01 : Escape game !#
Objectifs pédagogiques#
Mobiliser tous les savoirs vus en première année pour résoudre l’énigme
représentation de l’information
algorithmique
programmation
enjeux sociaux du numérique
Mission#
Un lanceur d’alerte a verrouillé son ordinateur avant d’être arrêté. Vous devez bypasser les 5 couches de sécurité du système pour extraire le fichier confidentiel.
Enigme 1#
Énigme 1 : Le Code d’Authentification (Logique & Listes)
Objectif : Trouver la Clé n°1 (un nombre) pour ouvrir le premier script Python.
Consigne aux élèves :
Le système demande un code PIN à 4 chiffres. Le lanceur d'alerte a laissé cet indice basé sur une liste d'entiers :
ma_liste = [12, 45, 7, 19, 32, 8, 60, 23]
Le code PIN est composé de 4 chiffres collés les uns aux autres :
Le nombre d'éléments dans la liste.
La valeur du troisième élément (index 2).
L'index de la valeur 32.
Le reste de la division entière (modulo %) du premier élément par 10.
Énigme 2 : Le Fichier Corrompu (Stéganographie / Linux)#
Format : Une image carte_mere.png sur la clé USB.
Objectif : Trouver le mot de passe de l'énigme 3.
Consigne aux élèves :
L'image du système semble normale, mais sa fin de fichier a été modifiée sous Linux. Ouvrez cette image avec votre éditeur Python (ou le Bloc-notes) et allez tout en bas pour lire le message caché.
Action des élèves : Ils forcent l’ouverture de l’image en mode texte. À la toute fin, après les caractères bizarres, ils lisent : MOT_DE_PASSE_ALGO = “OSMANTHUS”
Énigme 3 : Le Nettoyeur de Données (Python - Boucle & Test)#
Format : Un fichier Python nommé analyse_fichiers.py.
Objectif : Corriger une condition pour filtrer correctement une liste et obtenir un mot clé.
Le Code Python à fournir :
# =====================================================================
# ÉNIGME 3 : LE FILTRAGE DES LOGS
# =====================================================================
pin = input("Entrez le code PIN de l'énigme 1 : ")
mdp = input("Entrez le mot de passe de l'énigme 2 : ")
if pin != "8742" or mdp.upper() != "OSMANTHUS":
print("Accès refusé.")
else:
print("\n--- ACCÈS ACCORDÉ ---")
# Liste de scores de sécurité. On ne veut garder QUE les scores strictement supérieurs à 50.
scores = [20, 65, 12, 80, 45, 99, 51, 30]
lettres = ["X", "C", "Y", "A", "Z", "C", "T", "W"]
# ATTENTION : Il y a une erreur dans le test ci-dessous !
# Le programme garde les mauvais scores. Modifiez la condition (ligne 22).
message = ""
for i in range(8):
if scores[i] < 50: # <- L'ERREUR EST ICI
message = message + lettres[i]
print("Le mot clé décodé est :", message)
---------------------------------------------------------------------------
StdinNotImplementedError Traceback (most recent call last)
Cell In[1], line 5
1 # =====================================================================
2 # ÉNIGME 3 : LE FILTRAGE DES LOGS
3 # =====================================================================
----> 5 pin = input("Entrez le code PIN de l'énigme 1 : ")
6 mdp = input("Entrez le mot de passe de l'énigme 2 : ")
8 if pin != "8742" or mdp.upper() != "OSMANTHUS":
File ~/.local/pipx/venvs/jupyter-book/lib/python3.11/site-packages/ipykernel/kernelbase.py:1274, in Kernel.raw_input(self, prompt)
1272 if not self._allow_stdin:
1273 msg = "raw_input was called, but this frontend does not support input requests."
-> 1274 raise StdinNotImplementedError(msg)
1275 return self._input_request(
1276 str(prompt),
1277 self._parent_ident["shell"],
1278 self.get_parent("shell"),
1279 password=False,
1280 )
StdinNotImplementedError: raw_input was called, but this frontend does not support input requests.
Énigme 4 : Le Calcul de Complexité (Algorithmique)#
Format : Un fichier texte complexite.txt ou une feuille papier.
Objectif : Trouver l'indice multiplicateur pour la fin.
Consigne aux élèves :
Pour valider la sécurité de notre script de chiffrement, déterminez le nombre de passages précis dans la boucle suivante :
compteur = 0
N = 10
for i in range(N):
for j in range(N):
compteur = compteur + 1
Quelle est la valeur finale de la variable compteur ? C’est votre Indice n°4.
Énigme 5 : L’Impact Écologique (Le Choix Final)#
Format : Fichier texte final.txt.
Objectif : Résoudre l'équation finale grâce à une question sur les enjeux environnementaux du numérique.
Consigne aux élèves :
Le serveur de secours est alimenté par une IA de surveillance très énergivore. Pour couper le système proprement sans saturer le réseau électrique du lycée, calculez le code de délestage "X".
Formule :
X = (Indice 4) x (Nombre de lettres du mot de l'énigme 3) + Bonus Environnement
Pour trouver le "Bonus Environnement" :
Quelle pratique numérique individuelle a le plus d'impact sur l'épuisement des ressources naturelles (métaux rares, eau) ?
Envoyer 500 emails sans pièce jointe : le bonus vaut 5
Regarder une vidéo en 4K pendant 1 heure : le bonus vaut 20
Acheter un smartphone neuf chaque année : le bonus vaut 150