Foros del Web » Creando para Internet » Sistemas de gestión de contenidos »

Comparar contraseña con la de phpbb3

Estas en el tema de Comparar contraseña con la de phpbb3 en el foro de Sistemas de gestión de contenidos en Foros del Web. Hasta donde se, las contraseñas de un foro phpbb3 se encuentran almacenadas en el campo user_password de la tabla phpbb_users encriptadas por algun algoritmo que ...
  #1 (permalink)  
Antiguo 01/12/2008, 11:34
 
Fecha de Ingreso: febrero-2006
Mensajes: 103
Antigüedad: 18 años, 2 meses
Puntos: 1
Comparar contraseña con la de phpbb3

Hasta donde se, las contraseñas de un foro phpbb3 se encuentran almacenadas en el campo user_password de la tabla phpbb_users encriptadas por algun algoritmo que desconozco. En la web que estoy creando se ofrecen otros servicios como chat y necesitaria saber como puedo comparar la clave que el usuario introduce en un formulario externo a phpbb3 con la del foro, para que, de este modo, el usuario solo tenga que registrarse en el foro para poder acceder a los demas servicios de la web.

¿Alguna ayuda?
  #2 (permalink)  
Antiguo 01/12/2008, 12:19
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Respuesta: Comparar contraseña con la de phpbb3

Comprueba con qué método las encriptan....

Pregunta en los foros de phpbb3 o revisa documentación o mandales un mail...

Si quieres hacer pruebas rápidas haz un script que encripte una contraseña con varios sistemas y comparalas con la de la BDD a ver con cual coincide...

Aunque yo empezaría con MD5
  #3 (permalink)  
Antiguo 01/12/2008, 13:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Comparar contraseña con la de phpbb3

Tema trasladado a PHPBB.
  #4 (permalink)  
Antiguo 01/12/2008, 14:55
 
Fecha de Ingreso: febrero-2006
Mensajes: 103
Antigüedad: 18 años, 2 meses
Puntos: 1
Respuesta: Comparar contraseña con la de phpbb3

uhmm, de momento md5 no es, pues la clave ni se parece, estoy usando la version 3.0.3
  #5 (permalink)  
Antiguo 02/12/2008, 13:05
 
Fecha de Ingreso: febrero-2006
Mensajes: 103
Antigüedad: 18 años, 2 meses
Puntos: 1
Respuesta: Comparar contraseña con la de phpbb3

He encontrado alguna idea aqui: http://www.phpbb.com/community/viewt...?f=71&t=585387

pero no se como se aplica, no consigo hacer funcionar esos codigos.

Haber si alguien me puede guiar un poco con eso. Gracias.
  #6 (permalink)  
Antiguo 03/12/2008, 11:57
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Comparar contraseña con la de phpbb3

Simplemente una idea: podrías incluir el archivo includes/functions.php en tu programa, y luego utilizar la función phpbb_hash() que se mencionada en el hilo al que vinculaste.


Saludos.
  #7 (permalink)  
Antiguo 04/12/2008, 08:34
 
Fecha de Ingreso: febrero-2006
Mensajes: 103
Antigüedad: 18 años, 2 meses
Puntos: 1
Respuesta: Comparar contraseña con la de phpbb3

He probado esto, pero el resultado que da es en blanco:

<?php
include("phpBB3/includes/functions.php");
$clave = phpbb_hash("1234aa");
echo $clave;
?>
  #8 (permalink)  
Antiguo 04/12/2008, 08:38
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Comparar contraseña con la de phpbb3

¿En blanco? ¿qué quiere decir eso?
Habilitá que se muestren los errores, o revisá el archivo "error.log" de Apache (a veces en los servidores no se tiene acceso a este archivo)

Para habilitar los errores,
Código PHP:
error_reporting(E_ALL);
ini_set('display_errors'true); 

Saludos.
  #9 (permalink)  
Antiguo 07/12/2008, 10:01
 
Fecha de Ingreso: febrero-2006
Mensajes: 103
Antigüedad: 18 años, 2 meses
Puntos: 1
Respuesta: Comparar contraseña con la de phpbb3

