• Publicidad

Login con Perl en phpbb2

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

Login con Perl en phpbb2

Notapor zozo666 » 2007-07-24 13:24 @600

Quisiera saber si tienen alguna idea de cómo hacer que mediante Perl pueda loguerame en un foro en PHP. La forma más habitual es el manejo de las cookies, pero ¿de qué manera puedo manejar las cookies para que queden de la misma forma que lo hace la función login.php? (Esto está dentro del pack del foro que es gratuito). Muchas Gracias.
zozo666
Perlero nuevo
Perlero nuevo
 
Mensajes: 139
Registrado: 2007-05-26 10:36 @483

Publicidad

Notapor explorer » 2007-07-24 18:59 @833

Es que yo creo que no es necesario saber el formato de la cookie. Con la distribución LWP debería bastar para obtener la cookie, de forma automática, después de pasar por la página de login (con su nombre de usuario y contraseña). Y a partir de ahí, todas las demás peticiones harán uso de esa galleta, también de forma automática.

En el lwpcookbook tienes un ejemplo perfecto: LWP hace uso de forma automática de las galletas si defines su jarra.

Entonces, la prueba a hacer es: definir la jarra y luego hacer un POST a la página de login.php. Y luego ver si puedo hacer un GET de otra página que necesite tener habilitado el acceso.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor kidd » 2007-07-24 20:06 @879

Hola:

Realmente es muy sencillo, de hecho en la administración del phpBB puedes seleccionar que nombre le pones al cookie, entonces todo lo que tienes que hacer es crear el cookie con Perl.

Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor zozo666 » 2007-07-25 08:25 @392

¿Tienen alguna forma de cómo crear la cookie fácilmente? Estuve intentando y no pude. Gracias.
Por cierto, ¿qué es la distribución LWP?
zozo666
Perlero nuevo
Perlero nuevo
 
Mensajes: 139
Registrado: 2007-05-26 10:36 @483

Notapor Norther » 2007-07-25 09:08 @422

Puedes hacer un programa en Perl que visite el login, rellene el formulario y guarde las cookies a un fichero en formato LWP, luego sencillamente haz otro que te cree esas cookies a partir del fichero, o que visite esa página con las cookies del fichero. Hay muchas posibilidades
Norther
Perlero nuevo
Perlero nuevo
 
Mensajes: 117
Registrado: 2007-07-24 13:47 @616
Ubicación: Asturias

Notapor kidd » 2007-07-25 09:12 @425

Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor explorer » 2007-07-25 09:24 @433

La distribución LWP está aquí.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor zozo666 » 2007-07-25 10:28 @477

Ya hice un programa que crea las cookies. Ahora el tema es que no sé la forma de las cookies que se generan con el PHP del phpbb2. Lo único que pongo es este valor: a:2:{s:11:"autologinid";s:0:"";s:6:"userid";s:1:"7";} que me tira el usuario registrado. Pero si ingreso una cookie desde Perl, voy al foro y no está logueado, o sea que algo le tiene que faltar, seguro.

¿Cómo se utiliza LWP y para qué? ¿Qué es lo que tendría que hacer con eso?

Si alguien sabe más o menos los pasos a seguir para armar lo que necesito se lo agradecería; lo único que pude armar hasta ahora es la creación de cookies pero la información disponible en la cookie que yo creé no es necesaria para loguearse, me parece.

Encontré este hilo que dice algo sobre lo que estoy haciendo: viewtopic.php?p=2225&highlight=#2225


Muchas gracias a todos
zozo666
Perlero nuevo
Perlero nuevo
 
Mensajes: 139
Registrado: 2007-05-26 10:36 @483

Notapor kidd » 2007-07-25 12:36 @567

Hola,

El problema es que aparte de crear el cookie deberás de crear una nueva sesión en tu foro. El valor del cookie debe de ser como el siguiente:

Código: Seleccionar todo
a:2:{s:11:"autologinid";s:32:"[ID_SESION]";s:6:"[ID_USUARIO]";s:2:#21";}


Entonces, deberás de crear en la tabla de tu foro una nueva entrada para una nueva sesión que ya salvas entonces en el cookie.


Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor explorer » 2007-07-25 13:28 @603

Vamos a ver... creo que no se me ha entendido...

Cuando digo que NO es necesario crear cookies 'a mano' para entrar en un foro (como puede ser este), es que NO es necesario...

Voy a poner un ejemplo, usando este mismo foro. Lo que necesitamos es acceder a la página de login.php, poner nuestro nombre de usuario y contraseña. Eso nos devolverá una cookie, que usaremos para acceder a... nada más y nada menos que nuestro propio panel de control (el enlace Perfil), y de éste, sacar nuestra dirección de correo electrónico.

Bueno, pues el código es el siguiente:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Cookies;
use HTTP::Request::Common qw(POST);

use strict;
use warnings;

# Creamos el objeto para acceder vía web
my $ua = LWP::UserAgent->new;

# Decimos dónde pondremos nuestra jarra de galletas.
# Es un fichero normal, por lo que la colocaremos en el mismo directorio de trabajo, con un nombre determinado
$ua->cookie_jar(HTTP::Cookies->new(file => "lwpcookies.txt", autosave => 1));

# Bien, vamos a loguearnos.
# Hacemos un POST al formulario de login.php, pasándole los parámetros requeridos
my $req = POST 'http://perlenespanol.com/foro/login.php',
          [ username => 'explorer', password => 'australab10', autologin => 1, login => 'Login' ];

#Aquí, si todo va bien, obtendríamos una cabecera HTTP con un redirect a la página de entrada
#print $ua->request($req)->as_string;

# Ya estamos dentro (que sí, que sí), así que vamos a nuestro panel de control, nuestro perfil
# Para eso, hacemos una petición de una página normal, con un GET.
# ATENCIÓN: LA COOKIE SALE DE FORMA AUTOMÁTICA DE NUESTRA JARRA DE GALLETAS
my $res = $ua->request(
    HTTP::Request->new(GET => 'http://perlenespanol.com/foro/profile.php?mode=editprofile')
);

# Si todo va bien, veremos un 200 OK
#print $res->status_line, "\n";

# Si hemos tenido éxito
if ($res->is_success) {

    # Pintamos toda la información de nuestro perfil
    #print $res->as_string;

    # De todo el perfil, solo nos interesa la línea que pone email y sacamos su valor
    my ($email) = $res->as_string =~ m/email.*?value="(.*?)"/;
    print "$email\n";
}
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
¡Tachán! Estamos logueados (porque sino no podríamos ver nuestro propio perfil :o) y cada vez que pidamos una página o mandemos un correo, la cookie se envía de forma automática... ¿A quién le interesa saber cómo está hecha una galleta? Solo importa su saboooooorrrrr 8)
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Siguiente

Volver a Avanzado

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 7 invitados

cron