• STATISTIQUES
  • Il y a eu un total de 0 membres et 42598 visiteurs sur le site dans les dernières 24h pour un total de 42 598 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] HackQuest
    Logic: 12, JavaScript: 14, Applet: 6, CrackIt: 13, Crypto: 11, Internet: 3, Exploit: 7, Stegano: 12, Flash: 1, Programmi...
    Challenges
    [FR] Zenk-Security
    La communauté zenk-security a pour objet principal la sécurité informatique, nous sommes des tou...
    Hacking
    [EN] Dare your mind
    JavaScript: 6, Crypto: 44, Stegano: 36, Logic: 13, Special: 27, Science: 11, Realistic: 7, Programming: 10, Crack It: 6,...
    Challenges
    [EN] Gekko
    Site de challenge présenter sous la forme d'une quête. Vous êtes un agent secret qui répond sous le nom...
    Challenges
    [EN] Framework Metasploit
    Le Framework Metasploit est un logiciel gratuit, open source de tests de pénétration développ&ea...
    Vulnérabilités
    [EN] Security Traps
    Site de challenge qui prétend être construit non pas dans le but de parfaire vos connaissances, mais plutôt dan...
    Challenges
    [EN] Listbrain Version 3
    Site proposant 66 challenges présentés dans une liste mélangée.
    Challenges

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[Python] Chiffrer votre fichier de mot de passe
14-01-2015, 17h25 (Modification du message : 14-01-2015, 17h26 par ark.)
Message : #2
ark Hors ligne
Psyckomodo!
*****



Messages : 1,033
Sujets : 48
Points: 317
Inscription : Sep 2011
RE: [Python] Crypter votre fichier de mot de passe
Yo!

Sympa ton post, mais comme on vient de le dire avec WapiFlapi sur irc, gaffe quand on developpe des tools de crypto!! C'est d'ailleurs rigolo la crypto sur ce point, c'est que sans le savoir, on fait plein d'erreurs!
Bref, du coup, jetons un coup d'oeil a tout ca pour voir ce qui ne va pas. (Je vais juste parler de la partie crypto, parce que t'as bien dit que le code est cracra, et je pense que d'autre s'en chargerons :))

Alors, tout d'abord, j'ai repere ce bout de code:
Code PYTHON :
def cryptfile(original_file, Key , destination_file, debug):                    
        if debug: debugg("Crypt %s dans %s" % (original_file, destination_file))
                                                                               
        FILE_O = open(original_file,"r") if os.path.exists(original_file) else quit(2, "Impossible d'ouvrir %s. Reportez au README" % original_file)
        FILE_D = open(destination_file,"w")                                    
        message = msg_len(FILE_O.read())                                        
        Key = msg_len(Key)                                                      
        coder = AES.new(Key, AES.MODE_ECB)                                      
        message = coder.encrypt(message)                                      
        FILE_D.write(message)                                                  
        FILE_O.close()
        FILE_D.close()


Ici, l'utilisation du mode ECB n'est pas une bonne idee. En effet, ce mode va chiffrer chaque bloc de la meme facon, et si un bloc se repete, on observera une repetition dans la cipher text. En soi, ca leak des infos, et c'est pas une bonne chose. Typiquement dans ton cas, si t'as deux mots de passes pareils, tu pourrais le savoir rien qu'en lisant les datas du ciphertext. Ensuite, il est possible d'effectuer une attaque sur ce genre de ciphertext, surtout si le contenu est bien long (42 ^ 42 mots de passes :p) afin de retrouver la cle, et donc le contenu.

Personellement, je conseillerais d'utiliser soit un mode CBC, soit un mode CTR. (et je recommande a tous ceux qui ne connaissent pas la lecture de cet article: http://en.wikipedia.org/wiki/Block_ciphe..._operation)
Le mode d'operation est un des concepts tres importants en cryptographie, et ca serait bien d'arreter d'utiliser de ECB !

Un autre concept important en crypto, c'est le padding. Et la, tu nous fait un padding a ta sauce, pas forcement bon. En l'occurence ici, tu t'en fous que tes donnees soit des donnees binaire, et donc en theorie, tu vas avoir uniquement des char affichable dans ton clear text. Ce qu'il y a c'est qu'en temps normal, c'est pas forcement le cas, et que du coup, il faut pouvoir etre sur de ce qui est le padding, et ce qui ne l'est pas.

Pour le coup, c'est generalement le padding definit par PKCS#7 qui est utilise (http://tools.ietf.org/html/rfc2315#section-10.3)
En gros, ca consiste a mettre la longueur du padding sur tous les bytes du padding.

Comme ca (en python3):
Code PYTHON :
length = 16 - (len(data) % 16)
data += chr(length)*length


Et du coup, tu le remove, apres le dechiffrement, de la facon suivante:
Code PYTHON :
data = data[:-data[-1]]


Et ensuite, il y a ca:
Code PYTHON :
def edit_password(crypt_password_file, Key):                
        tmp = tempfile.NamedTemporaryFile(suffix=".tmp")    
        editor = os.environ.get('EDITOR','vim')            
        message = decrypt_file(crypt_password_file, Key)    
        tmp.write(message[0])                              
        tmp.flush()                                        
        call([editor,tmp.name])                            
        cryptfile(tmp.name, Key, crypt_password_file, False)
        tmp.close()                                        


Et la, c'est pas tant un probleme de chiffrement, mais de ce qu'on appelle "side channel", en effet, ici, tu nous ecris le contenu dechiffre sur le disque dur, le temps de l'edition. Il suffit a un attaquant de poser un programme qui va check tout tes fichiers *.tmp dans ton repertoire /tmp et de les leak. Et la, au moment ou tu vas editer tes mots de passes, il va pouvoir tout recuperer d'un coup!
Pas joli joli :p Le mieux serait de se debrouiller pour tout modifier en RAM directement, mais il ne faut surtout pas aller ecrire le contenu dechiffre sur le disque ! En plus, j'ai pas l'impression que tu delete le fichier ^^

J'ai fini ! :p

Ah, et pour la route, on dit CHIFFRER et pas crypter. (cf je sais plus quel thread (mais j'editerais si je le retrouve :D))
+1 (4) -1 (0) Répondre


Messages dans ce sujet
RE: [Python] Crypter votre fichier de mot de passe - par ark - 14-01-2015, 17h25
RE: [Python] Chiffrer votre fichier de mot de passe - par 0pc0deFR - 17-01-2015, 20h56

Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  Générateur mot de passe bash notfound 4 331 27-11-2012, 23h10
Dernier message: b0fh

Atteindre :


Utilisateur(s) parcourant ce sujet : 6 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut