Logeo en AMS con encriptación Password Hasher

Esta sección esta especialmente diseñada para todos aquellos usuarios que estés desarrollando plugins o aplicaciones y quieran ayuda para dichos plugins o aplicaciones.
Hola ,que tal, soy yo de nuevo, Daniel P Z, unos me odian... otros me aman, otros ni me conocen... Buscando en la red mas de 2 noches seguidas encontre varios articulso en la web en donde decian que la encriptación de usuarios para el logeo y registro de Wordpress no era MD5 como yo crei.... asi que me puse a investigar, y encontre esto:

http://www.darioferrer.com/wordpress/ha ... s-316.html

Ahora, mi buen amigo, jashds ,,me a estado ayudando a hacer mi sistema de logeo para poder hacer una página de logeo con espacio para user y password y el boton de "entrar" , osea, algo convencional... todo ba bien, pero no funciona, aca les dejo el app

http://www.megaupload.com/?d=GNLVGF83

Pero obviamente no funca... mmmm.... ya que eso es en MD5 y yo bien creido que el wordpress utilizaba MD5 para la encriptacion de la password.. q notasas...

La verdadera encriptación qu e utiliza, como el link que puse primero dice, se llama Password Hasher, mi duda es el AMS resistiria, eso,, y como seria posible integrarlo al codigo, tanto el app, como el php??

Gracias...
For example

UserName="abood"
Password="12345"



HIDE: ON
Hidebb Message Hidden Description
I dont understund your post , friend abood1987,,, 
hasher me interesa, aber aber
me interesa el tema
No puedo abrir el link, me dice que la página no existe o esta caida. De todas formas te diré que el MD5 es un Password Hasher, porque tu no estás encriptando el password, estas haciéndole un Hash MD5 y no puedes desencriptarlo para comprobar si es bueno, tienes que compararlo con otro previamente hecho.

Necesito que me des un password en texto plano y tal y como sale en la base de datos, así puedo hacer pruebas y compararlo.

por ejemplo:

Código: Seleccionar todo

plano = passwordfalso
Basedatos = $STGhao4Gohjd$
bravo
Entre por PHPadmin

El user escogido es : dapize
su clave es : danielpz

en hask o md5 o nose que pero me sale esto: $P$BmjPQIpJO/LWsS6070QfzdAljPgDnA1

Entonces, como seria? xD
Lo estudiaré, pero me tienes que dar tiempo ya que de lunes a viernes estudio y no puedo mirarlo, además de que tengo algún problema con el VS2010 que es lo que iba a usar para probar.

He visto un método pero es con un PHP en el servidor, a lo mejor puedo modificar el PHP y entonces sería mandarle los datos con el AMS, comprobar si son correctos y responder diciendo si o no.
Daniel_Lechu escribió:Lo estudiaré, pero me tienes que dar tiempo ya que de lunes a viernes estudio y no puedo mirarlo, además de que tengo algún problema con el VS2010 que es lo que iba a usar para probar.

He visto un método pero es con un PHP en el servidor, a lo mejor puedo modificar el PHP y entonces sería mandarle los datos con el AMS, comprobar si son correctos y responder diciendo si o no.
Perfecto man yo te espero, muchas gracias por ayudame en esto me servira bastante en mi proyecto y me gustaria aprender mas tanto de php como de ams,
Bueno, he mirado y necesito que pruebes una cosa ya que yo no tengo el wordpress y no puedo terminar de probarlo.

Lo tienes que poner en la carpeta raíz del wordpress y lo tendrías que ejecutarlo poniendo:
url+ams_login.php?user=usuario&password=password

Ejemplo:

Código: Seleccionar todo

http://www.tupagina.com/ams_login.php?user=dapize&pass=danielpz
y si es correcto devuelve "logged", en caso contrario "bad login" y si falta el usuario o el pass devuelve "You need the username & password".

El código está sacado de:

Código: Seleccionar todo

http://www.cedricve.me/2011/07/18/how-to-make-use-of-wordpress-passwords/
y modificado por mi.

El código es:
<?php

include_once("wp-config.php");
include_once("wp-includes/class-phpass.php");

$username = mysql_escape_string($_GET['user']);
$password = mysql_escape_string($_GET['pass']);

if (($username) && ($password)){

$query = mysql_query("SELECT * FROM ".$table_prefix."users WHERE user_login = '$username'");
$row = mysql_fetch_array($query);

$wp_hasher = new PasswordHash(8, TRUE);

$password_hashed = $row['user_pass'];


if($wp_hasher->CheckPassword($password, $password_hashed) || $password_hashed == md5($password)) {
$_SESSION["logged_in"] = true;
echo 'logged';
}
else {
echo 'bad login';
}
} else {
echo 'You need the username & password';
}
?>


y tienes que guardarlo en un archivo de texto llamado por ejemplo ams_login.php

pruébalo y me comentas si te funciona.
Saludos!!
:ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah: :ohyeah:
Muchisimas gracias man, funciona a la perfeccion, entonces, lo que me faltaria hacer es implementarlo al AMs, con otro php, o simplemente las mismas claves del ams??, osea, http test y cosas por el estilo..

Lo que deseo es aserlo sumamente seguro,, por eso te pregunto, que me recomendarias...
Te valdría con hacer un HTTP.Submit con los datos y después comparar la respuesta, por ejemplo:

local login = {}
login.user = "dapize";
login.pass= "danielpz";
local respuesta = HTTP.Submit("http://www.miweb.com/ams_login.php", login, SUBMITWEB_GET, 20, 80, nil, nil);
if respuesta == "logged" then
Dialog.Message("Correcto", "Login correcto");
elseif respuesta == "bad login" then
Dialog.Message("Error", "El nombre de usuario o el pass es incorrecto");
elseif respuesta == "You need the username & password" then
Dialog.Message("Error", "Necesitas nombre de usuario y pass para porder loguearte"
end


Tendrías que probarlo primero para comprobar que funciona ya que no se si a lo mejor tu hosting manda cabeceras y no sería igual, habría que buscar el texto en vez de compararlo.

Para hacerlo seguro lo mismo se puede hacer con https, en vez de http pero no se si está implementado en tu server.
También puedes encriptar el user y el pass con una clave y después desencriptarlas con el php, lo que pasa es que de desencriptar con php no puedo ayudarte.
Muchisisimas gracias man, por esta ayuda que me estas brindando me e tirado amanecida tras amanecida tratando de buscar la forma de aser eso, y por fin me la brindas, aunque me mataba leyendo el manual que por cierto es recontra extenso del AMS, no encontraba la forma de aserlo, en php estoy un poco desaliñado, pero me pondre a investigar mas, y probare eso del https, tienes razon, seria mas seguro asi...

Te comento luego cualquier cosa, otra vez gracias!!!
De nada ;) y me alegro de que te sirva de algo.
Yo la verdad es que de PHP no tengo ni idea, pero el toquetear el lua ha hecho que sea capaz de más menos entender las partes y el funcionamiento, y así puedo quitar y modificar algunas a mi gusto (aunque algunas son demasiado complejas :lol:).

Lo del https o encriptar los datos es más que nada porque el AMS manda el login en texto plano, y es el servidor el que lo encripta en MD5+salting (no he logrado entender lo que hace) y lo compara con el login que hay en la base de datos, entonces si alguien está espiando la conexión puede ver los datos.

Saludos y coméntame con lo que sea.
Daniel_Lechu escribió:De nada ;) y me alegro de que te sirva de algo.......
entonces si alguien está espiando la conexión puede ver los datos.

Saludos y coméntame con lo que sea.
..

