anun1
sábado, 30 de mayo de 2026
Solucion Del Crackme 6 De RogerFm.Net
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.
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
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: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
<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>
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>
lunes, 2 de marzo de 2026
Generador De Claves Del Reto 5 De La Pagina Rogerfm.net
Hola amigos hoy les traigo el generador de claves del reto o crackme 5 de la página Rogerfm.net. anteriormente había subido el 4 pues ahora le tocó al 5 me faltan los demás, pronto los subiré.
Bueno, aquí una foto del reto.
si ingresamos un nombre y un serial x nos muestra lo siguiente
bueno pues aqui les dejor el codigo del generador de claves
<html>
<head>
<title>Keygen Crackme 5 De Rogerfm.net ...:::By Flamer:::...</title>
</head>
<body bgcolor="black">
<center>
<marquee style="font-size:30;color:yellow;">Keygen Crackme 5 De Rogerfm.net ...:::By Flamer:::...</marquee><br><br>
<label style="color:white;">Nombre:       </label>
<input type="text" id="nom" size='50' style="text-align:center;">  
<input type="button" value="Copy" onclick="copiar1()"><br><br>
<label style="color:white;">Serial:          </label>
<input type="text" id="pass" size='50' style="text-align:center;">  
<input type="button" value="Copy" onclick="copiar2()"><br><br>
<input type="button" id="103" value="Manual" onclick="Generar()">
<input type="button" value="Limpiar" onclick="limpia()">
</center>
<script>
function limpia()
{
document.getElementById("nom").value="";
document.getElementById("pass").value="";
}
function copiar1()
{
let c=document.getElementById("nom");
c.select();
document.execCommand('copy');
}
function copiar2()
{
let c=document.getElementById("pass");
c.select();
document.execCommand('copy');
}
function Generar()
{
let nom,serial,x,eax,ebx=0,edi=0,digi;
nom = document.getElementById("nom").value;
if(nom.length>3)
{
ebx=1;
for(x=0;x<nom.length;x++)
{
digi=nom.substr(x,1).charCodeAt(0);
eax = digi * ebx;
edi = edi + eax;
ebx = ebx + 6;
}
serial = edi * 256;
document.getElementById("pass").value = serial;
}
else
{
alert("El Nombre Tiene Que Ser Mayor De 3 Digitos");
}
}
</script>
</body>
</html>
Solo copian y aguardan en el bloc de notas como "genera.html" y al ejecutarlo aparecerá lo siguiente:
Así que ahora lo probamos e ingresamos como serial flamer y nos da lo siguiente.
Después ingresamos los datos y nos arroja lo siguiente:
lunes, 23 de febrero de 2026
Remplazar string de un archivo ejecutable o binario en C++
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
string ruta,buscar,reemplazar; //Evaluation felicidade
cout<<"Dame la ruta del archivo: ";
cin>>ruta;
cout<<"Dame el texto a buscar: ";
cin>>buscar;
cout<<"Dame el texto a remplazar, DEBE SER DE LA MISMA CANTIDAD DE CARACTERES: ";
cin>>reemplazar;
if (buscar.size() != reemplazar.size())
{
cout << "Error: deben tener el mismo tamaño\n";
return 1;
}
// Abrir archivo
fstream file(ruta, ios::binary | ios::in | ios::out);
if (!file)
{
cout << "No se pudo abrir\n";
return 1;
}
// Leer todo el archivo
file.seekg(0, ios::end);
streamsize size = file.tellg();
file.seekg(0, ios::beg);
vector<char> buffer(size);
file.read(buffer.data(), size);
// Buscar
auto it = search(buffer.begin(), buffer.end(),
buscar.begin(), buscar.end());
if (it == buffer.end())
{
cout << "Texto no encontrado...Nota:Este programa no lee valores unicode\n";
file.close();
return 1;
}
// Calcular posición
streamsize pos = distance(buffer.begin(), it);
cout << "Encontrado en: " << pos << endl;
// Reemplazar en memoria
for (size_t i = 0; i < reemplazar.size(); i++)
{
buffer[pos + i] = reemplazar[i];
}
// Volver al inicio y escribir todo
file.seekp(0, ios::beg);
file.write(buffer.data(), size);
file.close();
cout << "Reemplazo completado\n";
return 0;
}
domingo, 22 de febrero de 2026
Generador De Claves Del Crackme 3 De RedH@wK
<html>
<head>
<title>Generador De Claves Del Crackme 3 De RedH@wK ...:::By Flamer:::...</title>
</head>
<body bgcolor="black">
<center>
<marquee style="font-size:30;color:yellow;">Generador De Claves Del Crackme 3 De RedH@wK ...:::By Flamer:::...</marquee><br><br>
<label style="color:white;">ID:            </label>
<input type="text" id="id" size='50' style="background-color:Gray;color:white;text-align:center;">
<input type="button" value="Copy" onclick="copiar1()">
<br><br>
<label style="color:white;">Serial:       </label>
<input type="text" id="pass" size='50' style="background-color:Gray;color:white;text-align:center;">
<input type="button" value="Copy" onclick="copiar2()">
<br><br>
<input type="button" value="Generar" onclick="generar()">
<input type="button" value="Limpiar" onclick="limpia()"><br><br>
</center>
<script>
function copiar1()
{
let c=document.getElementById('nick');
c.select();
document.execCommand('copy');
}
function copiar2()
{
let c=document.getElementById('pass');
c.select();
document.execCommand('copy');
}
function limpia()
{
document.getElementById("nick").value="";
document.getElementById("pass").value="";
}
function generar()
{
let id=document.getElementById("id").value;
let i,digi,clave;
if(id=="")
{
alert("Error el campo esta vacio");
}
else
{
i=id.substr(0,1); //tama el primer valor del string
digi=i.charCodeAt(0); //lo comvierte a su valor ascii
clave=(digi*152700)+75000000+900; //lo multiplica y lo suma
document.getElementById("pass").value=clave;
}
}
</script>
</body>
</html>
Ahora lo probaremos insertando la palabra Flamer y nos da lo siguiente en el generador de claves.
Bueno, inserté Flamer y nos dio el valor de 85689900, así que lo probaremos.
Nos muestra el mensaje correcto, así que final feliz... Reto resuelto, creo que eso es todo, espero les guste y miren el código.
saludos Flamer
lunes, 16 de febrero de 2026
Cifrar Archivos con JavaScript y PowerShell
Hola amigos hoy vengo con un cifrador sencillo, les digo sencillo por que solo utiliza un xor nada mas y creo que es revertible en fin....pero ustedes pueden crear un cifrado mas complicado yo solo muestro uno secillo para este tema, ya que no soy experto en powershell.
bueno empesemos este cifrador cifra archivos texto y binarios este es.
si se que hay formas de cifrar archivos en powershell pero quise crear uno por mi cuenta para el blog y que seden una idea de como funcionan los cifradores y como manipular los archivos binarios y si lo hice sencillo en fin.... por otro lado quise verificar tambien que se puede estar utilizando comandos powershell desde javascript y vbscript, ya que para ejecutar archivos .ps1 se necesitan permisos seguimos.
este es el codigo completo en powershell separado linea por linea para que no se confundan
$Ruta = ruta
$Password = pass
# ===== Generar MD5 de la contraseña =====
$md5 = [System.Security.Cryptography.MD5]::Create()
$passBytes = [System.Text.Encoding]::UTF8.GetBytes($Password)
$hashBytes = $md5.ComputeHash($passBytes)
# ===== Leer archivo en binario =====
$fileBytes = [System.IO.File]::ReadAllBytes($Ruta)
# ===== Aplicar XOR =====
for ($i = 0; $i -lt $fileBytes.Length; $i++) {
$fileBytes[$i] = $fileBytes[$i] -bxor $hashBytes[$i % 16]
}
# ===== Guardar archivo =====
[System.IO.File]::WriteAllBytes($Ruta, $fileBytes)
ese es el codigo en powershell pero lo uniremos en una sola cadena string para poderlo ejecutar en javascript, asi que les dejo el codigo en html y javascript
<html>
<head>
<title>Cifrador De Archivos</title>
</head>
<body>
<marquee>Cifrador De Archivos By Flamer</marquee><br><br>
<center>
Direccion Del Archivo:<input type="file" id="archivo" size="100"><br><br>
Password:<input type="text" id="pass" size="50" style="text-align:center;"><br><br>
<input type="button" value="Aceptar" onclick="proceso()">
</center>
<script>
function proceso()
{
var shell=new ActiveXObject("wscript.shell");
var ruta=document.getElementById("archivo").value;
var pass=document.getElementById("pass").value;
if ( /['"&|]/.test(pass) )
{
alert("Contiene caracteres problemáticos");
}
else
{
shell.run("powershell $Ruta = '" + ruta + "';$Password = '" + pass + "'; \
$md5 = [System.Security.Cryptography.MD5]::Create();$passBytes = [System.Text.Encoding]::UTF8.GetBytes($Password); \
$hashBytes = $md5.ComputeHash($passBytes);$fileBytes = [System.IO.File]::ReadAllBytes($Ruta); \
for ($i = 0; $i -lt $fileBytes.Length; $i++){$fileBytes[$i] = $fileBytes[$i] -bxor $hashBytes[$i % 16]}; \
[System.IO.File]::WriteAllBytes($Ruta, $fileBytes)");
alert("Proceso Terminado....");
}
}
</script>
</body>
</html>
como ven creamos el archivo con la extencion .hta y su codigo en html que crea el boton y los campos de texto.
en el codigo creamos el objecto shell para poder ejecutar los comandos powershell con el metodo run para hacerlo unimos todo el codigo de powershell con ; y como todo va en una sola linea y quiero que se vea completo y no una linea larga y estensa le agregue un \ al final con un espacio despues del ;
bueno creo que no hay mas que agregar eso es todo saludos Flamer y ya use el codigo en un ejecutable y si funciona
viernes, 23 de enero de 2026
Solucion Generador De Claves Del Reto 1 De Cruehead
Hola amigos hoy les traigo el generador de claves del crackme 1 De Cruehead es algo muy sensillo pero como yo lo hice en HTML y Javascript tal ves sevea un poco grande el codigo pero es por que quiero que se vea con cuadros de textos, botones y buena presentacion no me gusta el medio consola de cmd, con c++ y python si pudiera ponerle musica le pondria como los viejos keygenes y crackmes con sonido pero en fin aqui una foto del reto
ahora si ponemos un nombre al azar y serial cualquiera nos arroja el siguiente mensaje aqui esta
asi que aqui les dejo el codigo del keygen o generador de claves
<html>
<head>
<title>Generador De Claves Del Crackme 1 De Cruehead ...:::By Flamer:::...</title>
</head>
<body bgcolor="black">
<center>
<marquee style="font-size:30;color:yellow;">Generador De Claves Del Crackme 1 De Cruehead ...:::By Flamer:::...</marquee><br><br>
<label style="color:white;">Nombre:   </label>
<input type="text" id="nick" size='50' style="background-color:Gray;color:white;text-align:center;">
<input type="button" value="Copy" onclick="copiar1()">
<br><br>
<label style="color:white;">Serial:       </label>
<input type="text" id="pass" size='50' style="background-color:Gray;color:white;text-align:center;">
<input type="button" value="Copy" onclick="copiar2()">
<br><br>
<input type="button" id="102" value="Generar" onclick="generar()">
<input type="button" id="104" value="Limpiar" onclick="limpia()"><br><br>
</center>
<script>
function copiar1()
{
let c=document.getElementById('nick');
c.select();
document.execCommand('copy');
}
function copiar2()
{
let c=document.getElementById('pass');
c.select();
document.execCommand('copy');
}
function limpia()
{
document.getElementById("nick").value="";
document.getElementById("pass").value="";
}
function generar()
{
let nom=document.getElementById("nick").value.toString();
let x,clave,digi,suma=0,d;
if(/\d/.test(nom))
{
alert("Error El Campo No Debe De Tener Numeros");
}
else
{
nom=nom.toUpperCase();
for(x=0;x<nom.length;x++)
{
digi=nom.substr(x,1);
d=digi.charCodeAt(0);
suma+=d;
}
clave= suma ^ 22136
clave=clave ^ 4660;
}
document.getElementById("pass").value=clave;
}
</script>
</body>
</html>
ahora lo copeamos y pegamos en el bloc de notas para despues aguarlo con el nombre "key.html" y pasamos a ejecutarlo y nos queda asi
asi que ingresamos el nombre y serial y nos arroja el siguiente mensaje
para los que no saben ingles dice que pasen buenas noches jajajaja es broma dice que buen trabajo he intenten el siguiente crackme saludos y espero les guste Flamer
viernes, 9 de enero de 2026
Solucion Generador De Claves Del Reto CTCrackMe_CronuX
Hola amigos soy flamer de nuevo hoy vengo con la solucion del reto anterior que fue este
https://elblogdeflamer.blogspot.com/2025/12/reto-en-javascript-ctcrackmecronux.html
ya que nadie me publico nada yo hice el generador de claves del reto, una cosa el reto lo saque del crackme este
bueno aqui el codigo
<html>
<head>
<title>Generador De Claves Del Reto CTCrackMe_CronuX ...:::By Flamer:::...</title>
</head>
<body bgcolor="black">
<center>
<marquee style="font-size:30;color:yellow;">Generador De Claves Del Reto CTCrackMe_CronuX ...:::By Flamer:::...</marquee><br><br>
<label style="color:white;">Nombre:   </label>
<input type="text" id="nick" size='50' style="background-color:Gray;color:white;text-align:center;">
<input type="button" value="Copy" onclick="copiar(0)"><br><br>
<label style="color:white;">Serial:       </label>
<input type="text" id="pass" size='50' style="background-color:Gray;color:white;text-align:center;">
<input type="button" value="Copy" onclick="copiar(1)"><br><br>
<input type="button" id="102" value="Generar" onclick="Generar()">
<input type="button" id="104" value="Limpiar" onclick="limpia()"><br><br>
</center>
<script>
function limpia()
{
document.getElementById("nick").value="";
document.getElementById("pass").value="";
}
function copiar(n)
{
let c;
if(n==0)
{
c=document.getElementById('nick');
}
else
{
c=document.getElementById("pass");
}
c.select();
document.execCommand('copy');
}
function Generar()
{
let nom=document.getElementById("nick").value;
document.getElementById("pass").value=generarSerial(nom);
}
function cifrado(cadena)
{
let out = "";
for (let c of cadena)
{
let d = c.charCodeAt(0);
if (d >= 65 && d <= 90)
{
d += 13; if (d > 90) d -= 26;
}
else if (d >= 97 && d <= 122)
{
d -= 13; if (d < 97) d += 26;
}
out += String.fromCharCode(d);
}
return out;
}
function suma(s)
{
let total = 0;
for (let i = 0; i < s.length; i++) {
total += s.charCodeAt(i);
}
return total;
}
function generarSerial(nombre) {
let s1 = suma(cifrado(nombre)) * nombre.length;
for (let len = 1; len <= 10; len++)
{
for (let ch = 32; ch < 127; ch++)
{
let serial = String.fromCharCode(ch).repeat(len);
let s2 = (suma(cifrado(nombre)) + suma(cifrado(serial))) * len;
let ps = (s1 ^ s2).toString(16);
if (ps.endsWith("9f"))
return serial;
}
}
}
</script>
</body>
</html>
bueno copean y pegan en el bloc de notas el codigo y aguardan como "generaclaves.html" y aqui una foto de el
ahora introducimos el nombre y la serial al reto
ahora lo vamos a probar en el reto que hice en javascript este
bueno espero les guste saludos Flamer
domingo, 28 de diciembre de 2025
Reto En JavaScript CTCrackMe_CronuX
Hola amigos hoy no vengo con un generador de claves sino con un reto en javascript es del reto de cronux yo encontre el serial para mi nick que es flamer que es este:
nombre= flamer
serial=999999:
y si se preguntan por que no le hice un keygen, es por que se me hiso dificil ya que no soy tan bueno lo reconosco en fin....pero tambien se me hizo entretenido que ustedes miren el funcionamiento del codigo y a ver si encuentran un serial para su nombre o nick no solamente entregar todo yo y sin participar ustedes aqui les dejo una foto del reto
aqui el codigo solo copean y pegan en el bloc de notas y aguardan con el nombre "reto cronux.html"
<html>
<head>
<title>Reto En JavaScript CTCrackMe_CronuX</title>
</head>
<body bgcolor="black">
<center>
<marquee style="font-size:30;color:yellow;">Reto En JavaScript Del CTCrackMe_CronuX</marquee><br><br>
<label style="color:white;">Nombre:   </label>
<input type="text" id="nick" size='50' style="background-color:Gray;color:white;text-align:center;"><br><br>
<label style="color:white;">Serial:       </label>
<input type="text" id="pass" size='50' style="background-color:Gray;color:white;text-align:center;"><br><br>
<input type="button" id="102" value="Vericar" onclick="Verificar()">
<input type="button" id="104" value="Limpiar" onclick="limpia()"><br><br>
<div id="log" style="font-size:40;color:red;">No Registrado</div>
</center>
<script>
function limpia()
{
document.getElementById("nick").value="";
document.getElementById("pass").value="";
}
function Verificar()
{
let nom=document.getElementById("nick").value.toString();
let serial=document.getElementById("pass").value.toString();
let suma1=0,suma2=0,s0=0,ps="";
nom=cifrado(nom);
serial=cifrado(serial);
suma1=suma(nom);
suma2=suma(serial);
s0=suma1 + suma2;
s1=suma1 * nom.length;
s2=s0 * serial.length;
ps=(s1 ^ s2).toString(16);
if(ps.substr(-2)=="9f")
{
document.getElementById("log").innerHTML="REGISTRADO";
document.getElementById("log").style.color="Lime";
}
else
{
alert("Sigue Intentandolo");
document.getElementById("log").innerHTML="No Registrado";
document.getElementById("log").style.color="red";
}
}
function suma(s)
{
let x,digi="",d=0,ss=0;
for(x=0;x<s.length;x++)
{
digi=s.substr(x,1);
d=digi.charCodeAt(0);
ss+=d;
}
return ss;
}
function cifrado(cadena)
{
let x,digi="",d=0,clave="";
for(x=0;x<cadena.length;x++)
{
digi=cadena.substr(x,1);
d=digi.charCodeAt(0);
if(d>=65)
{
if(d<=90)
{
d+=13;
if(d>=90)
{
d-=26
}
}
else if(d>=97)
{
if(d<=122)
{
d-=13;
if(d<97)
{
d+=26;
}
}
}
}
clave+=String.fromCharCode(d);
}
return clave;
}
</script>
</body>
</html>

















































