Volviendo a las canchas con Python, os traigo un detector de formularios, con las siguientes características :
- Lee las urls dentro de un archivo de texto. Separando las url's por un ENTER
- El programa detecta todos los formularios de las webs
- Nos entregará propiedades del <form> , tipo "method", "name", "id", "onsubmit", etc
- Devuelve los campos input de cada formulario, junto a sus propiedades, tipo "name", "value", "type", "id", "class", etc
Código
Ejemplo de archivo urls.txt:
# Autor : 0x5d - JaAViEr # Twitter : @0x5d import sys, urllib2, re try: urls = open(raw_input("Archivo ::> "), "r") except: print "Error al intentar abrir el archivo." sys.exit(1) for a in urls: web = urllib2.urlopen(a).read() busca_form = re.findall("<form(.*)>", web) for b in busca_form: url_action = re.findall("action=(.*)", b)[0].split()[0].translate(None, "><\"'").replace("&","&") if len(url_action) == 0: url_action = a.replace("&","&") print "\n\nURL:", url_action print "\nPropiedades del <form>:" formularios = web.split("<form") f = 0 for c, d in zip(b.split(), formularios): propiedades = re.findall("(.*)=\"(.*)\"", c) if propiedades and not "action" in propiedades[0][0]: print propiedades[0][0], ":", propiedades[0][1] inputs = re.findall("<input(.*)", web.split("<form")[f].split("</form>")[0]) f += 1 print "-"*20 for g in inputs: print "<INPUT>:" for h in g.split(): propiedades_input = re.findall("(.*)=(.*)", h) if propiedades_input and len(propiedades_input[0][0])>0: print propiedades_input[0][0], ":", propiedades_input[0][1].split(">")[0] print "-"*20
Código
Ojo que pueden poner muchas url's hacia abajo
http://www.vodale.com/chat_xxx/login.php
Salida:
Código
Como ven, dice <INPUT> y abajo la propiedad de cada input.
Archivo ::> urls.txt URL: http://www.vodale.com/chat_xxx/login.php Propiedades del <form>: method : POST -------------------- <INPUT>: type : "text" -------------------- name : "log" -------------------- <INPUT>: type : "text" -------------------- name : pwd -------------------- <INPUT>: type : "Submit" -------------------- value : "Login" --------------------
Un ejemplo con la salida de un SMF...
urls.txt
Código
Salida:
http://www.portalhacker.net/index.php?action=login
Código
Ahí se aprecia mejor la salida de las propiedades del <form>
Archivo ::> urls.rxr URL: http://www.portalhacker.net/index.php?PHPSESSID=17d1201149f3def8b534505196245624&action=login2 Propiedades del <form>: id : guest_form method : post accept-charset : UTF-8 -------------------- <INPUT>: type : "text" -------------------- name : "user" -------------------- size : "20" -------------------- value : "" -------------------- class : "input_text" -------------------- <INPUT>: type : "password" -------------------- name : "passwrd" -------------------- value : "" -------------------- size : "20" -------------------- class : "input_password" -------------------- <INPUT>: type : "text" -------------------- name : "cookielength" -------------------- size : "4" -------------------- maxlength : "4" -------------------- value : "90000" -------------------- class : "input_text" -------------------- <INPUT>: type : "checkbox" -------------------- name : "cookieneverexp" -------------------- class : "input_check" -------------------- onclick : "this.form.cookielength.disabled -------------------- <INPUT>: type : "submit" -------------------- value : "Ingresar" -------------------- class : "button_submit" -------------------- <INPUT>: type : "hidden" -------------------- name : "hash_passwrd" -------------------- value : "" -------------------- URL: http://www.portalhacker.net/index.php?PHPSESSID=17d1201149f3def8b534505196245624&action=search2 Propiedades del <form>: method : post accept-charset : UTF-8 -------------------- <INPUT>: type : "text" -------------------- name : "search" -------------------- class : "inputbox" -------------------- value : "Buscar..." -------------------- onfocus : "this.value -------------------- onblur="if(this.value= : '') -------------------- this.value : 'Buscar...';" -------------------- <INPUT>: type : "hidden" -------------------- name : "advanced" -------------------- value : "0" -------------------- URL: http://www.portalhacker.net/index.php?PHPSESSID=17d1201149f3def8b534505196245624&action=login2 Propiedades del <form>: name : frmLogin id : frmLogin method : post -------------------- <INPUT>: type : "text" -------------------- name : "user" -------------------- size : "20" -------------------- value : "" -------------------- class : "input_text" -------------------- <INPUT>: type : "password" -------------------- name : "passwrd" -------------------- value : "" -------------------- size : "20" -------------------- class : "input_password" -------------------- <INPUT>: type : "text" -------------------- name : "cookielength" -------------------- size : "4" -------------------- maxlength : "4" -------------------- value : "90000" -------------------- class : "input_text" -------------------- <INPUT>: type : "checkbox" -------------------- name : "cookieneverexp" -------------------- class : "input_check" -------------------- onclick : "this.form.cookielength.disabled -------------------- <INPUT>: type : "submit" -------------------- value : "Ingresar" -------------------- class : "button_submit" -------------------- <INPUT>: type : "hidden" -------------------- name : "hash_passwrd" -------------------- value : "" --------------------
Lo hice con un poco de inspiración , sé que nadie va a comentar , pero igual lo dejo por acá , quizás a alguien le llegue a servir el bichito
Saludos , Javier.