Jump to content
  • 0
Sign in to follow this  
erijhon

Encriptación MD5 de las contraseñas

Question

Buenos días!!

 

Os quería preguntar si es frecuente usar la encirptación MD5 de las contraseñas para el login.

No encuentro mucha información, y si busco "md5" en el buscador del foro, no me sale ningún hilo hablando sobre esto.

 

De hecho, el único que he encontrado es el siguiente, y no recuerdo ni como lo hice:

 

http://herc.ws/board/topic/2924-how-to-turn-on-md5-for-my-server/

 

No entiendo muy bien cómo se debe hacer.

Parece que den cosas por sentadas.

 

Alguien sabe algo al respecto?

 

MUCHAS GRACIAS!

Share this post


Link to post
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Vaya, pues al final te referías a lo que pensaba yo que no buscabas.

 

Aunque precisamente es eso, el client hash check un mecanismo para evitar modificaciones de cliente en el servidor. Si se activa (client_hash_check: on), puedes especificar un hash para cliente según el group_id de cada usuario (recuerda que se creaban en conf/groups.conf y se asignan en el campo `group_id` de la tabla `login` en la base de datos).

 

Nunca he usado esa característica, pero el login server puede obtener el hash MD5 del cliente y eso es lo que utiliza para hacer esa comprobación. Lo que tienes que hacer para configurarlo es crear tu programa cliente (el .exe que diffeas, no ningún patcher ni nada) como gustes, obtener el hash del mismo y usarlo. Los que aparecen ahí son hashes de ejemplo que deberías cambiar por los tuyos.

 

¿Y cómo obtener el hash MD5 de un cliente? Pues en el pequeño manual que hay en la documentación (en inglés) sugieren los siguientes programas según el sistema operativo:

  • El comando de consola md5sum para Linux;
  • El comando de consola md5 para Mac OS;
  • El programa WinMD5 para Windows (no, en Windows no hay utilidad del sistema para eso...);
  • Mirar el hash MD5 en el archivo client_filename.exe.secure.txt si se ha diffeado el cliente con NEMO (que no sabría decírtelo porque no lo he usado nunca);
  • O bien (este lo sugiero yo si estás en Windows, no tienes NEMO y no quieres descargar nada) sube el archivo a alguna web como por ejemplo http://onlinemd5.com/ y te dirá el valor del hash MD5 del cliente.

 

Por último, cada entrada de client_hash es válida para el group_id de ese número o cualquier otro superior: por ejemplo si tienes un client_hash para group_id 0, otro para group_id 40 y otro para group_id 99, cualquier usuario que tenga un group_id de 99 podrá conectar al servidor con cualquiera de los 3 clientes designados.

 

Y ya está, creo que no me he dejado nada importante.

 

¡Un saludo!

Share this post


Link to post
Share on other sites
  • 0

Hola, buenas.
 
Creo que tienes un pequeño lío:
 
Según comentas, lo que quieres es encriptar las contraseñas del servidor con MD5, opción que está disponible por defecto en el emulador. Puedes hacerlo de forma sencilla en conf/login-server.conf, cambiando el siguiente parámetro a yes.

// Store passwords as MD5 hashes instead of plaintext ?// NOTE: Will not work with clients that use <passwordencrypt>use_MD5_passwords: no

Y, en caso de tener un servidor ya en uso, ejecutar una única vez la siguiente consulta SQL en la base de datos principal del servidor (el archivo sql-files/tools/convert_passwords.sql):

-- Convert passwords to MD5 HashUPDATE `login` SET `user_pass`=MD5(`user_pass`);

 

El motivo de usar la consulta una única vez es porque el algoritmo MD5 no es reversible (o sea, que no hay vuelta atrás si decides no utilizarlo). Siendo honestos (y contra toda buena práctica) no se usa casi nunca en ningún servidor en línea por muchos motivos, haciendo que cualquier administrador malintencionado pueda tener acceso sencillo a las contraseñas y sus respectivas cuentas (o incluso cuentas en otros servicios en caso de usuarios confiados) ya que se guardan tal cual en la base de datos (campo `user_pass` de la tabla `login` como puede verse arriba, pero aunque estén encriptadas cualquier persona con luces puede aún así sumplantar tu identidad). Hay gente que no lo activa por mera comodidad aunque no miraría tus contraseñas, y aún así la seguridad del algoritmo MD5 está muy discutida desde hace años en caso de ataque a tu base de datos.

 

Por tanto, desconozco cómo de bueno sería usarlo y yo personalmente no la usaría debido a que aporta una seguridad prácticamente nula aunque usarlo fuese una buena práctica. Preferiría ir del lado honesto y simplemente pedir a los usuarios en el formulario de registro que utilicen una contraseña distinta de la que tengan para cualquier otro servicio. Si buscas algo más seguro y tienes algo de conocimientos y tiempo, intentaría implementar otros algoritmos criptográficos como más seguros y pediría que se utilicen en este software. Por desgracia, ni eAthena ni rAthena ni Hercules tienen un modo seguro para almacenar contraseñas de los usuarios aún.

 


 

Por otro lado, en el tema que has señalado, de lo que se habla es de un método para evitar modificaciones del cliente, cuyo funcionamiento viene más o menos explicado en el archivo aunque no me importaría comentarlo si necesitas un poco más de información.

Share this post


Link to post
Share on other sites
  • 0

Buenas, Jabote!!

Gracias por responder tan rápido!!

 

Bien, ya suponía que la respuesta sobre el md5 iba a ser lo que comentas.

Me quedó claro lo de:

// Store passwords as MD5 hashes instead of plaintext ?// NOTE: Will not work with clients that use <passwordencrypt>use_MD5_passwords: no 

 

Mi duda iba más orientada a lo de:

// Client MD5 hash check// If turned on, the login server will check if the client's hash matches// the value below, and will not connect tampered clients.// Note: see docmd5_hashcheck.txt for more details.client_hash_check: off// Client MD5 hashes// A player can login with a client hash at or below the account group_id.// Format: group_id, hashclient_hash: 0, 113e195e6c051bb1cfb12a644bb084c5client_hash: 99, cb1ea78023d337c38e8ba5124e2338ae 

 

No entiendo cómo se hashea el cliente y de dónde sacaría esos parametros para client_hash 0 y 99.

De todos modos, no lo necesito. Opino lo mismo sobre el md5, y casi que prefiero comprometerme a no mirar nada.

 

Tenía intención de mirar otro tipo de algoritmos, dado que ya sabía de la facilidad de abuso de los md5, pero tampoco sabría qué otros mirar o si hay alguna guía que explique qué hacer para que el cliente los reconozca.

 

Sobre el último punto que comentas:

 

Por otro lado, en el tema que has señalado, de lo que se habla es de
un método para evitar modificaciones del cliente, cuyo funcionamiento
viene más o menos explicado en el archivo aunque no me importaría
comentarlo si necesitas un poco más de información.

 

A qué te refieres?

 

Gracias!!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.