Exacto, justamente eso estaba pensando, si alguien esnifea la red, pucha por ejemplo en un siver, solo basta con poner el IP de la PC, y sas!, obtiene el user y la clave, por eso hay q encriptarla, pero aca me biene otra duda... ahora,, abria la posibilidad que con el AMS o añadiendole un DLL o algo, que encripte de una ves en MD5+salting y luego lo compare a traves del php con los datos del servidor???, dado que he chekeado el AMS, y solo encripta en MD5, BASE64, Blowfish y Rot13 pero nada de MD5+salting, ahi si seria casi imposible desifrar la clave y el user por mas que la esnifeen, pero demonios! soy ta extremista en la seguridad, que me surge otra duda,

Ya bueno, logro encriptar el user y la clave en MD5+salting y la mando al servidor, y ya todo bien, pero si alguien snifea la red, y obtiene el user y la clave ya encriptada, no podria usar esos datos para logearse en una cuenta q no sea suya??????,

Yo pienso el problema antes que surja, dado que pienso que otros lo pensarán y traten de hacer eso, asi pienso antes que ellos piensen y les gano pensando antes xDDD (que trabalenguas e dicho xD) :hypno: :hypno: :demo:

Ahi las dudas...
Creo que si hay un modulo C++ para hacer el MD5+Salting pero mis conocimientos de C++ son muy limitados y no soy capaz de portarlo, además de que me falla el VS 2010 no se porqué... me da errores en los archivos del SDK del AMS cosa que antes no daba y que al no ser hechos por mi es imposible que sea por mi culpa...

Respecto a lo de loguearse esnifando el MD5+Salting, depende, directamente en la web no porque el wordpress haría el MD5+Salting otra vez y daría error, pero no se si hay otros métodos de logueo aparte de la página.
Daniel_Lechu escribió: Respecto a lo de loguearse esnifando el MD5+Salting, depende, directamente en la web no porque el wordpress haría el MD5+Salting otra vez y daría error, pero no se si hay otros métodos de logueo aparte de la página.
Tienes mucha razon luego de 5 segundos de aver apretado el boton "enviar" en la respuesta anterior me respondi a mi mismo, justamente lo q acabas de decir, JAJAJAJAJ xD,

Muchisimas gracias por tu ayuda man,, solo una ultima duda,,,

Al logearme osea poner mi user en el imput 1, y mi passs en el imput 2 y apretar el boton "ENTRAR", abeces cabe la duda de que la persona que digita esos datos deje un espacio, para eliminar los espacios en blanco creo q abia un codigo sensillo q ceon un dia cito, pero toy navegando por el foro y no lo encuentro :(, podrias fasilitarmelo por favor,, si encuentras un manual o un texto en pdf con esas cosillas simples pero super utiles pasamelo por favor..., lo estudiaria toda la noche para aprendermelo :)
Bueno, ahora mismo no puedo porque estoy en el curro y no tengo tiempo pero se pueden eliminar a lo mejor los espacios del principio y el final, ya que si eliminas todos y el pass tiene alguno en el medio daría error, ej: Pass="Pass Word".

Otra cosa que se me olvidó, con un snifer como dices tienes las mismas posibilidades de coger el MD5+salting desde el AMS que desde el botón enviar desde la pagina web (por eso inventaron el Salting, porque el MD5 se quedaba corto), por lo que la seguridad no se podría mejorar en ese aspecto (una vez conseguido que el AMS mande el MD5+Salting).

Saludos.
Daniel_Lechu escribió:Bueno, ahora mismo no puedo porque estoy en el curro y no tengo tiempo pero se pueden eliminar a lo mejor los espacios del principio y el final, ya que si eliminas todos y el pass tiene alguno en el medio daría error, ej: Pass="Pass Word".
Saludos.
Ok man no hay problema, exactamente nose que es un "curro", será carro supongo o algo,, , esque soy de Perú y no entiendo bien xD, pero no hay problema yo te espero... :)

Te estoy eternamente agradecido y dime, si necesitas alguna ayuda de mi o pezeta puedes mandarla o preguntarla en su blog, http://www.danielpz.com/blog