Logearse con USER y PASS en Moodle con el PASS sacado de la BD de moodle (ya en md5)

Logearse con USER y PASS en Moodle con el PASS sacado de la BD de moodle (ya en md5)

de Jorge González -
Número de respuestas: 2

Bueno espero acertar, estado como un dia mirando todo este tema y no encuentro la solucion.

Descripcción del problema.

Desde una pagina web creada por mi, dispongo de un FORM con los datos usuario y password que envio a la pagina de login. Todo esto esta probado y me funciona.

Ahora bien, quiero pasar el password ya encriptado a MD5. Realmente es el password tal cual esta en la tabla mdl_user.

Con mi casi nulo conocimiento de PHP (me enseñaron ASP y laboralmente me dedicado a C#) toque algunas de moodlelib.php y parecia que funcionaba pero no...

La funcion que toque fue:

function password_is_legacy_hash($password) 


Alguien sabria darme nociones de esto? donde mirar? etc... MUCHAS GRACIAS!

Promedio de valoraciones: -
En respuesta a Jorge González

Re: Logearse con USER y PASS en Moodle con el PASS sacado de la BD de moodle (ya en md5)

de Jorge González -

Bueno, encontrado esto https://moodle.org/mod/forum/discuss.php?d=261714

Que me parece que puede servirme. Si consiguiera entenderlo.

¿alguein para decirme si voy bien?


GRACIAS!

En respuesta a Jorge González

Re: Logearse con USER y PASS en Moodle con el PASS sacado de la BD de moodle (ya en md5)

de Jorge González -

Ale, creo que ya lo tengo hecho. Seguro que hay otras formas, pero esta es la mas facil. Aunque tendre que tener cuidado con las actualizaciones.

Por que supongo que no me cargo ninguna seguridad con este cambio, ¿no?

Fichero lib/password_compact/lib/password.php


function password_verify($password, $hash) {

//MI AÑADIDO

if ($password === $hash)

{

return true;

}

//fin de MI AÑADIDO

            if (!function_exists('crypt')) {

                trigger_error("Crypt must be loaded for password_verify to function", E_USER_WARNING);

                return false;

            }

            $ret = crypt($password, $hash);

            if (!is_string($ret) || PasswordCompat\binary\_strlen($ret) != PasswordCompat\binary\_strlen($hash) || PasswordCompat\binary\_strlen($ret) <= 13) {

                return false;

            }


            $status = 0;

            for ($i = 0; $i < PasswordCompat\binary\_strlen($ret); $i++) {

                $status |= (ord($ret[$i]) ^ ord($hash[$i]));

            }


            return $status === 0;

        }