Annonce

Réduire
Aucune annonce.

Script Hasher (crypter) multi en Python

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

  • Script Hasher (crypter) multi en Python

    Bonjour , je me permet de poster dans cette section pour vous présenter ma première application en python développée sur mac avec python 3.2

    Elle permet de crypter rapidement (grâce à la librairie hashlib) du texte en MD5, sha1, sha224 et sha256 et possède un système de salt.

    J'ai exporté le script en une application pour mac grâce à py2app.

    J'attends vos impressions, vos critiques et vos conseils et j'espère qu'elle pourra être utile à certains...

    Code:
    #!/usr/local/bin/pythonw
    # -*- coding: ISO-8859-1 -*-
    
    
    
    class Application(object):
        def __init__(self):
            self.root=Tk()
            self.root.title('Easy Crypter')
            self.root.configure(background='#5d6d9c')
            
            
            
            self.f0=Frame(self.root, bg='#5d6d9c')
            self.f1=Frame(self.root, bg='#5d6d9c')
            self.f2=Frame(self.root, bg='#5d6d9c')
            
    
            
            self.photo=PhotoImage(file="header.gif")
            self.photo2=PhotoImage(file="crypter.gif")
            self.photo3=PhotoImage(file="effacer.gif")
            self.photo4=PhotoImage(file="clipboard.gif")
            
            self.header = Label(self.f0, image=self.photo)
            
            self.nomentree = Label(self.f1, text="PlainText", fg="white", bg="#5d6d9c")
            self.nomentree2 = Label(self.f1, text="Salt", fg="white", bg="#5d6d9c")
    		
            self.entree = Entry(self.f1, width =50)
            self.entree2 = Entry(self.f1, width=50)
            
            self.but1=Button(self.f2, image=self.photo2, bd=0, command =self.hasher)
            self.but2=Button(self.f2, image=self.photo3, bd=0, bg="black", command=self.effacer)
            
            
            self.labnul= Label(self.f2,text="    ",fg="black",bg="#5d6d9c")
            self.labnul2= Label(self.f2,text="    ",fg="black",bg="#5d6d9c")
            self.labnul3= Label(self.f1,text="    ",fg="black",bg="#5d6d9c")
            
            
            
            
            
            self.f0.pack()
            self.f1.pack()
            self.f2.pack()
            self.i=Frame(self.root, bg='#5d6d9c') 
            self.i.pack(side="left")
            self.j=Frame(self.root, bg='#5d6d9c') 
            self.j.pack(side="right")
            self.k=Frame(self.root, bg='#5d6d9c') 
            self.k.pack()
               
            
            
            
            self.header.pack()
            self.labnul3.pack() 
            self.nomentree.pack()
            self.entree.pack()
            self.nomentree2.pack()
            self.entree2.pack()
           
            
            self.labnul.pack()
    
            self.positionsalt = IntVar()
    
            Radiobutton(self.f1, text="Before PlainText", variable=self.positionsalt, value=1, width=20, fg="white",
            bg="#5d6d9c").pack()
            Radiobutton(self.f1, text="After PlainText", variable=self.positionsalt, value=2, width=20, fg="white", bg="#5d6d9c", ).pack()
            
            self.but1.pack()
            self.but2.pack()
            self.labnul2.pack()
    
            
            
            
            self.root.mainloop()
            
        def hasher(self):
            
    
            
    
            positionsalt = self.positionsalt.get()
            self.hash = self.entree.get()
            self.salt = self.entree2.get()
            if positionsalt == 1:
                self.md5 = hashlib.md5(self.salt + self.hash).heigest()
                self.sha1= hashlib.sha1(self.salt + self.hash).heigest()
                self.sha224= hashlib.sha224(self.salt + self.hash).heigest()
                self.sha256= hashlib.sha256(self.salt + self.hash).heigest()
            else:
                self.md5 = hashlib.md5(self.hash + self.salt).heigest()
                self.sha1= hashlib.sha1(self.hash + self.salt ).heigest()
                self.sha224= hashlib.sha224(self.hash + self.salt ).heigest()
                self.sha256= hashlib.sha256(self.hash + self.salt).heigest()
    
            
            self.lab1= Label(self.i,text="MD5:",fg="white",bg="#5d6d9c")
            self.lab2= Label(self.j,text="SHA1:",fg="white",bg="#5d6d9c")
            self.lab3= Label(self.i,text="SHA224:",fg="white",bg="#5d6d9c")
            self.lab4= Label(self.j,text="SHA256:",fg="white",bg="#5d6d9c")
            
            self.but3=Button(self.i, image=self.photo4, bd=0, command=lambda x="md5":self.Copie(x),  width=32, height=28)
    
            self.but4=Button(self.j, image=self.photo4, bd=0, command=lambda x="sha1":self.Copie(x),  width=32, height=28)
    
            self.but5=Button(self.i, image=self.photo4, bd=0, command=lambda x="sha224":self.Copie(x),  width=32, height=28)
    
            self.but6=Button(self.j, image=self.photo4, bd=0, command=lambda x="sha256":self.Copie(x),  width=32, height=28)
            
    
            
            
            
            
            
            
            txt1=Text(self.i,width=70,height=1, bg="#5d6d9c", fg="white")
            txt2=Text(self.j,width=70,height=1, bg="#5d6d9c", fg="white")
            txt3=Text(self.i,width=70,height=1, bg="#5d6d9c", fg="white")
            txt4=Text(self.j,width=70,height=1, bg="#5d6d9c", fg="white")
            
            
            self.lab1.pack()
            txt1.pack()
            self.but3.pack()
            
            
            self.lab2.pack()
            txt2.pack()
            self.but4.pack()
            
    
    
            self.lab3.pack()
            txt3.pack()
            self.but5.pack()
            
            
            self.lab4.pack()
            txt4.pack()
            self.but6.pack()
           
            
            
            txt1.insert(END, self.md5)
            txt2.insert(END, self.sha1)
            txt3.insert(END, self.sha224)
            txt4.insert(END, self.sha256)
            self.labelsep=Label(self.k,text="",fg="white",bg="#5d6d9c")
            self.labelsep.pack()
           
           
        def effacer(self):
        
            self.i.destroy() 
            self.i.pack_forget()
            self.j.destroy()
            self.j.pack_forget()
            self.k.destroy()
            self.k.pack_forget()
            self.Canvas()
            
        def Canvas(self):
            self.i=Frame(self.root, bg='#5d6d9c') 
            self.i.pack(side="left")
            self.j=Frame(self.root, bg='#5d6d9c') 
            self.j.pack(side="right")
            self.k=Frame(self.root, bg='#5d6d9c') 
            self.k.pack()
    
            
        def Copie(self, t):
            
            if t == "md5":
                pyperclip.copy(self.md5)
            elif t == "sha1":
                pyperclip.copy(self.sha1)
            elif t == "sha256":
                pyperclip.copy(self.sha256)
            else:
                pyperclip.copy(self.sha224)
            self.labelsep2=Label(self.k,text="Copied !",fg="#00a322",bg="#5d6d9c")
            self.labelsep2.pack()
            
    
            
       
            
            
            
            
         
    
         
    from Tkinter import *
    import hashlib
    import pyperclip
    f = Application()
    PS: L'app utilise Tkinter pour l'interface graphique !
    Dernière modification par Tekfly, 16 juillet 2012, 14h17.

  • #2
    Hello, c'est fonctionnel.

    Par contre, oui, le cs est le bienvenu

    (je me suis permis de corriger ton titre peu évocateur)
    sigpic

    Cyprium Download Link

    Plus j'étudie plus j'me rends compte que je n'sais rien.

    †|

    Commentaire


    • #3
      Salut !

      Ok je mets le code source, sinon, des idées pour améliorer l'intérêt du tool ?
      Code:
      #!/usr/local/bin/pythonw
      # -*- coding: ISO-8859-1 -*-
      
      
      
      class Application(object):
          def __init__(self):
              self.root=Tk()
              self.root.title('Easy Crypter')
              self.root.configure(background='#5d6d9c')
              
              self.f0=Frame(self.root, bg='#5d6d9c')
              self.f1=Frame(self.root, bg='#5d6d9c')
              self.f2=Frame(self.root, bg='#5d6d9c')
      
      
              
              
              
      
              
              self.photo=PhotoImage(file="header.gif")
              self.photo2=PhotoImage(file="crypter.gif")
              self.photo3=PhotoImage(file="effacer.gif")
              self.photo4=PhotoImage(file="clipboard.gif")
              
              self.header = Label(self.f0, image=self.photo)
      		
              self.entree = Entry(self.f1, width =50)
              
              self.but1=Button(self.f2, image=self.photo2, bd=0, command =self.hasher)
              self.but2=Button(self.f2, image=self.photo3, bd=0, bg="black", command=self.effacer)
              
              
              self.labnul= Label(self.f2,text="    ",fg="black",bg="#5d6d9c")
              self.labnul2= Label(self.f2,text="    ",fg="black",bg="#5d6d9c")
              self.labnul3= Label(self.f1,text="    ",fg="black",bg="#5d6d9c")
              
              
              
              
              
              self.f0.pack()
              self.f1.pack()
              self.f2.pack()
              self.i=Frame(self.root, bg='#5d6d9c') 
              self.i.pack(side="left")
              self.j=Frame(self.root, bg='#5d6d9c') 
              self.j.pack(side="right")
              self.k=Frame(self.root, bg='#5d6d9c') 
              self.k.pack()
                 
              
              
              
              self.header.pack()
              self.labnul3.pack() 
              self.entree.pack()
              self.labnul.pack()
              self.but1.pack()
              self.but2.pack()
              self.labnul2.pack()
      
              
              
              
              self.root.mainloop()
              
          def hasher(self):
           
              
              
              self.hash = self.entree.get()
              self.md5 = hashlib.md5(self.hash).heigest()
              self.sha1= hashlib.sha1(self.hash).heigest()
              self.sha224= hashlib.sha224(self.hash).heigest()
              self.sha256= hashlib.sha256(self.hash).heigest()
              
              self.lab1= Label(self.i,text="MD5:",fg="white",bg="#5d6d9c")
              self.lab2= Label(self.j,text="SHA1:",fg="white",bg="#5d6d9c")
              self.lab3= Label(self.i,text="SHA224:",fg="white",bg="#5d6d9c")
              self.lab4= Label(self.j,text="SHA256:",fg="white",bg="#5d6d9c")
              
              self.but3=Button(self.i, image=self.photo4, bd=0, command=lambda x="md5":self.Copie(x),  width=32, height=28)
      
              self.but4=Button(self.j, image=self.photo4, bd=0, command=lambda x="sha1":self.Copie(x),  width=32, height=28)
      
              self.but5=Button(self.i, image=self.photo4, bd=0, command=lambda x="sha224":self.Copie(x),  width=32, height=28)
      
              self.but6=Button(self.j, image=self.photo4, bd=0, command=lambda x="sha256":self.Copie(x),  width=32, height=28)
              
      
              
              
              
              
              
              
              txt1=Text(self.i,width=70,height=1, bg="#5d6d9c", fg="white")
              txt2=Text(self.j,width=70,height=1, bg="#5d6d9c", fg="white")
              txt3=Text(self.i,width=70,height=1, bg="#5d6d9c", fg="white")
              txt4=Text(self.j,width=70,height=1, bg="#5d6d9c", fg="white")
              
              
              self.lab1.pack()
              txt1.pack()
              self.but3.pack()
              
              
              self.lab2.pack()
              txt2.pack()
              self.but4.pack()
              
      
      
              self.lab3.pack()
              txt3.pack()
              self.but5.pack()
              
              
              self.lab4.pack()
              txt4.pack()
              self.but6.pack()
             
              
              
              txt1.insert(END, self.md5)
              txt2.insert(END, self.sha1)
              txt3.insert(END, self.sha224)
              txt4.insert(END, self.sha256)
              self.labelsep=Label(self.k,text="",fg="white",bg="#5d6d9c")
              self.labelsep.pack()
              
      
             
          def effacer(self):
          
              self.i.destroy() 
              self.i.pack_forget()
              self.j.destroy()
              self.j.pack_forget()
              self.k.destroy()
              self.k.pack_forget()
              self.Canvas()
              
          def Canvas(self):
              self.i=Frame(self.root, bg='#5d6d9c') 
              self.i.pack(side="left")
              self.j=Frame(self.root, bg='#5d6d9c') 
              self.j.pack(side="right")
              self.k=Frame(self.root, bg='#5d6d9c') 
              self.k.pack()
      
              
          def Copie(self, t):
              
              if t == "md5":
                  pyperclip.copy(self.md5)
              elif t == "sha1":
                  pyperclip.copy(self.sha1)
              elif t == "sha256":
                  pyperclip.copy(self.sha256)
              else:
                  pyperclip.copy(self.sha224)
              self.labelsep2=Label(self.k,text="Copied !",fg="#00a322",bg="#5d6d9c")
              self.labelsep2.pack()
      
              
              
              
              
              
              
           
      
           
      from Tkinter import *
      import hashlib
      import pyperclip
      f = Application()

      Commentaire


      • #4
        - Commencer par multiplier les algos de hashing et donc modifier la dégaine générale de l'output (mettre les résultats les uns en-dessous des autres, les ciseaux à droite de chacun) afin qu'on ait pas à scroller 20km. En gros, tu demandes le plaintext puis ça ressort un table complet. Fait un essai ici.

        - assurer sa portabilité sur autre que Mac (assez important).

        - revoir le graphisme (optionnel - que si le tool est "fini").

        Après... l'intérêt ne réside pas dans le chiffrement mais dans le déchiffrement Tu as un hash, tu souhaites le unhash. Là c'est utile pour cracker les pwd

        Voir le travail déjà fait par Sorcier_FXK ici. Tu rentres ton hash, tu sélectionne l'algo, et tu lance le calcul.

        Le but, pour une application, serait donc de mettre en place un système de connexion à un réseau de serveurs distants puissants afin de faire le calcul le plus rapidement possible.

        Bien évidemment, en général, on obtient des listes complètes de hashes. Genre 100 000. Typique lorsqu'il y a eu piratage de BDD en général via injection/récup (cf: webhack). Il suffit de faire un petit traitement (rendre la liste "propre" ; hash les uns en dessous des autres ; avec éventuellement le salt en +) via quelques commandes bash sur le fichier en question. Puis ensuite le traiter avec le soft qui crackerait un maximum de hashes en un minimum de temps.

        On a déjà étudié un peu la question (ça ne s'est pas concrétisé, faute de temps, mais tu peux reprendre les idées, bref : le projet ; tout en sachant que sur kalkulators y'a déjà eu pas mal de recherches et surtout d'avancée). L'objet est donc de créer des dizaines de db (databases) de hashes precomputed (RT). Pour cela, va voir le topic situé ici.
        sigpic

        Cyprium Download Link

        Plus j'étudie plus j'me rends compte que je n'sais rien.

        †|

        Commentaire


        • #5
          Voilà j'ai mis en place un salt, si quelqu'un qui s'y connait pouvait le tester et me donner ses impressions ce serait super.

          J'ai essayé en vain de mettre en place une scrollbar, mais je continue mes recherches... Si quelqu'un connait une lib ou un script facile d'utilisation pour une scrollbar avec Tk je suis preneur...

          Le lien Easy Crypter.zip - 96 KB (Mac encore, je vais essayer de le porter pour windows)

          Le code:

          Code:
          #!/usr/local/bin/pythonw
          # -*- coding: ISO-8859-1 -*-
          
          
          
          class Application(object):
              def __init__(self):
                  self.root=Tk()
                  self.root.title('Easy Crypter')
                  self.root.configure(background='#5d6d9c')
                  
                  
                  
                  self.f0=Frame(self.root, bg='#5d6d9c')
                  self.f1=Frame(self.root, bg='#5d6d9c')
                  self.f2=Frame(self.root, bg='#5d6d9c')
                  
          
                  
                  self.photo=PhotoImage(file="header.gif")
                  self.photo2=PhotoImage(file="crypter.gif")
                  self.photo3=PhotoImage(file="effacer.gif")
                  self.photo4=PhotoImage(file="clipboard.gif")
                  
                  self.header = Label(self.f0, image=self.photo)
                  
                  self.nomentree = Label(self.f1, text="PlainText", fg="white", bg="#5d6d9c")
                  self.nomentree2 = Label(self.f1, text="Salt", fg="white", bg="#5d6d9c")
          		
                  self.entree = Entry(self.f1, width =50)
                  self.entree2 = Entry(self.f1, width=50)
                  
                  self.but1=Button(self.f2, image=self.photo2, bd=0, command =self.hasher)
                  self.but2=Button(self.f2, image=self.photo3, bd=0, bg="black", command=self.effacer)
                  
                  
                  self.labnul= Label(self.f2,text="    ",fg="black",bg="#5d6d9c")
                  self.labnul2= Label(self.f2,text="    ",fg="black",bg="#5d6d9c")
                  self.labnul3= Label(self.f1,text="    ",fg="black",bg="#5d6d9c")
                  
                  
                  
                  
                  
                  self.f0.pack()
                  self.f1.pack()
                  self.f2.pack()
                  self.i=Frame(self.root, bg='#5d6d9c') 
                  self.i.pack(side="left")
                  self.j=Frame(self.root, bg='#5d6d9c') 
                  self.j.pack(side="right")
                  self.k=Frame(self.root, bg='#5d6d9c') 
                  self.k.pack()
                     
                  
                  
                  
                  self.header.pack()
                  self.labnul3.pack() 
                  self.nomentree.pack()
                  self.entree.pack()
                  self.nomentree2.pack()
                  self.entree2.pack()
                 
                  
                  self.labnul.pack()
          
                  self.positionsalt = IntVar()
          
                  Radiobutton(self.f1, text="Before PlainText", variable=self.positionsalt, value=1, width=20, fg="white",
                  bg="#5d6d9c").pack()
                  Radiobutton(self.f1, text="After PlainText", variable=self.positionsalt, value=2, width=20, fg="white", bg="#5d6d9c", ).pack()
                  
                  self.but1.pack()
                  self.but2.pack()
                  self.labnul2.pack()
          
                  
                  
                  
                  self.root.mainloop()
                  
              def hasher(self):
                  
          
                  
          
                  positionsalt = self.positionsalt.get()
                  self.hash = self.entree.get()
                  self.salt = self.entree2.get()
                  if positionsalt == 1:
                      self.md5 = hashlib.md5(self.salt + self.hash).heigest()
                      self.sha1= hashlib.sha1(self.salt + self.hash).heigest()
                      self.sha224= hashlib.sha224(self.salt + self.hash).heigest()
                      self.sha256= hashlib.sha256(self.salt + self.hash).heigest()
                  else:
                      self.md5 = hashlib.md5(self.hash + self.salt).heigest()
                      self.sha1= hashlib.sha1(self.hash + self.salt ).heigest()
                      self.sha224= hashlib.sha224(self.hash + self.salt ).heigest()
                      self.sha256= hashlib.sha256(self.hash + self.salt).heigest()
          
                  
                  self.lab1= Label(self.i,text="MD5:",fg="white",bg="#5d6d9c")
                  self.lab2= Label(self.j,text="SHA1:",fg="white",bg="#5d6d9c")
                  self.lab3= Label(self.i,text="SHA224:",fg="white",bg="#5d6d9c")
                  self.lab4= Label(self.j,text="SHA256:",fg="white",bg="#5d6d9c")
                  
                  self.but3=Button(self.i, image=self.photo4, bd=0, command=lambda x="md5":self.Copie(x),  width=32, height=28)
          
                  self.but4=Button(self.j, image=self.photo4, bd=0, command=lambda x="sha1":self.Copie(x),  width=32, height=28)
          
                  self.but5=Button(self.i, image=self.photo4, bd=0, command=lambda x="sha224":self.Copie(x),  width=32, height=28)
          
                  self.but6=Button(self.j, image=self.photo4, bd=0, command=lambda x="sha256":self.Copie(x),  width=32, height=28)
                  
          
                  
                  
                  
                  
                  
                  
                  txt1=Text(self.i,width=70,height=1, bg="#5d6d9c", fg="white")
                  txt2=Text(self.j,width=70,height=1, bg="#5d6d9c", fg="white")
                  txt3=Text(self.i,width=70,height=1, bg="#5d6d9c", fg="white")
                  txt4=Text(self.j,width=70,height=1, bg="#5d6d9c", fg="white")
                  
                  
                  self.lab1.pack()
                  txt1.pack()
                  self.but3.pack()
                  
                  
                  self.lab2.pack()
                  txt2.pack()
                  self.but4.pack()
                  
          
          
                  self.lab3.pack()
                  txt3.pack()
                  self.but5.pack()
                  
                  
                  self.lab4.pack()
                  txt4.pack()
                  self.but6.pack()
                 
                  
                  
                  txt1.insert(END, self.md5)
                  txt2.insert(END, self.sha1)
                  txt3.insert(END, self.sha224)
                  txt4.insert(END, self.sha256)
                  self.labelsep=Label(self.k,text="",fg="white",bg="#5d6d9c")
                  self.labelsep.pack()
                 
                 
              def effacer(self):
              
                  self.i.destroy() 
                  self.i.pack_forget()
                  self.j.destroy()
                  self.j.pack_forget()
                  self.k.destroy()
                  self.k.pack_forget()
                  self.Canvas()
                  
              def Canvas(self):
                  self.i=Frame(self.root, bg='#5d6d9c') 
                  self.i.pack(side="left")
                  self.j=Frame(self.root, bg='#5d6d9c') 
                  self.j.pack(side="right")
                  self.k=Frame(self.root, bg='#5d6d9c') 
                  self.k.pack()
          
                  
              def Copie(self, t):
                  
                  if t == "md5":
                      pyperclip.copy(self.md5)
                  elif t == "sha1":
                      pyperclip.copy(self.sha1)
                  elif t == "sha256":
                      pyperclip.copy(self.sha256)
                  else:
                      pyperclip.copy(self.sha224)
                  self.labelsep2=Label(self.k,text="Copied !",fg="#00a322",bg="#5d6d9c")
                  self.labelsep2.pack()
                  
          
                  
             
                  
                  
                  
                  
               
          
               
          from Tkinter import *
          import hashlib
          import pyperclip
          f = Application()

          Commentaire

          Chargement...
          X