Este es el codigo exacto que estoy utilizando y como resultado lo unico que muestra es "Mensaje 1". Si miro el codigo fuente de la pagina obtenida es "Mensaje 1<br>", no muestra la contraseña encriptada ni nada mas.

<?php
/* Estas dos lineas me habian dicho que era para que mostrara el error */
error_reporting(E_ALL);
ini_set('display_errors', true);

echo "Mensaje 1<br>";

include("phpBB3/includes/functions.php");

$passintroducida = phpbb_hash("1234aa");

echo "La clave es: ".$passintroducida;

echo "<br>Mensaje 2";

?>
  #10 (permalink)  
Antiguo 07/12/2008, 12:33
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Comparar contraseña con la de phpbb3

entonces seguramente el error está entre las líneas que deben mostrar los mensajes 1 y 2, solo que sigue sin mostrarlo.
Si lo estás probando en un servidor en internet, te recomiendo que lo pruebes en tu máquina, instalando el paquete WAMP o similares.
Seguramente lo que vos habilitás con "error reporting" está siendo deshabilitado en alguno de los archivos incluidos, por lo que lo único que podés hacer es ver el registro de errores de apache (archivo error.log). El problema es que en un servidor remoto rara vez tendrás acceso, por eso te sugiero que lo instales y pruebes de forma local.


Saludos
  #11 (permalink)  
Antiguo 07/12/2008, 13:28
 
Fecha de Ingreso: febrero-2006
Mensajes: 103
Antigüedad: 18 años, 2 meses
Puntos: 1
Respuesta: Comparar contraseña con la de phpbb3

Perdon, se me habia olvidado comentar que actualmente estoy trabajando sobre wampserver, voy a mirar el archivo error.log haber que es lo que pone. saludos.

Finalmente no aparece nada en los ficheros php_error.log ni apache_error.log que haga referencia un error producido a las 20:38, que es la hora a la que estoy probando. No se que es lo que puede estar pasando.

Última edición por Vj_DarkHunter; 07/12/2008 a las 13:38
  #12 (permalink)  
Antiguo 07/12/2008, 15:01
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Comparar contraseña con la de phpbb3

Muy extraño... Intentemos depurar más fino entonces
Agregá otro mensaje luego del include, inmediatamente antes de la llamada a la función.
Seguramente lo veas porque include() no genera un error fatal.

Luego te recomiendo ir al código de phpbb_hash y agregarle un mensajito también.
Y así continuar, en algún momento lograrás encontrar el punto exacto en el que falla.

Lamento no poder ayudarte más.


Saludos.
  #13 (permalink)  
Antiguo 07/12/2008, 15:33
 
Fecha de Ingreso: febrero-2006
Mensajes: 103
Antigüedad: 18 años, 2 meses
Puntos: 1
Respuesta: Comparar contraseña con la de phpbb3

Bien, he ido haciendo lo que has comentado. En este codigo, que es la funcion que supongo que encripta la clave he puesto el mensaje "Entro en la funcion" y este no aparece en la pagina, sale el anterior, que lo puse al comienzo del archivo, pero este ultimo no aparece. La funcion es la siguiente:

function phpbb_hash($password)
{
echo "Entro en la funcion<br>";
$itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmn opqrstuvwxyz';

$random_state = unique_id();
$random = '';
$count = 6;

if (($fh = @fopen('/dev/urandom', 'rb')))
{
$random = fread($fh, $count);
fclose($fh);
}

if (strlen($random) < $count)
{
$random = '';

for ($i = 0; $i < $count; $i += 16)
{
$random_state = md5(unique_id() . $random_state);
$random .= pack('H*', md5($random_state));
}
$random = substr($random, 0, $count);
}

$hash = _hash_crypt_private($password, _hash_gensalt_private($random, $itoa64), $itoa64);

if (strlen($hash) == 34)
{
return $hash;
}

return md5($password);
}
  #14 (permalink)  
Antiguo 07/12/2008, 15:58
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Comparar contraseña con la de phpbb3

