Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-05-2007
Wellnic Wellnic is offline
Miembro
 
Registrado: mar 2007
Posts: 68
Poder: 18
Wellnic Va por buen camino
Talking Generador de contraseñas

Hola,
Se me ha ocurrido hacer el siguiente procedimiento para generar contraseñas prácticamente imposibles de crackear (?) a partir de palabras o frases comunes:

Código Delphi [-]
procedure TForm1.Button6Click(Sender: TObject);
Var c, hs, sumhs: String;
      x, ch: Integer;
 
begin
c:= Edit1.Text; //cadena de caracteres inicial
//RxSpinEdit3.AsInteger es el número de transformaciones de la contraseña
For x:= 1 To RxSpinEdit3.AsInteger Do
  Begin
  hs:= MD5DigestToStr(MD5String(c));
 
//en sumsh se van almacenando y desplazando los sucesivos hash generados:
//con un tamaño máximo para no provocar un desbarajuste:
  sumhs:= Copy(hs+sumhs, 1, 666);
 
//se generan los correspondientes carcteres ASCII de cada hash generado...:
//(un hash es un valor hexadecimal)
  c:='';
  For ch:=1 To Length(sumhs) Div 2 Do c:= c+Chr(StrToInt('$'+Copy(sumhs, (2*ch)-1, 2)));
//...de los que se obtendrá a su vez un nuevo hash en cada ciclo del bucle
  End;
 
c:= Base64EncodeStr(c); x:= Length(c);//resultado final en Base64
While c[x]= '=' Do Dec(x); //quita los posibles '=' del final
Edit2.Text:= Copy(c, 1, x);
end;

Como se ve, la idea es ir deformando una palabra o frase sencilla una y otra vez mediante la función MD5 (o cualquier otra). En principio, cualquier programa crackeador se verá obligado a perder el tiempo siguiendo este procedimiento para cada una de las ingentes cantidades de combinaciones de caracteres, o bien hacerlo por fuerza bruta, y como este algoritmo (?) genera contraseñas de hasta 444 caracteres como si nada...

Última edición por dec fecha: 01-05-2007 a las 22:59:48.
Responder Con Cita
  #2  
Antiguo 02-05-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.339
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Hola y gracias por el aporte.
Estaría bien (si te apetece) que lo subieras a los trucos del Clucb Delphi; Así quedaría ahí para poder consultarlo.

Otra cosas (tanto si lo subes como si no) estaría bien que comentas de dónde salen las funciones referentes a MD5;
¿En alguna Unit? ¿Paquete externo? ¿Versión de Delphi que la incluye?
Ya que si alguien intenta compilar este código (como he inentado hacerlo yo en Delphi 6) le dará el mismo error que a mi (que no encuentra esas funciones).

Un saludo y gracias de nuevo por este código.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 02-05-2007
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 22
Bicho Va por buen camino
Hola,

la verdad es que tiene muy buena pinta. Muchas gracias por el aporte.

Cita:
Empezado por Neftali
Otra cosas (tanto si lo subes como si no) estaría bien que comentas de dónde salen las funciones referentes a MD5;
¿En alguna Unit? ¿Paquete externo? ¿Versión de Delphi que la incluye?
Ya que si alguien intenta compilar este código (como he inentado hacerlo yo en Delphi 6) le dará el mismo error que a mi (que no encuentra esas funciones).
Buscando en los enlaces que ha puesto Wellnic en su código nos aparece esta dirección http://www.killa.com.ar/bk/
Y yendo un poco más allá llegamos al tema en cuestión
http://www.killa.com.ar/bk/http:/www...riptacion/Allí explica de donde saca las funciones de MD5
y en el segundo enlace www.cityinthesky.co.uk/files/dcpcrypt2.zip, estan los fuentes con la función de Base64EncodeStr.

Espero sirva de aclaración. (Si al final no voy a ser tan vago )

Saludos
Responder Con Cita
  #4  
Antiguo 02-05-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.339
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Bicho
Espero sirva de aclaración.
Sirve, sirve,...
La verdad es que copié/pegué y no me fijé que estaban los links.

Gracias.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 02-05-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Hola Wellnic,

solo un par de comentarios. Lo primero que, según tengo entendido, la fortaleza de un algoritmo de cifrado, como md5, se debe al propio algoritmo y no al numero de veces que este se repite. ¿No seria entonces mas fácil e igual de seguro usar un solo md5?, a esa cuestión nos tendría que responder un matemático, yo no me veo cualificado. Aunque se me ocurre que el motivo sea obtener claves de mas de 16 bytes de longitud y no aumentar la seguridad, si es así, ignora mi ultimo comentario

Por otro lado veo que primero calculas el md5 a partir de un string (MD5String), y lo conviertes es un string (MD5DigestToStr), para luego hacer el paso inverso (c:= c+Chr(StrToInt('$'+Copy(sumhs, (2*ch)-1, 2)));) ¿No nos podríamos ahorrar este paso?

La idea es interesante. Si necesitas de una función para calcular el hash md5 que puedas adaptar a tus necesidades puedes usar esta (Hashes.zip):

http://www.clubdelphi.com/foros/show...22&postcount=4

Es sencilla así que puedes modificarla fácilmente.
Responder Con Cita
  #6  
Antiguo 02-05-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Cita:
Empezado por seoane
(c:= c+Chr(StrToInt('$'+Copy(sumhs, (2*ch)-1, 2)));) ¿No nos podríamos ahorrar este paso?
¿la cuestión no era marear al cracker? ... no sé yo no he mirado mucho el código.

SAludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Contraseñas erick_jesus Conexión con bases de datos 2 29-05-2006 18:48:37
Contraseñas en Access diegolf Conexión con bases de datos 5 30-12-2004 10:58:31
Guardar contraseñas acrophet Conexión con bases de datos 3 25-11-2004 16:54:07
Contraseñas y Paradox Letty Conexión con bases de datos 1 01-12-2003 14:48:06
contraseñas y password alfgonvar Conexión con bases de datos 1 02-10-2003 15:31:32


La franja horaria es GMT +2. Ahora son las 03:31:40.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi