This program will check the milw0rm database for exploits and then give you a list of exploits. You then tell it which exploit you would like and the script will fetch the exploit from milw0rm for you and save it to your hard drive.

Code:
#!/usr/bin/ruby
#Programmed by: TheKlown
require 'net/http'
require 'uri'

class Milw0rmResults
	def initialize(id, des, link, site)
		@id			=id
		@des		=des
		@link		=link
		@site		=site
	end
	
	def getID()
		return @id
	end
		
	def getDes()
		return @des
	end
	
	def getExploit()
		url = URI.parse(@site)
    res = Net::HTTP.start(url.host, url.port) {|http|
      http.get(@link)
    }
    return res.body
	end
end

class Milw0rm
	def initialize(site)
		@site =site
		@sResult
	end
	
	def Search(search)
		res =Net::HTTP.post_form(URI.parse(@site), {'dong'=>search});
		@sResult =res.body();
	end
	
	def getList()
		search =[]
		@sResult [email protected]('<TR class=submit>')
		
		#Once we have located the position that the search result starts at we then find its length and drop 2 of this
		#the reasion we need to do this is because the last search result needs to be handled seperatly
		max [email protected]
		max -=1
		#process the search results and store them in Milw0rmSearch
		for i in 1..max			
			tmp =@sResult[i].split('<TD nowrap="nowrap" width=62 class=style14>')
			tmp =tmp[1].split('</TD><TD nowrap="nowrap" width=375>')
			
			des =tmp[1].split('>')
				
			link =des[0].split('<a href=')
			link =link[1].split(' target=')
			link =link[0]

			des =des[1].split('</A') #the description is stored in des[0]
			
			search[i] =Milw0rmResults::new(i, des[0], link, @site)
		end
		return search
	end
end

def Intro()
	result ="Exploiter v1\n"
	result +="Programmed by: Spider\n"
	result +="irc: irc.hackedyourbox.net\n"
	result +="A product of:\n\t"
	result +="www.cyber-t3ch.net www.hackedyourbox.net www.striknyne.net & www.j4ck4lz.net\n"
	return result;
end

#a function to remove all the html **** from the bottom
def removeBottom(str)

	count =0
	tmp =str.reverse #reverse the string so we can work from the top
	str =""
	tmp.each{ |i|
		if(count >3) #once we have read the first two lines in we can start saving the file again
			str +=i
		end
			count +=1
	}

	return str.reverse #reverse the file again so its the correct way up
end

print(Intro(), "\n")

print("Exploit>")
find =gets
find =find.split("\n")

#Exploiter starts here
milw0rm =Milw0rm::new("http://www.milw0rm.com/search.php")
milw0rm.Search(find[0])
exploits =milw0rm.getList()

max =exploits.length
max -=1
for i in 1..max
	print(exploits[i].getID() ," : " ,exploits[i].getDes() ,"\n")
end

id =0
while(id.to_i >max or id.to_i ==0)
	print("(press q to exit)\n")
	print("exploit ID> ")
	id =gets
	if(id =="q\n")
		exit 1
	end
end

print("Filename> ")
filename =gets
filename =filename.split("\n") #we need to remove the new line from the filename

outfile =File::new(filename[0], 'w')
count =0
ex =exploits[id.to_i].getExploit()
ex =removeBottom(ex) #we need to remove all the html **** from the bottom of the file
ex.each{ |i|
	if(count >4) #drop the first four lines from the file, this is so we dont get all the html **** in the file
		outfile.write(i)
	end

	count +=1
}

outfile.close()