Saltar al contenido

¿Cómo determinar qué tipo de codificación/cifrado se ha utilizado?

Haz todo lo posible por interpretar el código correctamente antes de usarlo a tu trabajo si ttienes algo que aportar puedes comentarlo.

Solución:

tu ejemplo string (WeJcFMQ/8+8QJ/w0hHh+0g==) es la codificación Base64 para una secuencia de 16 bytes, que no parece un ASCII o UTF-8 significativo. Si este es un valor almacenado para la contraseña verificación (es decir, no es realmente una contraseña “cifrada”, sino una contraseña “hash”), entonces este es probablemente el resultado de una función hash calculada sobre la contraseña; la única función hash clásica con una salida de 128 bits es MD5. Pero podría tratarse de cualquier cosa.

La forma “normal” de saberlo es mirar el código de la aplicación. El código de la aplicación se encarna de una manera tangible y voluminosa (archivos ejecutables en un servidor, código fuente en algún lugar…) que no está ni puede estar tan protegido como un secreto. key pueden. Entonces, la ingeniería inversa es el “camino a seguir”.

Salvo la ingeniería inversa, puede hacer algunos experimentos para tratar de hacer conjeturas fundamentadas:

  • Si el mismo usuario “cambia” su contraseña pero reutiliza la misma, ¿cambia el valor almacenado? En caso afirmativo, entonces parte del valor es probablemente una “sal” aleatoria o IV (suponiendo un cifrado simétrico).
  • Suponiendo que el valor es determinista a partir de la contraseña de un usuario determinado, si dos usuarios eligen la misma contraseña, ¿da como resultado el mismo valor almacenado? Si no, entonces el nombre de usuario es probablemente parte del cálculo. Es posible que desee intentar calcular MD5 (“nombre de usuario: contraseña”) u otras variantes similares, para ver si obtiene una coincidencia.
  • ¿La longitud de la contraseña es limitada? Es decir, si establece una contraseña de 40 caracteres y no puede autenticarse con éxito escribiendo solo los primeros 39 caracteres, significa que todos los caracteres son importantes y esto implica que realmente es una contraseña. hashno cifrado (el valor almacenado se usa para verificar una contraseña, pero la contraseña no se puede recuperar solo del valor almacenado).

Editar: acabo de notar un script muy bueno llamado hashID. El nombre lo describe bastante.

~~~

En términos generales, usar la experiencia para hacer conjeturas informadas es cómo se hacen estas cosas.

Aquí hay una lista con una gran cantidad de resultados hash para que sepa cómo se ve cada uno y cree firmas/patrones o simplemente verifique ópticamente.

  • Generador de hashes de crack de hash en línea
  • Foro de software InsidePro > Tipos de hash (a través de Archive.org)

Hay dos principal Cosas a las que primero prestas atención:

  • la longitud del hash (cada función hash tiene una longitud de salida específica)
  • el alfabeto utilizado (¿son todas letras inglesas? ¿Números 0-9 y AF, así que hexadecimal? ¿Qué caracteres especiales hay, si los hay?)

Varios programas para descifrar contraseñas (por ejemplo, John the ripper) aplican una coincidencia de patrones en la entrada para adivinar el algoritmo utilizado, pero esto solo funciona en hashes genéricos. Por ejemplo, si toma cualquier salida hash y gira cada letra en 1, la mayoría de los esquemas de coincidencia de patrones fallarán.

Lo que ha publicado son 16 bytes (128 bits) de datos codificados en base 64. El hecho de que esté codificado en base 64 no nos dice mucho porque la base 64 no es un algoritmo de cifrado/hashing, es una forma de codificar datos binarios en texto. Esto significa que este bloque incluye una información útil, a saber, que la salida tiene una longitud de 16 bytes. Podemos comparar esto con el tamaño de bloque de los esquemas de uso común y descubrir qué no puede ser. Con mucho, los esquemas más comunes son:

  • SHA-1 (160 bits)
  • MD5 (128 bits)
  • AES (128 bits)
  • DES (64 bits)
  • 3DES (64 bits)

Lo siguiente que debemos hacer es observar otros bloques de texto cifrado para averiguar la respuesta a la siguiente pregunta:

  • ¿Todos los textos cifrados tienen la misma longitud, incluso para diferentes longitudes de entrada?

Si no todos los bloques tienen la misma longitud, entonces no está buscando un algoritmo hash, sino uno de cifrado. Dado que la salida siempre será un múltiplo del tamaño del bloque subyacente, la presencia de un bloque que no sea divisible por 16 bytes significaría que no puede ser AES y, por lo tanto, debe ser DES o 3DES.

Si tiene la capacidad de ingresar una contraseña y observar la salida, esto se puede determinar muy rápidamente. Simplemente ingrese una contraseña de 17 caracteres y mire la longitud. Si tiene 16 bytes, tiene MD5, 20 bytes significa SHA-1, 24 bytes significa DES o 3DES, 32 bytes significa AES.

Sección de Reseñas y Valoraciones

Te invitamos a añadir valor a nuestro contenido añadiendo tu experiencia en las referencias.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *