Forum Programmation.python Comment j'ai fabriqué un DRM pour la gestion de mon password.

Posté par . Licence CC by-sa.
-8
18
août
2016

Alors j'ai fait un petit programme pour gérer mes mots de passe : voila le code !

from getpass import getpass

def crypt(e):
    """mais qu'est ce que c'est que ca michael? """
    i = lambda e: e[len(e)/2::-1]+e[len(e)/2+1::1]
    return i(e)

motdepasse = crypt(getpass())

Il n'y a plus qu'à compiler.

Qu'en pensez-vous ? Des idées pour porter le code dans d'autre langages ?

  • # nous en dire un peu plus

    Posté par (page perso) . Évalué à 2. Dernière modification le 18/08/16 à 16:22.

    Tu peux nous en dire un peu plus sur cette ligne :
    i = lambda e: e[len(e)/2::-1]+e[len(e)/2+1::1]

    La réalité, c'est ce qui continue d'exister quand on cesse d'y croire - Philip K. Dick

    • [^] # Re: nous en dire un peu plus

      Posté par . Évalué à 2.

      print(crypt("123456789"))
      543216789
      
    • [^] # Re: nous en dire un peu plus

      Posté par . Évalué à -7.

      • Lambda

      C'est une fonction propre à python qui permet de définir des fonctions a n'importe quel moment.

      Elle prend un argument e et la suite de l'instruction correspond à cette fonction lambda.

      • len()

      retourne la longueur d'une chaine

      • Les slices : chaine[début:fin:pas]

      Les slice c'est simplement une boucle de parcourt paramétrique pour faire des lecture ordonnées sur des chaines de caractère.

      Par exemple si je veux lire hello a l'envers :

      "hello"[len("hello")::-1]
      "hello"[::-1]
      "hello"[4::-1]

      Donc avec tout ca ici on fait un fait un traitement sur un mot en le parcourant depuis le milieu vers la gauche puis du milieu vers la droite.
      "i" est la fonctione de traitement qui prend en parametre une chaine "e" par exemple hello et retournera le palindrome :
      lehlo

    • [^] # Re: nous en dire un peu plus

      Posté par . Évalué à 2.

      Moi je l'ai comprise tout seul !

      :)

      OK on s'en fout mais j'aimerais un peu de reconnaissance pour ces 20 secondes de réflexion.

  • # Génial

    Posté par . Évalué à 3.

    Tu devrais proposer ça au prochain concours SHA. Pourquoi on n'y a pas pensé plus tôt ?

  • # Qu'en pensez-vous ?

    Posté par . Évalué à 2.

    Tu l’utilises comment ? Ça sert à quoi ?

    • [^] # Re: Qu'en pensez-vous ?

      Posté par . Évalué à -9.

      J'apprend à utiliser le module socket de python. Je fais des connection sur un routeur avec et il y a besoin d'un mot de passe que je ne souhaite pas écrire en claire sur mon disque dur. Je me suis dis que ca ferait l'affaire plutot que d'utiliser la lib standard hashlib.

      • [^] # Re: Qu'en pensez-vous ?

        Posté par . Évalué à 8.

        Je me suis dis que ca ferait l'affaire plutot que d'utiliser la lib standard hashlib.

        Trop gros, passera pas.

  • # En gros

    Posté par . Évalué à -10.

    Les DRM sont généralements des binaires avec lesquels on ne peu pas travailler car on ne comprend pas leur fonctionnement en tant qu'ingénieur.

    Dans l'esprit, on veut verrouiller l'accès à un contenu.
    Dans la pratique on rajoute parfois même une couche de colle opaque pour ne pas rétro-ingénieriés les hardware (les bios par exemple).

    C'est pour rassurer les marchés et leur partenaires commerciaux sur l'utilisation des données : on appel cela le secret industriel, d'autres l'intelligence collective car c'est un pan de mur d'une politique globale et pour eux ca fonctionne.

    Dans une démarche d'open data on n'a pas forcément d’intérêt à publier la donnée brute (raw) et on veut parfois contrôler sa diffusion et sa revalorisation. Alors on peu créer une DRM mais si elle est trop complexe elle peu faire du tord à ces données, en faisant cela on s'éloigne des démarches comme celle que l'on voit fleurir actuellement.
    En France on a clairement une politique de développement de l'open data, il y a eu deux étapes pour le développement :
    - Publication d'une partie des data brutes (raw) de l'état sans restrictions
    - Exploitation des données de contenus artistiques sous licence libre par les différents ministères mais aussi par des organismes privés (détournements)

    Cette politique fait du tord aux entreprises dont le modèle économique est propriétaire car ils ne savent pas travailler de cette manière et devront s'adapter. Parfois cela signifie mourir car cela coûte trop cher c'est pour cela que l'on doit assister cette filière lorsqu'elle devient déficitière

    En passant j'ajouterai que les données brutes sont de plus en plus riches ou alors se sont les site d'open data qui publient de plus en plus leurs contenus valorisés.
    Pour ma part ma démarche concerne un accès telnet sur un 'terminal' d'une borne sur laquelle devait transiter des méta-données d'une base alimentaire pour un organisme social de restauration. (le projet est en stand-by) J'avais peur que si un jour je veux distribuer mon programme il ne mette en danger la sécurité des utilisateurs et de leurs données (je voulais en tirer un profit monétaire), alors j'ai un peu obfusqué le code en essayant de le rendre moins lisible.

    Mais il ne faut jamais faire cela. Il faut une pratique de l'internet pondéré et réfléchie avec un écosystème ouvert où le fonctionnement de la machine entière est publié et documenté dans le but de garder le contrôle sur les données et leur partage et non pas dans le but de se protéger en première instance.

    La clé on la duplique et on la confie à un tiers et on documente les procédures de connexion que l'on ne base pas sur un DRM contrairement au QG de James Bond et cela même si on est attaqué par la police des polices.
    Je vous rassure pour le moment je n'utilise pas cet algorithme révolutionnaire car il est très lent dans sa forme actuelle, je pense qu'il va muter. Ce serait amusant de comparer le code à travers différents portages dans d'autres langages et faire des benchmarks en plus c'est tendance.

    • [^] # Re: En gros

      Posté par . Évalué à 4.

      Les DRM sont généralements des binaires avec lesquels on ne peu pas travailler car on ne comprend pas leur fonctionnement en tant qu'ingénieur.

      C'est raccord avec ton bout de code, sujet du journal.

      • [^] # Re: En gros

        Posté par . Évalué à -9.

        Je ne pensais pas développer.

  • # Gné

    Posté par . Évalué à 3.

    Ce que tu as écrit n'est pas un DRM.
    Soit dit un passant, un DRM n'est qu'un leur pour rassurer les investisseurs et n'a aucun fondement scientifique.

    Ce que tu a écrit se simplifie en

    from getpass import getpass
    
    crypt = lambda e: e[len(e)/2::-1]+e[len(e)/2+1::1]
    
    motdepasse = crypt(getpass())

    Ce que tu as écrit ne sert très probablement à rien à moins que tu ne t'appuie sur des travaux en cryptographie dont il faudrait nous donner la référence.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.