Un simple script en Ruby para crackear un hash MD5.
Version consola : 
#!usr/bin/ruby
#MD5 Cracker 0.2
#(C) Doddy Hackman 2015
require "open-uri"
require "net/http"  
# Functions 
def toma(web)
	begin
		return open(web, "User-Agent" => "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0").read
	rescue
		return "Error"
	end
end
def response_code(web)
	begin
		return Net::HTTP.get_response(URI(web)) .code 
	rescue
		return "404"
	end
end
def tomar(web,arg)
	begin
		headers = {"User-Agent" => "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0"}
		uri = URI(web)
		http = Net::HTTP.new(uri.host, uri.port)
		return http.post(uri.path,arg, headers).body
	rescue
		return "Error"
	end
end
def crack(md5)
	print "\n[+] Cracking ...\n\n"
	code = tomar("http://md5online.net/index.php","pass="+md5+"&option=hash2text&send=Submit")
	if code=~/pass : <b>(.*?)<\/b>/
		password = $1
		print "[+] md5online.net -> "+password+"\n" 
	else
		print "[-] md5online.net -> Not Found" + "\n" 
	end
	
	code = tomar("http://md5.my-addr.com/md5_decrypt-md5_cracker_online/md5_decoder_tool.php","md5="+md5)
	if code=~/<span class='middle_title'>Hashed string<\/span>: (.*?)<\/div>/
		password = $1
		print "[+] md5.my-addr.co -> "+password+"\n"
	else
		print "[-] md5.my-addr.co -> Not Found" +"\n" 
	end
	code = tomar("http://md5decryption.com/index.php","hash="+md5+"&submit=Decrypt It!")
	if code=~/Decrypted Text: <\/b>(.*?)<\/font>/
		password = $1
		print "[+] md5decryption.com -> "+password+"\n"
	else
		print "[-] md5decryption.com -> Not Found"+"\n"
	end
	
	print "\n[+] Finished"
end
def uso 
	print "\n[+] Sintax : ruby md5cracker.rb <md5>\n"
end
def  head
	print "\n\n-- == MD5 Cracker 0.2 == --\n\n"
end
def copyright
	print "\n\n-- == (C) Doddy Hackman 2015 == --\n\n"
end
#
md5 = ARGV[0]
head()
if !md5
	uso()
else
	crack(md5)
end
copyright()
#The End ?
Version Tk : 
#!usr/bin/ruby
#MD5 Cracker 0.2
#(C) Doddy Hackman 2015
require "tk"
require "open-uri"
require "net/http" 
#Functions
# Functions 
def toma(web)
	begin
		return open(web, "User-Agent" => "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0").read
	rescue
		return "Error"
	end
end
def response_code(web)
	begin
		return Net::HTTP.get_response(URI(web)) .code 
	rescue
		return "404"
	end
end
def tomar(web,arg)
	begin
		headers = {"User-Agent" => "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0"}
		uri = URI(web)
		http = Net::HTTP.new(uri.host, uri.port)
		return http.post(uri.path,arg, headers).body
	rescue
		return "Error"
	end
end
#
window = TkRoot.new { title "MD5 Cracker 0.2 (C) Doddy Hackman 2015" ; background "black" }
window['geometry'] = '300x300-20+10'
TkLabel.new(window) do
	background "black"
	foreground "green"
	text "     MD5 : "
	place('relx'=>"0.1",'rely'=>"0.1")
end
md5 = TkEntry.new(window){
	background "black"
	foreground "green"
	width 25
	place('relx'=>0.3,'rely'=>0.1)
}
TkLabel.new(window) do
	background "black"
	foreground "green"
	text "Console"
	place('relx'=>0.4,'rely'=>0.2)
end
console =TkText.new(window) do
	background "black"
	foreground "green"
	width 30
	height 10
	place('relx'=>0.1,'rely'=>0.3)
end
TkButton.new(window) do
	text "Crack It"
        background "black"
	foreground "green"
	width 17
	activebackground "green"
	highlightbackground  "green"
	command proc{
		md5 = md5.value.to_s
		
		console.insert("end","[+] Cracking ...\n\n")
		
		code = tomar("http://md5online.net/index.php","pass="+md5+"&option=hash2text&send=Submit")
		if code=~/pass : <b>(.*?)<\/b>/
			password = $1
			console.insert("end","[+] md5online.net -> "+password+"\n"  )
		else
			console.insert("end","[-] md5online.net -> Not Found" + "\n" )
		end
	
		code = tomar("http://md5.my-addr.com/md5_decrypt-md5_cracker_online/md5_decoder_tool.php","md5="+md5)
		if code=~/<span class='middle_title'>Hashed string<\/span>: (.*?)<\/div>/
			password = $1
			console.insert("end","[+] md5.my-addr.co -> "+password+"\n")
		else
			console.insert("end","[-] md5.my-addr.co -> Not Found" +"\n")
		end
		code = tomar("http://md5decryption.com/index.php","hash="+md5+"&submit=Decrypt It!")
		if code=~/Decrypted Text: <\/b>(.*?)<\/font>/
			password = $1
			console.insert("end","[+] md5decryption.com -> "+password+"\n")
		else
			console.insert("end","[-] md5decryption.com -> Not Found"+"\n")
	        end
		
		console.insert("end","\n[+] Finished\n" )
	}
	place('relx'=>0.3,'rely'=>0.9)
end
Tk.mainloop
#The End ?
Una imagen : 
(http://doddyhackman.webcindario.com/images/md5cracker_ruby.jpg)
Eso es todo.
			
			
			
				Excelente aporte amigo, tu forma de programar es muy limpia y entendible, saludos
			
			
			
				Casualidades de la vida:
http://www.mediafire.com/download/6x9q9b74bn6ajt1/NetCrack.zip
Para crackear MD5 usando bots. El codigo fuente del programa.
Saludos socios!!