[Código-Python]Extractor de formularios+sus propiedades+Inputs - JaAViEr (0x5d)

Iniciado por 0x5d, 21 Marzo 2013, 16:59 PM

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

0x5d

Hola, muy buen día a todos.

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
Sin más preámbulos... El código :
Código (python) [Seleccionar]

# 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("&amp;","&")
if len(url_action) == 0:
url_action = a.replace("&amp;","&")
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


Ejemplo de archivo urls.txt:
Código (text) [Seleccionar]

http://www.vodale.com/chat_xxx/login.php

Ojo que pueden poner muchas url's hacia abajo :P
Salida:
Código (text) [Seleccionar]

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"
--------------------

Como ven, dice <INPUT> y abajo la propiedad de cada input.
Un ejemplo con la salida de un SMF...
urls.txt
Código (text) [Seleccionar]

http://www.portalhacker.net/index.php?action=login

Salida:
Código (text) [Seleccionar]


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 : ""
--------------------

Ahí se aprecia mejor la salida de las propiedades del <form> ;D

Lo hice con un poco de inspiración :D , sé que nadie va a comentar , pero igual lo dejo por acá , quizás a alguien le llegue a servir el bichito ;D

Saludos , Javier.
¡ SIGUEME EN TWITTER -> @JavierEsteban__ !

CodeSource

Creo en un solo lenguaje de programación, "C"
Todo poderoso, Creador de Windows `98 y el XP.
Creo en un solo señor "C++", hijo único de "C",
Nacido de "C" antes que de "Visual C++",
"C" de "C", compilador de Compilador,
"C" © copyrighted de © copyrighted.
Compilado, no creado,
De los mismos programadores que el padre,
Por quien todo es programado, ...

0x5d

¡ SIGUEME EN TWITTER -> @JavierEsteban__ !

Shell Root

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

0x5d

Cita de: Shell Root en 21 Marzo 2013, 23:43 PM
y a modo de pregunta, eso pa que?
Pues anteriormente hice un programa tipo bruteforce... Entonces por ahí va la cosa, luego ya subo el code completo de ambas y comentas :P
¡ SIGUEME EN TWITTER -> @JavierEsteban__ !