On cherche dans cet exercice à déterminer la combinaison d'un digicode. Celui-ci est représenté une fonction digicode prenant quatre paramètres a, b, c et d correspondant chacun à un entier compris entre et (inclus l'un et l'autre) et renvoyant True si la combinaison formée par ces quatre chiffres est valide et False sinon.
On peut prendre par exemple :
def digicode_1(a, b, c, d):
return a + b - c - d == 0
Vous devez écrire la fonction digicrack qui prend en paramètre une fonction digicode et renvoie un tuple de quatre entiers, chacun compris entre et , correspondant à une combinaison acceptée par le digicode.
Si le digicode n'admet pas de combinaison valide, la fonction digicrack ne retournera rien mais affichera un message d'erreur.
Exemples :
>>> def digicode_1(a, b, c, d):
return a + b - c - d == 0
>>> digicrack(digicode_1)
(4, 5, 4, 5)
>>> def digicode_1(a, b, c, d):
return 156*a - 820*b + 1463*c - 465*d == 7607
>>> digicrack(digicode_2)
(3, 5, 8, 1)
Votre fonction n'a pas besoin d'analyser le fonctionnement de la fonction digicode.
Il n'y a pas tant de combinaisons possible que ça, vous pouvez toutes les tester ! 💪
En cryptanalyse, on appelle cette méthode attaque par force brute.
source : https://codex.forge.apps.education.fr