Underc0de - Hacking y seguridad informática

Programación Scripting => Python => Mensaje iniciado por: @ed33x en Enero 30, 2011, 10:14:04 am

Título: Md5 Hash cracker (GUI)
Publicado por: @ed33x en Enero 30, 2011, 10:14:04 am
(http://www.darkc0de.com/images/md5crack.png)

Código: Python
  1. #MD5 Cracker (GUI Version)
  2. #d3hydr8[at]gmail[dot]com
  3. #http://www.darkc0de.com
  4.  
  5. from Tkinter import *
  6. import tkFileDialog, md5
  7.  
  8. class Application(Frame):
  9.         def __init__(self, master):
  10.                 Frame.__init__(self, master)
  11.                 self.grid()
  12.                 self.create_widget()
  13.         def create_widget(self):
  14.                
  15.                 self.lbl = Label(self, text = "ENTER MD5: ")
  16.                 self.lbl.grid(row = 2, column = 0, sticky = E)
  17.                
  18.                 self.pw_ent = Entry(self, width = 32)
  19.                 self.pw_ent.grid(row = 2, column = 1, sticky = E)
  20.                
  21.                 self.submit_bttn = Button(self, text = "Choose Wordlist", command = self.loadwords)
  22.                 self.submit_bttn.grid(row = 5, column = 1, sticky = W)
  23.                
  24.                 self.txtbox = Text(self, width = 55, height = 8, font=('Georgia', 8), bg = "#CCC", wrap = WORD)
  25.                 self.txtbox.grid(row = 7, column = 0, columnspan = 2, sticky = W)
  26.  
  27.                 self.bttn1 = Button(self, text = "Crack", font=('courier', 10, 'bold'), command = self.crack)
  28.                 self.bttn1.grid(row = 9, columnspan = 2, sticky = "WE")
  29.        
  30.                 self.clear = Button(self, text="Clear", font=('Georgia', 8), command = self.clear)
  31.                 self.clear.grid(row = 10, column = 1,sticky= E)
  32.                
  33.         def loadwords(self):
  34.                 global wordlist
  35.                 file = tkFileDialog.askopenfile(parent=root,mode='r',title='Choose a file')
  36.                 wordlist = file.readlines()
  37.                 self.txtbox.insert(END, "Loaded: "+str(len(wordlist))+" words")
  38.                
  39.         def crack(self):
  40.                 pw = self.pw_ent.get()
  41.                 if len(pw) == 32:
  42.                         self.txtbox.insert(END, "\nCracking: "+pw)
  43.                         for word in wordlist:
  44.                                 hash = md5.new(word.replace("\n","")).hexdigest()
  45.                                 if pw == hash:
  46.                                         self.txtbox.insert(END, "\n\nCracked: "+word)
  47.                                         break
  48.                         self.txtbox.insert(END, "\nComplete")
  49.                 else:
  50.                         self.txtbox.insert(END, "\nImproper MD5 Length: "+str(len(pw)))
  51.                        
  52.         def clear(self):
  53.                 self.pw_ent.delete(0, END)
  54.                 self.txtbox.delete(0.0, END)
  55.                 wordlist = []
  56.                
  57. root = Tk()
  58. root.title("MD5 Cracker")
  59. root.geometry("350x200")
  60. app = Application(root)
  61. root.mainloop()
  62.