URL: https://linuxfr.org/users/lovasoa/journaux/petit-defi-python Title: Petit défi Python Authors: lovasoa Date: 2020年01月14日T11:55:00+01:00 License: CC By-SA Tags: sécurité, python, défis, faille, script, f-string et jeu Score: 28 Aujourd’hui, je propose à ceux qui s’ennuient un petit défi de cybersécurité en Python. Voici [un script Python](https://gist.github.com/lovasoa/a4efdd4f30cc0ee4cd9f0563fb7ec64e) qui semble trivial, et qui contient une faille de sécurité : ```py #!/usr/bin/env python3 import random SECRET = ''.join(random.choice("0123456789") for i in range(64)) class Sandbox: def ask_age(self): self.age = input("How old are you ? ") self.width = input("How wide do you want the nice box to be ? ") def ask_secret(self): if input("What is the secret ? ") == SECRET: print("You found the secret ! I thought this was impossible.") else: print("Wrong secret") def run(self): while True: self.ask_age() to_format = f""" Printing a {self.width}-character wide box: [Age: {{self.age:{self.width}}} ]""" print(to_format.format(self=self)) self.ask_secret() Sandbox().run() ``` Le script est très simple : il vous demande votre âge, puis un nombre _n_. Ensuite, il vous affiche votre âge dans un petit cadre long de _n_ caractères. Ensuite, il vous demande un mot de passe. L’objectif du défi est de réussir à tromper le programme au moment de donner son âge et le nombre _n_, de manière à récupérer le mot de passe. Bonne chance ! P.‐S. — Vous pouvez donner des indices, mais ne donnez pas la solution dans les commentaires. Je publierai la solution dans quelques jours, si personne ne trouve... La page de [documentation du formatage des chaînes de caractères](https://docs.python.org/3/library/string.html#formatspec) de Python pourra également vous être utile...