anun1

sábado, 30 de mayo de 2026

Solucion Del Crackme 6 De RogerFm.Net

Hola amigos hoy traigo la solución del crackme 6 de la página rogerfm.net, una cosa este reto yo lo resolví con fuerza bruta no encontré otro remedio y lo hice usando Python, solo subi una version en javascript y que me lo pasara a ese lenguaje, pero como yo casi no se Python le pedí ayuda a chatgpt y si se preguntan por qué use Python esta ves, es simple me di cuenta que este lenguaje es más rápido para este tipo de cosas me refiero a la fuerza bruta en JavaScript es más lento y no maneja valores correctos de 32 bits al igual que el registro EAX y en JavaScript los números son tipo Number (doble precisión IEEE-754 de 64 bits), no registros de 32 bits.

aqui una foto del reto




como aqui no pongo ensamblador les dejare una version en javascript de lo que hace

   let valor = "CBDF9912"; 
   let mul = 1;
   let pass = document.getElementById("pass").value;

   for(let x=0; x<5; x++)
   {
      let d = pass.charCodeAt(x);
      mul = Math.imul(d, mul);
   }

   for(let x=0; x<5; x++)
   {
      let d = pass.charCodeAt(x);
      mul = Math.imul((mul + d) | 0, d);
   }

   let caden = (mul >>> 0).toString(16).toUpperCase();

   if(caden === valor)
   {
      alert("Correcto Felicidades");
   }
   else
   {
      alert("Valor Incorrecto");
   }

Lo que hace el código en el primer bucle es tomar el primer carácter, lo convierte a su valor ASCII y lo multiplica por el segundo digito(de su valor ASCII y así) y el resultado lo multiplica por el tercero y el resultado por el siguiente digito y así seguidamente hasta llegar al dígito 5.

después en el siguiente bucle toma el primer dígito y hace lo mismo lo multiplica por cada uno, pero con la diferencia que esta vez los suma(por su valor ASCII) primero antes de multiplicarlos.

Bueno aquí el código en python de la fuerza bruta

import itertools
import string

chars = string.ascii_letters + string.digits

def ciclon(passwd):

    a,b,c,d,e = [ord(x) for x in passwd]

    eax = a

    eax = (eax * b) & 0xFFFFFFFF
    eax = (eax * c) & 0xFFFFFFFF
    eax = (eax * d) & 0xFFFFFFFF
    eax = (eax * e) & 0xFFFFFFFF

    for x in (a,b,c,d,e):
        eax = ((eax + x) * x) & 0xFFFFFFFF

    return eax == 0xCBDF9912, eax

for p in itertools.product(chars, repeat=5):

    passwd = ''.join(p)

    ok, mul = ciclon(passwd)

    if ok:

        print("ENCONTRADO")
        print("PASS:", passwd)
        print("VALOR:", hex(mul))

        break

aqui una foto del resultado 



como ven la clave es PSsKv

y aqui una foto del crackme con la clave correcta


Bueno saludos Flamer y espero les guste, otra cosa este reto ya lo había resuelto yo pero esta ves no me acorde como y lo hice así



No hay comentarios.:

Publicar un comentario