#!/usr/bin/env python3
from getpass import getpass
import hashlib
# Création du password non crypté:
password = b"@1D8ArAn*"
# Check des algorithmes garantis
# hashlib.algorithms_guaranteed
# Check des algosrithmes disponibles
# hashlib.algotithms_available
password = hashlib.md5(password)
granted = False
while granted == False:
answer = getpass("Type the password: ")
answer = answer.encode()
answer = hashlib.md5(answer)
if answer.hexdigest() == password.hexdigest():
print("Access granted")
break
# Suite du programme...
Voici un boût de code basique.
Le problème c'est qu'il comporte une faille immense, quelqun qui ouvre le programme avec un éditeur de texte n'aura qu'à lire le code pour trouver le mot de passe prédéfini par mes soins.
Comment puis-je cacher ce mot de passe?
Edit: Je viens d'avoir une idée mais je ne sais pas si elle fonctionne, mon idée serait d'attribuer le cryptage (en md5 par exemple) en version hexadécimale (par exemple) à la variable password. Tests en cours...
Si tu veux vraiment chiffrer les données d'un programme, alors il vaut mieux que tu utilises une solution faite pour ça style PGP, avec une clé spécifique pour l'utilisateur (PGP permet de protéger la clé par mot de passe).
Tout ça doit rester externe à ton programme (la clé et les données chiffrées). Sans ça, du moment que l'utilisateur a accès au code source il peut faire ce qu'il veut.
#!/usr/bin/env python3
from getpass import getpass
import hashlib
# Création du password crypté (affichage hexadécimal d'un password crypté):
password = "e217b00ab50ab181fea87f8bb3251923"
# Check des algorithmes garantis
# hashlib.algorithms_guaranteed
# Check des algosrithmes disponibles
# hashlib.algotithms_available
granted = False
while granted == False:
answer = getpass("Type the password: ")
answer = answer.encode()
answer = hashlib.md5(answer)
if answer.hexdigest() == password:
print("Access granted")
break
# Suite du programme...
pour moi ca me parait solide (même en accédant à ce code source, tu ne peux pas connaître la valeur réelle de password) (et si tu essaies de rentrer la valeur cryptée en affichage hexadécimal de password lorsqu'on te demande le password, le programme ne le prend pas), tu n'es pas d'accord?
J'ai pas besoin de connaître sa valeur. Je peux la modifier pour metttre celle que je veux ou court-circuiter toute la vérification de mot de passe : j'ai accès au code source.
Faut que je me renseignesur la solution que tu as proposé.
Car je ne visualise pas bien sa mise en place
soul_expiration = float("inf")
cacher un password dans un code
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique