¿Cómo determinar qué tipo de cifrado se ha utilizado? [duplicar]

1

juego un juego de Android que parece enviar la puntuación más alta del jugador en un formato cifrado. algo como (f11cca35236eebbdc26a0ce45876d117) un código de 32 caracteres Probé MD5 pero no se encontró ningún resultado. Quiero saber ¿hay alguna forma de descifrarlo o al menos encontrar el método de cifrado? gracias

    
pregunta PITFAR 29.05.2014 - 13:50
fuente

2 respuestas

3

En primer lugar, parece que estás intentando hacer trampa en un juego. No hagas eso.

Ahora algunos antecedentes sobre lo que está pasando. Veamos primero la diferencia entre cifrado y hash:

  • El cifrado es el proceso de codificación de la información de tal manera que se puede decodificar nuevamente, dada la información correcta sobre el proceso de codificación (como una clave de cifrado). Esto se usa para comunicaciones seguras de manera que el destinatario entienda un mensaje (y pueda recuperar el original) pero los terceros no puedan leer el mensaje. El proceso es algo como esto:

    "Mensaje" »{fórmula secreta}» (scramble) »{reverso de la fórmula secreta}» "Mensaje"

    En otras palabras, lo que entra puede ser descubierto si conoces el secreto. Obviamente en este escenario cuál es el secreto es bastante importante. En las computadoras, la criptografía no suele ser la fórmula que es secreta, sino que los valores utilizados en la fórmula son las claves secretas. Más sobre esto en un segundo.

  • Hashing es el proceso o reducir un blob de información a un solo valor (generalmente de una longitud fija mucho más corta que el original) que es único para la entrada dada. Esto se puede usar para confirmar la integridad de un mensaje, pero en realidad no contiene el mensaje. Esto se ve algo como esto:

    [Value1] » 7a258c461b48c794c0b5110b35382d1e
    [Value2] » 926e0eddb765d66502eac40a4ead9409
    

    El hash se usa a menudo para almacenar contraseñas. Tenga en cuenta que esta es una operación unidireccional. Dada la misma entrada, siempre obtendrá el mismo hash 1 :

    [Value1] » 7a258c461b48c794c0b5110b35382d1e
    [Value1] » 7a258c461b48c794c0b5110b35382d1e
    

    Pero uno no puede saber simplemente por el hash cuál fue la entrada 2 .

Dejando de lado los antecedentes, MD5 es un algoritmo hash. No es probable que su juego envíe datos de hash al servidor porque los datos no se pueden interpretar. ¡No les diría cuál fue tu puntaje! Puedes descartar cualquier cosa que sea un algoritmo de hash.

Ahora hay dos formas básicas en que puede funcionar un proceso de cifrado, como en el primer punto anterior.

  1. El mismo valor secreto se puede usar tanto para cifrar como para descifrar el contenido.

    Este es el patrón habitual para cosas como documentos protegidos con contraseña.

    • El usuario A usa {contraseña} para cifrar un documento.
    • El documento cifrado se pasa.
    • Solo los usuarios que saben {contraseña} pueden descifrar y leer el contenido.
  2. Se puede generar un par de valores coincidentes de tal manera que la mitad del par se use para cifrar el contenido que solo la otra mitad del par puede descifrar.

    • El usuario A genera un par de claves.
    • Luego pasan la mitad pública del par de claves, pero mantienen la mitad privada para ellos.
    • Cualquier usuario puede cifrar documentos o valores utilizando la clave pública del Usuario A, pero los datos resultantes solo pueden ser descifrados por el Usuario A utilizando su clave privada.

Si el juego utiliza un modelo de contraseña básico como en el # 1, la contraseña y el algoritmo utilizado estarán codificados en algún lugar del código fuente y se escribirán en alguna parte de la aplicación real. Cualquiera que haga algún trabajo de disección podrá averiguar cuál es ese valor y descifrar cualquier otro mensaje que intercepten. ¡Ojalá tu aplicación NO haya hecho esto!

La forma correcta sería para la criptografía de clave pública como en el # 2 anterior. El desarrollador de software habría generado un par de claves para su software. La mitad pública se integraría en el software en algún lugar y todos los valores se pueden codificar con esa clave antes de enviarlos por cable. Una vez que llegan a los servidores del desarrollador, los datos pueden decodificarse utilizando la mitad privada de la clave.

Conclusión

Si el desarrollador ha utilizado la tecnología adecuada para el trabajo, no podrá descifrar los datos que se envían porque no tiene la clave privada necesaria para decodificarlos. La clave pública puede estar oculta en el software en algún lugar, pero eso no le proporcionará los datos.

Si NO han hecho su trabajo correctamente, es posible que haya pistas de rastreo en el propio software que le brinden suficiente información para descifrar los datos usted mismo.

La identificación real del método y el algoritmo específico utilizado en este caso está más allá del alcance de esta respuesta y se deja para que el lector haga una investigación adicional. Esperamos que este resumen de las posibilidades proporcione una mejor comprensión de qué tipo de cosas está buscando.

2 ¡Esta es la razón por la que el uso de hashes salados es fundamental para la seguridad de los sistemas de contraseñas!

2 Nota: dije solo desde el hash porque es posible adivinar o usar tablas predefinidas para saber qué entrada generó un hash, pero El hash seguro en sí mismo no contendrá los datos utilizados para generarlo.

    
respondido por el Caleb 29.05.2014 - 14:53
fuente
1

Está bien. Esto es un poco genial. Una gran manera de aprender sobre el cifrado.

Pocas cosas, no realmente tu respuesta.

Incluso si sabes cómo estaba cifrado, no podrías hacer nada con él. Lo más importante es la clave utilizada para cifrarlo. Lo que ha publicado puede ser texto sin formato hash, cifrado de bytes hash o codificado.

Si solo quería saber cómo se hace, puede intentar ejecutar un dubugger en el kernel de Android y revisar las llamadas del sistema para ver qué liban de SSL usan si no están incorporadas a su código. Estoy seguro de que a ese nivel, también puede intentar ejecutar un depurador en su proceso y ver las llamadas del sistema.

Mire esto , and this y haz más búsquedas de google sobre eso.

Mi otra pregunta para ti es, ¿cómo ves que se envía? Wireshark, tcpdump etc ...?

Si es así, puedes estar viendo los paquetes https y eso no está contando toda la historia.

Busque en mitmProxy . Ellos tienen una parte en su sitio para hacer piratería de juegos como usted está diciendo. Algo como esto .

Recomendaría adquirir algo de experiencia con eso.

En definitiva, si está en el lado del cliente cifrado (su Android), puede descubrir cómo deshacerlo eventualmente. Puede que no valga la pena para un juego, pero una gran experiencia de aprendizaje nunca menos.

    
respondido por el Cripto 29.05.2014 - 15:24
fuente

Lea otras preguntas en las etiquetas