entonces el problema es la forma en la que estás vinculando el archivo, no hay otra opción. Fijate si la ruta es correcta
  #15 (permalink)  
Antiguo 08/12/2008, 05:38
 
Fecha de Ingreso: febrero-2006
Mensajes: 103
Antigüedad: 18 años, 2 meses
Puntos: 1
Respuesta: Comparar contraseña con la de phpbb3

He conseguido averiguar lo siguiente. A continuacion muestro el comienzo del archivo functions.php:

<?php

/**
*
* @package phpBB3
* @version $Id: functions.php 9057 2008-11-10 16:24:18Z Kellanved $
* @copyright (c) 2005 phpBB Group
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/

/**
* @ignore
*/
if (!defined('IN_PHPBB'))
{
exit;
}

/* Common global functions */

Si pongo << echo "Abro el include<br>"; >> inmediatamente despues de <?php muestra el mensaje, en cambio si lo pongo justo al final, debajo de common global functions, no lo muestra. Si borro esa condicion if empiezan a salir unos cuantos de errores. Ademas, no se que es lo que hace esa condicion. A partir de ella, lo que es el resto del documento son funciones y funciones entre las cuales esta la que yo necesito usar.
  #16 (permalink)  
Antiguo 08/12/2008, 07:46
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Comparar contraseña con la de phpbb3

Vamos bien :)
Esta condición comprueba que estés dentro de PHPBB, seguramente para asegurarse de que las funciones que se definen tienen todos los recursos (variables, constantes, configuración, etc) que puedan necesitar.

Entonces, la opción lógica es definir la constante IN_PHPBB en tu archivo antes de incluir functions.php.

Quizás valga definirla sin valor
Código PHP:
define('IN_PHPBB'''); 
o quizás tengas que buscar el valor que debe tener (en el mismo archivo functions podés poner un "echo" de la constante mientras usás PHPBB).


saludos.
  #17 (permalink)  
Antiguo 10/12/2008, 14:15
 
Fecha de Ingreso: febrero-2006
Mensajes: 103
Antigüedad: 18 años, 2 meses
Puntos: 1
Respuesta: Comparar contraseña con la de phpbb3

Finalmente siento decir que abandono, despues de todo lo que he probado no consigo encriptar la contraseña igual que lo hace phpbb3.0.3 y no pienso complicarme mas la vida, voy a buscar otro foro prefabricado o como cambiar el sistema de encriptacion que trae por otro mas sencillo. Saludos y gracias por toda esta ayuda que me has proporcionado.
  #18 (permalink)  
Antiguo 05/11/2009, 03:15
 
Fecha de Ingreso: octubre-2006
Ubicación: España
Mensajes: 37
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Comparar contraseña con la de phpbb3

Hace tiempo estuve intentándolo y tampoco lo conseguí pero lo he vuelto a intentar y ahora sí que me funciona correctamente.
Necesitaba comparar la contraseña que me introducían con la almacenada en un foro phpbb3. Este es el resultado:

Código PHP:

    
// Poner vuestros valores
    
$localhost 'localhost';
    
$username 'username_db';
    
$password 'pass';
    
$db_name'name_db';

  
mysql_connect("$localhost""$username""$password")or die("cannot connect");
  
mysql_select_db("$db_name")or die("cannot select DB");

  
$username=$_POST["username"];
  
$password=$_POST["password"];

  
$username stripslashes($username);
  
$password stripslashes($password);
  
$username mysql_real_escape_string($username);
  
$password mysql_real_escape_string($password);

define('IN_PHPBB'true);
include(
"phpbb3/includes/functions.php"); // Poner vuestra ruta a este archivo

$sql "SELECT * FROM phpbb_users WHERE username='".$username."'";
$result mysql_query($sql);
$row mysql_fetch_array($result);
mysql_free_result($result);

if (!
$row)
{
   
// Usuario no existe
}

if (!
phpbb_check_hash((string) $password$row['user_password']))
{    
   echo 
"COMPARACION FALLIDA";
}
else
{     
    echo 
"COMPARACION CORRECTA";

Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 13:28.