elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Proyecto-Python]Navegar por consola en foros SMF - JaAViEr (0x5d)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Proyecto-Python]Navegar por consola en foros SMF - JaAViEr (0x5d)  (Leído 2,451 veces)
0x5d

Desconectado Desconectado

Mensajes: 241



Ver Perfil WWW
[Proyecto-Python]Navegar por consola en foros SMF - JaAViEr (0x5d)
« en: 3 Diciembre 2012, 16:15 pm »

Hola, muy buenos días.

Hace un rato me encontraba en uno de los peores momentos del ocio en mis 19 primaveras y pues me vino la idea (maybe bad) de poder navegar por un Foro SMF de una forma menos tradicional... Por consola.

La idea sería que podamos realizar acciones básicas-intermedias mediante la consola, por ejemplo, Leer mensajes privados, navegar por el index y sus subforos, posteriormente poder llegar a realizar cambios de contraseña o llegar a personalizar nuestro perfil, todo desde nuestra querida Shell.

Estuve unos minutos al pc antes de irme a clases y armé algo más o menos como una idea:

Código
  1. #-*-coding: utf-8 -*-
  2. # Contacto : Twitter @0x5d - Correo : 0000x5d@gmail.com
  3. import urllib, urllib2, re, os
  4. from HTMLParser import HTMLParser
  5.  
  6. class Parseador(HTMLParser):
  7.    def handle_data(self, data):
  8.        print data
  9.  
  10. def clear():
  11.    if os.name == "nt":
  12.        os.system("cls")
  13.    else:
  14.        os.system("clear")
  15.  
  16. parseando = Parseador()
  17. cookie = urllib2.HTTPCookieProcessor()
  18. opener = urllib2.build_opener(cookie)
  19. urllib2.install_opener(opener)
  20.  
  21. try:
  22.    print "Nota: Solo insertar http://www.elsitiosmf.com , sin /index.php"
  23.    foro = raw_input("URL Foro SMF:")
  24.    usuario = raw_input("Usuario:")
  25.    clave = raw_input("Password:")
  26.    datos = {"user":usuario, "passwrd":clave, "cookielength":"9000","hash_passwrd":""}
  27.    login = urllib2.urlopen("%s/index.php?action=login2"%foro, urllib.urlencode(datos)).read()
  28.    if "logout" in login:
  29.        clear()
  30.        var = urllib2.urlopen("%s/SSI.php?ssi_function=welcome"%foro).read()
  31.        datos = re.findall("Hola, <strong>(.*)</strong>", var)
  32.        print "Bienvenido", datos[0]
  33.        while True:
  34.            opciones_primarias = input("""
  35.            1.- Ver MP's.
  36.                2.- Navegar en el index.
  37.  
  38.            Ingresa una opcion:""")
  39.            if opciones_primarias == 1:
  40.                guarda_id = []
  41.                guarda_asunto = []
  42.                view_mp = urllib2.urlopen("%s/index.php?action=pm"%foro).read()
  43.                print "Formato \nID :     ASUNTO "
  44.                for id_msj, asunto_msj in re.findall("<a href=\"#msg(.*)\">(.*)</a>", view_mp):
  45.                    guarda_id.append(id_msj)
  46.                    guarda_asunto.append(asunto_msj)
  47.                    print id_msj, asunto_msj
  48.                leer_id = raw_input("Ingrese el ID del mensaje a Leer:")
  49.                clear()
  50.                if leer_id in guarda_id:
  51.                    get_msj = re.findall("<div class=\"inner\" id=\"msg_%s\">(.*)</div>"%leer_id, view_mp)
  52.                    print "Asunto:%s \n\n\nContenido del mensaje:"%guarda_asunto[guarda_id.index(leer_id)]
  53.                    parseando.feed(get_msj[0])
  54.                else:
  55.                    print "No existe el ID ingresado"
  56.            if opciones_primarias == 2:
  57.                    board_name_array = []
  58.                    board_id_array = []
  59.                    index = urllib2.urlopen("%s/index.php"%foro).read()
  60.                    print "Formato:\n Nombre del foro :  BOARD ID"
  61.                    for nombre in re.findall("<a class=\"subject\"(.*)>(.*)</a>", index):
  62.                        for board_id in re.findall("name=\"b([0-9]*)\"", nombre[0]):
  63.                            print "Nombre:", nombre[1] , "| Board id:", board_id
  64.                            board_name_array.append(nombre[1])
  65.                            board_id_array.append(board_id)
  66.                    opciones_index = input("""
  67.                    1.- Entrar en una categoria.
  68.                        2.- Volver al menu principal.
  69.  
  70.                    Ingresa tu opcion: """)
  71.                    if opciones_index == 1:
  72.                        board = raw_input("Inserta BOARD ID:")
  73.                        if board in board_id_array:
  74.                            enter_board = urllib2.urlopen("%s/index.php?board=%s"%(foro,board)).read()
  75.                            if "Subforos" in enter_board:
  76.                                respuesta_subforos = raw_input("Subforos detectados, mostrar nombres?(s/n)").lower()
  77.                                if respuesta_subforos == "n":
  78.                                    print "No se mostraran subforos"
  79.                                else:
  80.                                    print "SHOW CATEGORIES"
  81.                                    #Aca se veran los subforos y posteriormente los mensajes en el foro + el ID
  82.                            else:
  83.                                print "Esta categoria no posee subforos"
  84.                                # Aca se muestran los mensajes en el foro junto a su ID
  85.                        else:
  86.                            print "No existe el Board ID Ingresado."
  87.    else:
  88.        print "Usuario o Clave mal ingresados"
  89. except:
  90.    print "Not connected to %s"%foro
  91.  
Con un par de líneas de código se puede hacer que el usuario que ingrese sea visitante.

Le hice que podamos leer mensajes privados a partir de su ID, además poder ver los foros en el index e ingresar a algunos de ellos, si algún foro posee sub-foro, el programa debe avisar antes... En fin, ustedes lean el código y me dicen si no es tan mala la idea o si es pésima

PD: No he añadido control de errores vía try & except, ya que es una fase "beta" . Una vez puestas las pilas en el código no se escapará ni un error

Saludos, Javier.


« Última modificación: 3 Diciembre 2012, 17:49 pm por 0x5d » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.788



Ver Perfil
Re: [Proyecto-Python]Navegar por consola en foros SMF - JaAViEr (0x5d)
« Respuesta #1 en: 7 Diciembre 2012, 20:24 pm »

Después de pedirme user/pass:
Código:
Bienvenido Not connected to http://foro.elhacker.net

:-/

Gracias de todas formas, se ve muy bien.


En línea

0x5d

Desconectado Desconectado

Mensajes: 241



Ver Perfil WWW
Re: [Proyecto-Python]Navegar por consola en foros SMF - JaAViEr (0x5d)
« Respuesta #2 en: 8 Diciembre 2012, 23:06 pm »

Después de pedirme user/pass:
Código:
Bienvenido Not connected to http://foro.elhacker.net

:-/

Gracias de todas formas, se ve muy bien.
Es porque elhacker.net utiliza index.html , el código tiene .php (el por defecto de SMF). Como dije anteriormente, está en fase beta, por lo que no tiene control de errores. Pero con un par de líneas puedes hacer que detecte .php o .html ;)

Saludos !
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Python]Localizador IP - JaAViEr(0x5d)
Scripting
0x5d 2 3,363 Último mensaje 30 Diciembre 2011, 15:11 pm
por Novlucker
[Código-Python-Android]Calculadora por secuencia - JaAViEr(0x5d)
Scripting
0x5d 0 3,115 Último mensaje 27 Diciembre 2011, 02:22 am
por 0x5d
[Código-Python]Enviando y recibiendo cookies por consola - JaAViEr|0x5d
Scripting
0x5d 0 1,890 Último mensaje 28 Abril 2012, 08:34 am
por 0x5d
[Código-Python]Cliente FTP V2 - JaAViEr | 0x5d
Scripting
0x5d 5 3,343 Último mensaje 4 Mayo 2012, 17:25 pm
por 0x5d
[Proyecto]PyDB - "Bases de Datos" fáciles en Python :: JaAViEr | 0x5d
Scripting
0x5d 0 1,834 Último mensaje 23 Julio 2013, 14:35 pm
por 0x5d
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines