Foros del Web » Programando para Internet » PHP »

Como recuperar password en sistema que gestiona cuentas de usuarios

Estas en el tema de Como recuperar password en sistema que gestiona cuentas de usuarios en el foro de PHP en Foros del Web. hola amigos espero me puedan ayudar tengo un sistema que gestiona cuentas de usuarios y guardo los password en una base de datos estos son ...

  #1 (permalink)  
Antiguo 06/12/2012, 09:19
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 12 años
Puntos: 6
Como recuperar password en sistema que gestiona cuentas de usuarios

hola amigos espero me puedan ayudar

tengo un sistema que gestiona cuentas de usuarios y guardo los password en una base de datos estos son almacenados en md5.

necesito una forma para recuperar la contraseña, que me aconsejan que sea una buena practica .
  #2 (permalink)  
Antiguo 06/12/2012, 09:24
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 17 años, 5 meses
Puntos: 839
Respuesta: Como recuperar password en sistema que gestiona cuentas de usuarios

La contraseña no se recupera, si el usuario la olvida se le crea una nueva temporal hasta que la cambie de nuevo.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 06/12/2012, 09:30
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 12 años
Puntos: 6
Respuesta: Como recuperar password en sistema que gestiona cuentas de usuarios

David gracias por responder

osea que le envio al correo del usuario una contraseña temporal?

que mas le envio?

lo obligo a que cambie la contraseña temporal?
  #4 (permalink)  
Antiguo 06/12/2012, 09:32
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 17 años, 5 meses
Puntos: 839
Respuesta: Como recuperar password en sistema que gestiona cuentas de usuarios

Sí, es una opción, enviarle la contraseña temporal.

O le envías un enlace con un hash único que le permita cambiar la contraseña.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 06/12/2012, 09:44
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 12 años
Puntos: 6
Respuesta: Como recuperar password en sistema que gestiona cuentas de usuarios

David gracias por responder , cual me recomiendas ?

tengo una duda en lo que me indicas
Cita:
O le envías un enlace con un hash único que le permita cambiar la contraseña.
que es hash unico?

osea que el usurio le da click olvide mi contraseña , el servidor envia un correo con un link (pero debe de ir las variables de session )

me confundo un poco , agradeceria un poco tu ayuda
  #6 (permalink)  
Antiguo 06/12/2012, 10:29
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 17 años, 5 meses
Puntos: 839
Respuesta: Como recuperar password en sistema que gestiona cuentas de usuarios

Enviar un hash es una buena opción. No necesitas enviar variables de sesión. Crea un hash aleatorio de suficiente longitud, asócialo al usuario en la base de datos, y envíalo por correo con un enlace a la página donde cambia la contraseña con el hash como parámetro; en esa página al verificar que el hash y el id de usuario son correctos permitir el cambio de contraseña.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 06/12/2012, 11:10
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 12 años
Puntos: 6
Respuesta: Como recuperar password en sistema que gestiona cuentas de usuarios

david puedes compartirme un manual

estuve buscando http://php.net/manual/es/book.hash.php y veo que me toca instalar algo

los usuario que manejo en mi aplicacion son usuario del motor base de datos y tengo una tabla donde guardo las contraseñas en una tabla con md5.

voy a describirte lo que haria y si estoy mal me corrigues

en el form donde debo de ingresar el usuario y la contraseña tengo un link que diga recuperar contraseña , abriria a form donde se ingrese el correo electronico y ahi no se que mas hacer

Última edición por Montes28; 06/12/2012 a las 12:39
  #8 (permalink)  
Antiguo 07/12/2012, 07:06
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 12 años
Puntos: 6
Respuesta: Como recuperar password en sistema que gestiona cuentas de usuarios

amigos esto es lo que tengo hasta el momento

tengo el formulario donde ingreso los datos para autenticarse , y tengo un link que dice recuperar contraseña el cual abre un form donde el usuario ingresa el correo electronico.
en la base de datos tengo un campo usu_clave character varying(32), en cual guardo una clave md5 a7e4b2cfc744476287bec4cceffc1f4f

quiero pedirles el favor de indicarme que mas debo de hacer , o si voy bien o mal?
  #9 (permalink)  
Antiguo 07/12/2012, 08:17
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 17 años, 5 meses
Puntos: 839
Respuesta: Como recuperar password en sistema que gestiona cuentas de usuarios

