Partage
  • Partager sur Facebook
  • Partager sur Twitter

cacher un password dans un code

Sujet résolu
    16 février 2017 à 15:24:41

    #!/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...

    Ca marche :)

    -
    Edité par rodeoshell 16 février 2017 à 16:33:09

    • Partager sur Facebook
    • Partager sur Twitter
    soul_expiration = float("inf")
      16 février 2017 à 16:29:12

      Bonjour,

      Si tu n'as besoin que du hash du mot de passe, stocke le hash et non le mot de passe, en effet.

      Pourquoi avoir choisi MD5 plutôt que crypt.crypt ?

      • Partager sur Facebook
      • Partager sur Twitter
        16 février 2017 à 16:35:13

        J'ai pris le md5 car c'est l'un des seuls que je connais avec le sha1 (mais c'était juste pour le test)

        Je ne connais pas crypt.crypt

        Dis-m'en + si tu veux bien :)

        C'est une méthode cryptant avec un algo plus complexe?

        -
        Edité par rodeoshell 16 février 2017 à 16:39:20

        • Partager sur Facebook
        • Partager sur Twitter
        soul_expiration = float("inf")
          16 février 2017 à 19:12:57

          bluishift a écrit:

          Je ne connais pas crypt.crypt

          Dis-m'en + si tu veux bien :)

          https://docs.python.org/3/library/crypt.html

          bluishift a écrit:

          C'est une méthode cryptant avec un algo plus complexe?

          C'est une méthode adaptée au stockage de mots de passe, surtout.

          • Partager sur Facebook
          • Partager sur Twitter
            16 février 2017 à 19:19:56

            oui j'avais déjà lu la doc XD
            • Partager sur Facebook
            • Partager sur Twitter
            soul_expiration = float("inf")
              16 février 2017 à 20:58:40

              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.

              -
              Edité par nohar 16 février 2017 à 20:59:13

              • Partager sur Facebook
              • Partager sur Twitter
              Zeste de Savoir, le site qui en a dans le citron !
                16 février 2017 à 21:31:48

                nohar, en admettant un programme:

                #!/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?

                -
                Edité par rodeoshell 16 février 2017 à 21:36:09

                • Partager sur Facebook
                • Partager sur Twitter
                soul_expiration = float("inf")
                  17 février 2017 à 7:30:02

                  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.

                  -
                  Edité par nohar 17 février 2017 à 8:28:16

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Zeste de Savoir, le site qui en a dans le citron !
                    17 février 2017 à 11:43:35

                    Ouai bien vu.

                    Faut que je me renseignesur la solution que tu as proposé.

                    Car je ne visualise pas bien sa mise en place

                    • Partager sur Facebook
                    • Partager sur Twitter
                    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.
                    • Editeur
                    • Markdown