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í



sábado, 2 de mayo de 2026

Programa En Html y JavaScript Que Lee Los String De Un Ejecutable

Hola amigos hoy les dejaré un simple programa que muestra los String de un ejecutable, no lo he probado con imágenes u otros archivos pero debe de funcionar.

Nota: no lee Unicode así que no esperen todos los String

aquí una foto


Ahora lo probaremos con el crackme 12 de ShoulcK y me muestra lo siguiente


Bueno aquí les dejó el código, si lo quieren probar solo copean y pegan en el bloc de notas y aguardan como extractor.hta por otro lado estoy en el crackme 6 de Rogerfm así que creo que será el siguiente tema y después veré este crackme u otro

<html>
<head>
<title>Extractor de Strings</title>
</head>
<body>
<center>
<br><br>
<input type="file" id="ruta" size="50"><br><br>
<button onclick="extraer()">Extraer Strings</button>
<br><br>
<textarea id="log" cols="80" rows="25"></textarea>
</center>
<script>
function extraer()
{
    var fso = new ActiveXObject("Scripting.FileSystemObject");
    var archivo = fso.OpenTextFile(document.getElementById("ruta").value, 1, false);

    var contenido = archivo.ReadAll();
    archivo.Close();

    var resultado = "";
    var actual = "";

    for (var i = 0; i < contenido.length; i++)
    {
        var c = contenido.charCodeAt(i);

        // rango ASCII imprimible
        if (c >= 32 && c <= 126)
        {
            actual += String.fromCharCode(c);
        }
        else
        {
            if (actual.length >= 4) // mínimo tamaño
            {
                resultado += actual + "\n";
            }
            actual = "";
        }
    }
    document.getElementById("log").value = resultado;
}
</script>
</body>
</html>
 

Bueno creo que eso es todo espero les guste, ya lo prevé con un archivo ZIP asiendo este escrito lo intente y medio lo siguiente

Resulta que al final del texto me muestra los archivos en listados del archivo ZIP bueno, saludos Flamer y espero les sirva a alguien

 

lunes, 27 de abril de 2026

Solucion Del Reto Primer Crackme De Alfa

Hola amigos hoy veremos un mini tutorial de como resolver el primer crackme de alfa, ya resolví anteriormente un reto de el, era un keygenme y deje el generador de claves aquí el tema

https://elblogdeflamer.blogspot.com/2025/08/generador-de-claves-del-reto-1-de-alfa.html 

bueno este es una foto de el reto que veremos hoy


Como vemos en la imagen nos pide nombre y serial, yo al principio creía que el serial se creaba según el nombre u otro método, creí que era variable, pero no es asi, ya que es constante y el nombre puede ser cual sea ya verán de que hablo

para no hacer una explicación larga y no puedo poner cosas de ensamblador les dejaré en JavaScript lo que hace el código bueno ingresamos como serial 999 y el reto hace esto

<html>
<head>
<title>Reto Alfa</title>
</head>
<body>
<center><br><br><br>
Serial<input type="number" value="0" id="pass"><br><br>
<input type="button" value="Validar" onclick="verifica()">
</center>
<script>
function verifica()
{
   let res,serial;

   serial=document.getElementById("pass").value;

   res=serial + 4294966796;//0xFFFFFE0C;
   res=res + res + res;

   if(res==123456)
   {
      alert("Muy Bien Felicidades Clave Correcta");
   }	
   else
   {
      alert("Error Clave Incorrecta");
   }	
}
</script>
</body>
</html>

 

La parte donde le suma 4294966796 yo lo puse en decimal, pero en lenguaje ensamblador es FFFFFE0C, ya que es de 32 bits y no puede cargar más, al sumar nos da 999 nos da como resultado 1000001F3 y como el registro no puede representar ese valor nos arroja 000001F3.

Bueno espero que haya quedado claro el registro no puede representar más valor, ya que es de 32 bits así que los recorta y como ven ya les puse en JavaScript lo que hace el crackme, así que el resultado lo calculamos así

res=123456/3 es igual a 41152 que en hexadecimal es A0C0

ahora para que nos dé en la resta de FFFFFE0C ponemos 10000A0C0 y lo hacemos en la calculadora de Windows


así que el serial correcto de este reto es 41652 y nos muestra lo siguiente


Nota aclaró si ejecutan el código anterior de html y JavaScript no resultara eso es solo una representación de lo que hace el reto y en ensamblador se representa diferente eso es solo una muestra de lo que hace, en fin saludos Flamer y espero les haya gustado


miércoles, 22 de abril de 2026

Solucion al Reto Crackme 8 by ShoulcK

Hola hoy veremos la solución del reto 8 de ShoulcK, como el reto nos pide parchar el botón no pondré como hacerlo en x64dbg si no que usare el HxD para editarlo dejaré una captura

les dejaré el link donde yo pido ayuda en el hacker.net....agradesco a MCKSys Argentina y a EdePC por contestar y ayudarme a entender saludos y gracias

https://foro.elhacker.net/ingenieria_inversa/ayuda_con_el_crackme8byshoulck-t523914.0.html


Eso son los bits que tenemos que cambiar, ya que tenemos parchado el programa nos pide el serial el cual lo divide en 2 partes, por ejemplo si ingreso 111111111222222222 este lo convierte en hexadecimal y queda así 18ABEF78AFFDD8E y lo divide así

primera parte ala que llamaremos a = 8AFFDD8E  

segunda parte ala que llamaremos d = 18ABEF7 

bueno primeramente a las 2 las pasa por la función xor y ala parte a la xorea con  C88FFFC7 que en decimal es 3364880327 y ala parte d con 796E723 que en decimal es 127330083

despues de pasar por el xor a la dos partes se les resta pero a la parte d se le resta 1 si la bandera  CF esta en 1

ala primera parte que es a se le resta B882ECC7 que en decimal es 3095588039 y a la segunda parte que es d sele resta 28E18DE que en decimal es 42866910

asi que yo me invente un simple programa de fuerza bruta pero no es ir intentando numero por numero no eso tardaria un monton, solo es ir cambiando los digitos del serial carater por carater y este nos dice que tanto nos vamos acercando o alejando

aqui se los dejo primero para calcular a

<html>
<head><title>Brute Force</title>
</head>
<body>
<center>
<br><br>
<input type="text"  id="x" style="text-align:center;">
<input type="button" value="calcular" onclick="calcula()">
<br><br>
<textarea id="log" cols="50" rows="15"></textarea>
</center>
<script>
function calcula()
{
   let valor=document.getElementById("x").value;
   let a=0;b=0;
 
   a=valor ^ 3364880327;
   b=valor - 3095588039;
 
   if(a==b)
   {
      document.getElementById("log").value="LOS DOS SON IGUALES";
   }
   else
   {
      document.getElementById("log").value="el valor de a=" + a + "\n\nel valor de b=" + b;
	  
   }
}
</script>
</body>
</html>

ahora para calcular d

<html>
<head><title>Brute Force</title>
</head>
<body>
<center>
<br><br>
<input type="text"  id="x" style="text-align:center;">
<input type="button" value="calcular" onclick="calcula()">
<br><br>
<textarea id="log" cols="50" rows="15"></textarea>
</center>
<script>
function calcula()
{
   let valor=document.getElementById("x").value;
   let a=0;b=0;
 
   a=valor ^ 127330083;
   a++;
   b=valor - 42866910;
 
   if(a==b)
   {
      document.getElementById("log").value="LOS DOS SON IGUALES";
   }
   else
   {
      document.getElementById("log").value="el valor de a=" + a + "\n\nel valor de b=" + b;
	  
   }
}
</script>
</body>
</html>

Vamos a probar el primero no tiene caso que probemos los dos si se trabajan igual,

NOTA: este utimo codigo lo probe en chatgpt y meda una formula la cual meda el valor deseado, yo no entendi nada pero hay se las dejo


como vemos al final de la imagen esta el valor 85098497 que es el valor a buscar en fin seguimos 

ingresamos 1082750659 y nos muestra lo siguiente

como vemos los 2 son numeros negativos pero estan serca uno del otro asi que modificare los ultimos digitos del numero 1082750659 por 1082750567 y me arroja...Nota tambien me dio 1082750559 


son casi iguales asi que los ejecute y para el primero el valor es 1082750559 y el segundo 85098497 ahora los paso a hexadecimal 

a= 85098497 --->  5128001

d=1082750559 --->4089765F

despues lo juntamos

51280014089765F ---->365495262636504671

luego ingresamos el serial en el crackme y nos arroja lo siguiente


El crackme tiene varias soluciones hacerle un keygen creo que es algo complicado mas si usas html con javascript manejar numeros negativos da problemas y aparte que son numeros grandes, se me ocurre un keygen que este cambie los digitos del codigo anterior por nosotros pero eso lo veo complicado en fin saludos Flamer

 

lunes, 6 de abril de 2026

Solucion al Reto Crackme 1 by RedH@wK

Hola amigos hoy vengo con la solución del reto 1 de redH@wK, al principio yo creía que era necesario un nombre y un serial, pero la cosa era más sencilla de lo que parecía. Aquí una foto del reto.


Analizándolo un poco me di cuenta de que está hecho en VB6 y está en P-Code así que al abrirlo con x64dbg no pude ver el código ensamblador. Me dijeron en crackslatinos que poniendo un breakpoint en msvbvm60.dll podía verlo analizándolo y ver lo que hacía, pero yo buscaba cómo verlo de perdida en ASM, así que busqué algunas herramientas; una de ellas fue VB Decompiler, el cual me daba el código en P-Code aquí una imagen.


y tambien la herramienta VBDEC, la cual me mostraba lo mismo que la anterior aquí una imagen.


Pero como no sé traducir ese lenguaje, así que le pedí ayuda a ChatGPT. Primero le pregunté si sabía leer o traducir el lenguaje P-Code y me dijo que sí, así que le pasé el código y me mostró lo siguiente.


Codigo


Dim txt As String
txt = txtPassword.Text

If txt = "" Then
    Form1.Show
    Me.Hide
Else
    MsgBox "Serial no valido. Vuelve a intentarlo"
    txtPassword.SetFocus
    SendKeys "{Home}+{End}"
End If

Como vemos, el código está más limpio y entendible, y vemos que solo hace una comparación el campo del serial solo pregunta si este está vacío y, si lo está nos muestra el cartelito correcto, así que quitamos el signo de interrogación y en el campo nombre ponemos el que gusten; solo el campo serial quedaría en blanco y ya queda y muestra lo siguiente.


 

O mejor dicho, como en la imagen siguiente.


jajajajajaja esta imagen es de un amigo de Crackslatinos. Saludos  EdePC, y buena imagen.

Bueno espero les haya gustado Saludos  Flamer


sábado, 4 de abril de 2026

Resolviendo el reto 5 de JavaScript de la pagina rogerfm.net usando ChatGPT

Hola amigos hoy veremos como resolvemos el reto de JavaScript de la página rogerfm.net el más difícil que es el número 5, por lógica se sabe que si resolvemos este los demás son pan comido pues se supone que este es el más difícil bueno pero si se preguntan como lo resolveremos pues les diré que lo haremos usando la herramienta de ChatGPT bueno empecemos este es el reto.


Así que elegimos el 5 y nos muestra lo siguiente:


Elegimos la opción ver fuente del marco y nos mostrará el código fuente del marco en HTML y es el siguiente:


Copiamos el codigo de JavaScript como en la imagen y la pegamos en ChatGPT y le decimos lo analize: 

Asi que lo analiza y nos suelta una explicacion de lo que hace el codigo pero ahora le pido que me de la contraseña:


Asi que comprobamos copiando la palabra smoking en el reto y nos da lo siguiente:



Bueno como ven es algo sencillo usando esta herramienta de IA y no hay necesidad de quebrarse la cabeza en fin espero les guste saludos Flamer


martes, 3 de marzo de 2026

Convertir De Texto a voz en JavaScript y Html

Hola amigos hoy veremos como convertir de texto a voz en JavaScript, yo hace tiempo lo hice en VBScript, pero ahora lo traigo en JavaScript y HTML, les dejaré 2 códigos uno es con archivo .hta y el otro en HTML para que vean que se puede hacer de diferentes formas... bueno empezamos primero la versión hta es esta


su codigo es el siguiente

<html>
<head>
<title>De texto a Voz</title>
</head>

<body>
<marquee>De texto a Voz By Flamer</marquee><br><br>
<center>
Texto:<br><br>
<textarea id="text" name="comentarios" rows="20" cols="50">Hola mundo</textarea><br>
<input type="button" value="Aceptar" onclick="hablar()">
</center>
<script>
function hablar()
{
   var voz = new ActiveXObject("SAPI.SpVoice"); //crea un objecto SAPI
   var txt = document.getElementById("text").value; //toma el valor del campo de texto text
   
   if(txt=="")
   {
      alert("Campo de voz vacio");
   }
   else
   {
      voz.Speak(txt); //reproduce el texto a voz
   }
}
</script>
</body>
</html>

lo copean y aguardan con el nombre "voz.hta" no olviden la extensión .hta y aprobar.

Ahora, si lo quieren hacer con la extensión HTML, aquí les dejo su código.


<html>
<head>
<title>Texto a Voz JavaScript by Flamer</title>
</head>
<body>
<center>
<h2>Conversor de Texto a Voz</h2>
<textarea id="texto" rows="4" cols="30">Hola mundo, esto es una prueba de voz.</textarea>
<br>
<button onclick="hablar()">Hablar</button>
</center>
<script>
function hablar()
{
   // 1. Obtener el texto
   const texto = document.getElementById("texto").value;
            
   // 2. Crear el objeto de síntesis de voz
   const mensaje = new SpeechSynthesisUtterance(texto);
            
   // 3. Configurar idioma y voz
   mensaje.lang = 'es-ES'; // Idioma español
   mensaje.rate = 1; // Velocidad (0.1 a 10)
   mensaje.pitch = 1; // Tono (0 a 2)
            
   // 4. Reproducir
   window.speechSynthesis.speak(mensaje);
}
    </script>
</body>
</html>

lo copean y aguardan con el nombre "voz.html" y aqui una foto


es algo simple pero entretenido y espero les guste saludos Flamer