¿Ya intentaste generar la clave aleatoria que te permita cambiar la contraseña? Aunque puedes usar un sistema de hash (que es lo que te comenté al principio) como md5,sha, etc. una cadena aleatoria o ambos es válida también, lo importante es que sea lo suficientemenete larga; asocia esa clave al usuario en la base de datos y luego pasa el enlace:
http://pagina.com/cambiar_password.php?uid=20&h=aAc2fgZ-M5bXjt8-pIqWVba-d906Uy3-fFHwd8l
¿Se entiende mejor la idea?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #10 (permalink)  
Antiguo 07/12/2012, 14:44
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 12 años
Puntos: 6
Respuesta: Como recuperar password en sistema que gestiona cuentas de usuarios

David ya entiendo mas la idea

y queria preguntarte si en el correo estaria lo siguiente


recuperar contraseña

a peticion de usted se ha asiganado un nueva contraseña, utilice los siguientes datos para acceder al sistema

nuevos datos para acceso para http://pagina.com/cambiar_password.p...906Uy3-fFHwd8l

nombre Montes28
usuario Montes28
contraseña okajfakdjaskd


y que me recomiendas despues de darle click al enlace que esta en el correo ,

un formulario donde el usuario debe de ingresar y reconfirmar la contraseña y que despues abra el formulario de login

esta bien mi idea?
  #11 (permalink)  
Antiguo 07/12/2012, 15:15
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 17 años, 5 meses
Puntos: 839
Respuesta: Como recuperar password en sistema que gestiona cuentas de usuarios

Sería más bien que en ese enlace el usuario cambie la contraseña por una que pueda recordar.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #12 (permalink)  
Antiguo 11/12/2012, 14:36
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 12 años
Puntos: 6
Respuesta: Como recuperar password en sistema que gestiona cuentas de usuarios

David y amigos quiero que me recomienden una par de cosas

cuando el usuario de click sobre el enlace abra un formulario con solo dos campos (contraseña y confirmar contraseña) para cambiar la contraseña o que abra un formulario donde esta todo el perfil de usuario y se pueda modificar todo.

hasta le momento tengo implementado lo siguiente
el usuario se registra e ingresa una contraseña a esta le aplico md5 y la guardo en la base de datos.
en el formulario de login tengo un enlace (Olvide mi Contraseña)que abre un formulario donde el usuario escribe su correo electronico y el servidor mediante phpMailer envia al correo del usuario la contrase en md5.

que me recomiendan?
  #13 (permalink)  
Antiguo 11/12/2012, 15:32
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Como recuperar password en sistema que gestiona cuentas de usuarios

un formulario me parece mejor y una caducidad al link que envias por email

y antes de enviar el email un formulario donde el usuario introduzca el nombre de usuario y el email y si coinciden se envia si ha olvidado el usuario y por consiguiente no coinciden ¡ un form donde ponga el email y se envia el usuario

en el momento que coinciden se envia el email y se guarda la clave aleatoria en la bd para despues verificar , tambien se deberia guardar la hora de el envio y pasarlo tambien en el link , una vez el user haga clik en el link del email se verifica la hora y si pasa mas de 3 horas por ejemplo se le dice que vuelvo a pedir otro email que ese caduco si esta bien la hora se comprueba la pass del link con la pass de la bd y si esta bien muestras el form para que ponga su nueva contraseña

Última edición por webankenovi; 11/12/2012 a las 15:39
  #14 (permalink)  
Antiguo 11/12/2012, 16:19
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 12 años
Puntos: 6
Respuesta: Como recuperar password en sistema que gestiona cuentas de usuarios

webankenovi gracias por responder ,

tengo un par de preguntas

- explixame un poco lo que me indicas

-
Cita:
ambien se deberia guardar la hora de el envio y pasarlo tambien en el link
(por GET ) ?
Cita:
una vez el user haga clik en el link del email se verifica la hora y si pasa mas de 3 horas por ejemplo se le dice que vuelvo a pedir otro email que ese caduco
actualmente el usuario ingresa la contraseña y le aplico md5 y guardo en base de datos
lo estoy haciendo bien?
  #15 (permalink)  
Antiguo 11/12/2012, 16:45
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Como recuperar password en sistema que gestiona cuentas de usuarios

como no vas a dar la opcion de recuperar la contraseña antigua podemos usar un hash de una sola via de un sentido sin vuelta

te recomiendo : crypt en lugar de md5 muy inseguro

http://es.php.net/manual/es/function.crypt.php

una cosa que ami personalmente me gusta es poner una tabla con los campos user y pass , el pass hasheado con crypt y el usuario igualmente , y te preguntaras como muestro el usuario entonces ¿? otra tabla con los datos del usuario ,en el momento del registro guardamos el user hasheado en la tabla de login por ejemplo y el pass , el user sin hashear en la tabla de los datos

a tus preguntas:

obvia lo de guardar la hora en la bd (no es necesario)

en el momento de envio del email se manda en el link para su posterior comprobacion el time() justo en el momento del envio con time()

una vez el user haga clik en el link se envia a una pagina donde deberas verificar que el campo time no ha superado el tiempo que tu creas conveniente como para caducar

link

verify_account.php?pass=nvujnervnruineinrveriegnre oivns&time=time()

en el momento del clik

verificamos si existe pass y time

y ya verificamos la caducidad

Código PHP:
Ver original
  1. if($_GET['time'] )
  2.  
  3. $controlador = 3600; //sg  1 HORA DE CADUCIDAD  
  4. $controlador_final = $_GET['time'] + $controlador ;
  5. $time_actual= time();
  6.  
  7. if($controlador_final >= $time_actual)
  8. {
  9.  
  10. ahora verificamos el password con el de la bd
  11.  
  12. }else{
  13.  
  14. echo 'link caducado';
  15.  
  16. }


ademas de todo esto pondria una capa de seguridad extra con un token , ninguna medida esta de mas

Última edición por webankenovi; 11/12/2012 a las 16:54
  #16 (permalink)  
Antiguo 11/12/2012, 16:57
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 12 años
Puntos: 6
Respuesta: Como recuperar password en sistema que gestiona cuentas de usuarios

webankenovi gracias por responder de la siguiente manera estoy enviando el link pero no me funciona

Código PHP:
Ver original
  1. $mail->MsgHTML("<a href='http://192.168.102.9/volcanicos&time=time()'>".Fenomenos.Volcanicos."</a>"."<br>".$hash);

y una pregunta a que te refieres con

Cita:
ademas de todo esto pondria una capa de seguridad extra con un token , ninguna medida esta de mas
  #17 (permalink)  
Antiguo 11/12/2012, 17:11
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Como recuperar password en sistema que gestiona cuentas de usuarios

tienes que concatenarlo

Código PHP:
Ver original
  1. $mail->MsgHTML("<a href='http://192.168.102.9/volcanicos&time=".time()."'>".Fenomenos.Volcanicos."</a>"."<br>".$hash);

por un lado tienes el time para la caducidad
por otro lado el pass aleatorio
y por otro lado deberas tener una medida extra que garantize en la medida de lo posible que el user es quien dice ser:

aqui empleamos un token por ejemplo la cabecera user agent

$_SERVER['HTTP_USER_AGENT'] // esto no garantiza 100%100 seguro que el usuario es quien dice ser ten lo claro o incluso podria entrar desde otro navegador etc. y ser el usuario .... yo como medida de seguridad es buena bien implementada

link

verify_account.php?pass=nvujnervnruineinrveriegnre oivns&time=time()&do=crypt($_SERVER['HTTP_USER_AGENT'],'salt')

Código PHP:
Ver original
  1. if($_GET['do'] )
  2.      
  3.     if($_GET['do'] == crypt($_SERVER['HTTP_USER_AGENT'],'salt')
  4.     {
  5.      
  6.     ahora verificamos el password con el de la bd
  7.      
  8.     }else{
  9.      
  10.     echo 'para poder recuperar tu contraseña deberas acceder desde el mismo pc/dispositivo desde que se hizo la peticion del email por ejemplo para mi es una buena medida aunque hay formas de enviar cabeceras diferentes y saltar este bloqueo ';
  11.      
  12.     }

Última edición por webankenovi; 12/12/2012 a las 02:02
  #18 (permalink)  
Antiguo 12/12/2012, 14:09
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 12 años
Puntos: 6
Respuesta: Como recuperar password en sistema que gestiona cuentas de usuarios

webankenovi hice lo que me indicas , pero tengo un problema cuando paso el link tieme un tiempo de +5 horas

Código PHP:
Ver original
  1. $mail->MsgHTML("<a href='http://192.168.102.9/volcanicos&time=".time()."'>".Fenomenos.Volcanicos."</a>"."<br>".$hash);

para mi la solucion seria time()- 5 pero no logro hacerlo ?
Código PHP:
Ver original
  1. $mail->MsgHTML("<a href='http://192.168.102.9/volcanicos&time=".time()+-."'>".Fenomenos.Volcanicos."</a>"."<br>".$hash);


que estoy haciendo mal?
  #19 (permalink)  
Antiguo 12/12/2012, 14:14
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Como recuperar password en sistema que gestiona cuentas de usuarios

que quieres decir con que el time tiene un tiempo de +5 horas??

no se por que quieres hacer eso , solo tienes que pasar el time y nada mas time() justo en el momento del envio del email, ese sera el time que usaras despues para verificar en otra pagina tal y como te dije asi:
Código PHP:
Ver original
  1. if($_GET['time'] )
  2.      
  3.     $controlador = 3600; //sg  1 HORA DE CADUCIDAD  
  4.     $controlador_final = $_GET['time'] + $controlador ;
  5.     $time_actual= time();
  6.      
  7.     if($controlador_final >= $time_actual)
  8.     {
  9.      
  10.     ahora verificamos el password con el de la bd
  11.      
  12.     }else{
  13.      
  14.     echo 'link caducado';
  15.      
  16.     }

por casualidad lo probaste? , para poner 5 horas debes modificar el controlador , 3600sg es una hora pues 3600x5 seran 5 horas , en el controlador solo deberas poner sg para que funcione todo correctamente

si te fijas lo que hacemos es comprobar el time del email en el momento del envio con el time justo de la llegada del usuario a la pagina despues de hacer link , en tonces sumamos 1 2 o 5 horas al time del email y comprobamos con el actual si ya con los datos sumados es igual o menor al time actual , significa que el link ha pasado ya por lo menos mas de 5 horas


esto se puede hacer de otras muchas maneras pero yo te he mostrado una que cumple tu necesidad

prueba estas cosillas y nos cuentas

Última edición por webankenovi; 12/12/2012 a las 14:21
  #20 (permalink)  
Antiguo 12/12/2012, 14:29
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 12 años
Puntos: 6
Respuesta: Como recuperar password en sistema que gestiona cuentas de usuarios

webankenovi gracias por responder

acabo de enviar el link con time al correo y recibo 1355343594 que haciendo la conversion seria
Wed, 12 Dec 2012 20:19:54 GMT , mira que la hora no es la misma ya que donde estoy son las 03:24 por este lado ya habria un problema para compararlo?
  #21 (permalink)  
Antiguo 12/12/2012, 14:35
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Como recuperar password en sistema que gestiona cuentas de usuarios

no no hay problema por que despues al compararlo se compara el otro time tambien con 5 horas mas , tampoco es necesario convertirlo , pero eso ya a tu gusto como quieras hacer la verificacion.

para poner tu hora supongo que no tendras configurado el date.timezone

http://es.php.net/manual/es/datetime....date.timezone

zonas soportadas , no se cual es la tuya te pongo la lista

http://es.php.net/manual/es/timezones.php

ejecutalo en tiempo de ejecucion

ini_set('date.timezone','America/Guatemala');

logicamente antes del script

y cambiar el nombre de la variable time por otra que el user no sepa que puede ser

Código PHP:
Ver original
  1. $mail->MsgHTML("<a href='http://192.168.102.9/volcanicos&rel=".time()."'>".Fenomenos.Volcanicos."</a>"."<br>".$hash);
  2.  
  3.  
  4.     if($_GET['rel'] )
  5.          
  6.         $controlador = 3600; //sg  1 HORA DE CADUCIDAD  
  7.         $controlador_final = $_GET['rel'] + $controlador ;
  8.         $time_actual= time();
  9.          
  10.         if($controlador_final >= $time_actual)
  11.         {
  12.          
  13.         ahora verificamos el password con el de la bd
  14.          
  15.         }else{
  16.          
  17.         echo 'link caducado';
  18.          
  19.         }

Última edición por webankenovi; 12/12/2012 a las 14:43
  #22 (permalink)  
Antiguo 12/12/2012, 14:54
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 12 años
Puntos: 6
Respuesta: Como recuperar password en sistema que gestiona cuentas de usuarios

hola en el servidor tengo (lo probe con phpinfo()), estoy en Colombia , no entiendo porque no me pone la hora actual de colombia.

date
date/time support enabled
Timezone Database Version 0.system
Timezone Database internal
Default timezone America/Bogota
  #23 (permalink)  
Antiguo 12/12/2012, 14:56
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Como recuperar password en sistema que gestiona cuentas de usuarios

bueno eso ahora no es problema vamos con lo que vamos , lo conseguiste ??
  #24 (permalink)  
Antiguo 12/12/2012, 14:58
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 12 años
Puntos: 6
Respuesta: Como recuperar password en sistema que gestiona cuentas de usuarios

webankenovi requiero colocar la hora actual.
  #25 (permalink)  
Antiguo 12/12/2012, 14:59
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Como recuperar password en sistema que gestiona cuentas de usuarios

ejecutaste lo que te dije aunque sea solamente por verificar ???

haz esta prueba OK

Código PHP:
Ver original
  1. Ini_set('date.timezone','America/Bogota');
  2.  
  3. print_r(date('H:i:s'));
  #26 (permalink)  
Antiguo 12/12/2012, 15:02
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 12 años
Puntos: 6
Respuesta: Como recuperar password en sistema que gestiona cuentas de usuarios

webankenovi requiero colocar la hora actual.(requerimiento del jefe)


lo estoy enviando asi , con date si me imprime 15:56 , pero con time 1355345785
Código PHP:
Ver original
  1. $mail->MsgHTML("<a href='http://192.168.102.9/volcanicos&time=".time()."'>".Fenomenos.Volcanicos."</a>"."<br>".$hash.date("G:i"));
  #27 (permalink)  
Antiguo 12/12/2012, 15:06
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Como recuperar password en sistema que gestiona cuentas de usuarios

ok esta todo correcto amigo , el campo time no es necesario hacer la conversion a fecha con los datos 1355345785 es suficiente , y como ya verificaste la hora es la correcta con date , si quieres pues restamos 5 horas a la funcion time() e igualmente en la verificacion

Código PHP:
Ver original
  1. $var = time() - 18000;
  2.  
  3. $mail->MsgHTML("<a href='http://192.168.102.9/volcanicos&time=".$var."'>".Fenomenos.Volcanicos."</a>"."<br>".$hash.date("G:i"));
  #28 (permalink)  
Antiguo 12/12/2012, 15:08
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 12 años
Puntos: 6
Respuesta: Como recuperar password en sistema que gestiona cuentas de usuarios

ya comprobe que la fecha y hora fueran igual con lo siguiente


Código PHP:
Ver original
  1. $mail->MsgHTML("<a href='http://192.168.102.9/volcanicos&time=".time()."'>".Fenomenos.Volcanicos."</a>"."<br>".date('G:i', time()));
  #29 (permalink)  
Antiguo 12/12/2012, 15:10
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Como recuperar password en sistema que gestiona cuentas de usuarios

te estas liando un poco haber:

como te digo si tu hora es la correcta con date no le des mas vueltas esta todo correcto , con la funcion time() que estamos usando no es necesario sacar la hora ni la fecha (ni la funcion te la da ,el retorno son segundos ) para lo que queremos hacer , time() devuelve la fecha Unix actual y con esto nos vale

http://es.php.net/manual/es/function.time.php

tambien puedes olvidarte de time() y hacerlo con date etc.... yo te dije time por hacerlo mas facil

Última edición por webankenovi; 12/12/2012 a las 15:25
  #30 (permalink)  
Antiguo 14/12/2012, 00:08
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 12 años
Puntos: 6
Respuesta: Como recuperar password en sistema que gestiona cuentas de usuarios

webankenovi estoy implementando lo que me indicaste

pero tengo un par de preguntas

1. estoy enviando link el cual funciona bien pero queria preguntarte si ese link debe de ser como lo tengo o deberia de ser una cadena que el usuario lea una cadena larga (http://localhost/volcanicos/index.ph...ca089e752184a1)

Código Javascript:
Ver original
  1. $mail->MsgHTML("<a href='http://localhost/volcanicos/index.php?controller=user_&accion=cambiar_contrasena&time=".time()."&id=".$hash."'>".Recuperar.Contraseña."</a>"."<br>");

2. en el formulario donde el usuario va a cambiar la contraseña es bueno que solo tenga dos campos uno para ingresar la contraseña y otro para confirmarla ? cuando la cambie debe de abrir el formulario login o ya debe de estar autentido y en el menu inicial?

Etiquetas: cuentas, password, sistema, usuarios
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:49.