Ahora, si lo quieren hacer con la extensión HTML, aquí les dejo su código.
anun1
martes, 3 de marzo de 2026
Convertir De Texto a voz en JavaScript y 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>
martes, 16 de septiembre de 2025
Generador De Claves Del Reto 4 Rogerfm.Net
Hola amigos hoy les traigo el reto 4 de la pagina rogerfm es un reto sencillo hace tiempo lo resolvi como en el 2019 si no me equivoco, bueno aqui una foto del reto
El serial solo acepta 8 digitos de longitud, si ingresamos otra cantidad de digitos marcara error y nos llebara al cartelito de "best luck next time :D" que quiere decir "Mucha suerte la próxima vez" bueno les dejo una foto
bueno creo que les dejare el codigo de como generar el serial correcto o seriales correctos por que hay varios, el generador de claves esta en html y javascript aqui esta
<html>
<head>
<title>Generador De Claves Del Crackme 4 Rogerfm.Net ...:::By Flamer:::...</title>
</head>
<body>
<center>
<h1>Crackme 4 Rogerfm.Net</h1>
Serial:     <input type="text" id="pass" size='50' style="text-align:center;"><input type="button" value="Copy" onclick="copiar()"><br><br>
<input type="button" id="10" value="Generar" onclick="auto()">
<input type="button" id="11" value="Limpiar" onclick="limpia()">
</center>
<script>
let tiempo; //variable tiempo
function copiar() //funcion copiar
{
let c=document.getElementById('pass'); //declara c como un objecto de referencia del campo de texto con id pass
c.select(); //selecciona lo que esta en el campo de texto con id pass
document.execCommand('copy'); //copea lo seleccionado
}
function limpia() //funcion limpiar
{
document.getElementById("pass").value=""; //limpia el campo de texto con id pass
}
function generar() //funcion que genera la clave
{
let digi=new Array(7); //declara el arreglo digi
let x=0,serial="";
digi[0] = Math.floor(Math.random() * (127 - 35 + 1)) + 35; //genera un numero aleatorio entre el rango 127 y 35
digi[4] = digi[0] - 3; //le resta 3 al valor aleatorio generado arriba para despues pasarcelo a la posicion 4
digi[2] = Math.floor(Math.random() * (127 - 32 + 1)) + 32; //genera un valor aleatorio entre los rangos 127 y 32
digi[6] = digi[2]; //le pasa el de arriva ala posicion 6
digi[1] = Math.floor(Math.random() * (127 - 39 + 1)) + 39; //genera un numero aleatorio entre el rango 127 y 39
digi[5] = digi[1] - 7; //le resta 7 al valor aleatorio generado arriva para despues pasarcelo a la posicion 5
digi[3] = Math.floor(Math.random() * (127 - 32 + 1)) + 32;//genera un numero aleatorio entre el rango 127 y 32
digi[7] = digi[3];//le pasa el de arriva ala posicion 7
for(x=0;x<=7;x++) //ciclo for para convertir todos los valores decimales a su valor ascii
{
serial+=String.fromCharCode(digi[x]); //aqui toma cada valor decimal del arreglo y lo convierte a texto o asu valor ascii y lo concatena a serial
}
document.getElementById("pass").value=serial; //le pasa el valor de serial a el campo de texto
tiempo=setTimeout("generar()",10); //manda llamar a la funcion generar
}
function auto() //funcion auto
{
let nom=document.getElementById("10").value; //le pasa el valor a la variable nom
if(nom=="Generar") //pregunta si nom es igual a Generar y si es asi entra
{
document.getElementById("10").value="Detener"; //aqui si entra cambea el nombre al boton y le pone detener
generar(); //manda llamar la funcion generar
}
else
{
document.getElementById("10").value="Generar"; //cambea el nombre al boton
clearTimeout(tiempo); //detiene el ciclo de estar llamando a la funcion generar
}
}
</script>
</body>
</html>
les dejo el codigo para que lo prueben y analizen aqui una foto de el
asi que probamos e ingresamos esa claveviernes, 5 de septiembre de 2025
Generador De Claves Del Reto jfkener
Hola amigos hoy les dejare el generador de claves del reto ya mensionado en el titulo la verda no se el nombre o nick del creador del reto solo se su correo por que lo dejo en el reto este es
jfkener@hotmail.com
tampoco me acuerdo de donde los descargue ya busque en el foro del hacker.net y no...bueno en fin aqui una foto del reto
<html>
<head>
<title>Generador De Claves Del Crackme jfkener ...:::By Flamer:::...</title>
</head>
<body>
<center>
<h1>Crackme jfkener</h1>
Nombre:    <input type="text" id="nick" size='50' style="text-align:center;"><input type="button" value="Copy" onclick="copiar1()"><br><br>
Serial:        <input type="text" id="pass" size='50' style="text-align:center;"><input type="button" value="Copy" onclick="copiar2()"><br><br>
<input type="button" id="102" value="Generar" onclick="genera()">
<input type="button" id="104" value="Limpiar" onclick="limpia()">
</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 genera()
{
let nom=document.getElementById("nick").value;
let y=0,cadena,rev,x=0,digi="",edx=0,clave1="",clave2="",largo=nom.length;
cadena=nom.split("");
rev=cadena.reverse();
cadena=rev.join("");
for(x=0;x<largo;x++)
{
digi=cadena.substr(x,1);
edx=digi.charCodeAt()+largo;
digi=String.fromCharCode(edx);
if(y==0)
{
digi=digi.toUpperCase();
y=1;
}
else
{
digi=digi.toLowerCase();
y=0;
}
clave1+=digi;
}
for(x=0;x<largo;x++)
{
digi=cadena.substr(x,1);
edx=digi.charCodeAt()+3;
digi=String.fromCharCode(edx);
if(y==1)
{
digi=digi.toUpperCase();
y=0;
}
else
{
digi=digi.toLowerCase();
y=1;
}
clave2=digi+clave2;
}
document.getElementById("pass").value=clave1 + "-" + clave2;
}
</script>
</body>
</html>
viernes, 29 de agosto de 2025
Generador De Claves Del Crackme $Edu$
<html>
<head>
<title>Generador De Claves Del Crackme Edu ...:::By Flamer:::...</title>
</head>
<body>
<center>
<h1>Crackme edu</h1>
Nombre:    <input type="text" id="nick" size='50' style="text-align:center;"><input type="button" value="Copy" onclick="copiar1()"><br><br>
Serial:        <input type="text" id="pass" size='50' style="text-align:center;"><input type="button" value="Copy" onclick="copiar2()"><br><br>
<input type="button" id="102" value="Generar" onclick="genera()">
<input type="button" id="104" value="Limpiar" onclick="limpia()">
</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 genera()
{
let nom=document.getElementById("nick").value;
let x=0,digi="",edx=0,clave="";
for(x=0;x<nom.length;x++)
{
digi=nom.substr(x,1);
edx=digi.charCodeAt()+5;
clave+=String.fromCharCode(edx);
}
document.getElementById("pass").value=clave.toString();
}
</script>
</body>
</html>
jueves, 28 de agosto de 2025
Manejar Numeros Grandes en JavaScript Con BigInt
Hola amigos hoy veremos como manejar numeros grandes en javascript para eso usaremos la funcion BigInt() esta funcion es para manejar numeros grandes ya sea decimales, binarios o hexadecimales, segun buscando en internet esta funcion no tiene un limite fijo depende de tu memoria de tu equipo y es nueva fue lanzada en 2020 yo en lo personal no la conosia hasta que un amigo en el foro tenia un problema y recurri a chatgpt para que me creara una funcion para convertir numeros binarios grandes a decimales aqui les dejo la funcion que me arrojo chatgpt
function binarioGiganteADecimal(binario) {
let decimal = 0n; // Usamos BigInt (termina en n) para soportar números enormes
for (let bit of binario) { // Recorremos cada carácter ('0' o '1') de la cadena
decimal = (decimal << 1n) + BigInt(bit);
// (decimal << 1n) = decimal * 2
// Sumamos el bit actual convertido a BigInt
}
return decimal; // Devuelve el número decimal (BigInt)
bueno aqui mi codigo que le deje ami amigo ya modificado para que estubiera mas comodo de usar
- <html>
- <head>
- <body>
- <center>
- Numero Binario:<textarea id="bin" cols="200"></textarea><br>
- <input type="button" value="Convertir" onclick="conver()"><br><br>
- Numero Decimal:<textarea id="num" cols="200"></textarea>
- </center>
- <script>
- function binarioGiganteADecimal(binario) { //funcion binarioGiganteADecimal
- let decimal = 0n; //declara la variable decimal y es inicializada
- for (let bit of binario) { // recorre cada digito con el for
- decimal = (decimal << 1n) + BigInt(bit); // Desplazamiento binario
- }
- return decimal; //retorna el valor decimal obtenido
- }
- function conver() //funcion cover
- {
- let binario = document.getElementById("bin").value; //inicializa la variable binario dependiendo el valor dado en el campo detexto bin
- let decimal = binarioGiganteADecimal(binario);// manda llamar la funcion binarioGiganteADecimal y le envia el valor binario
- document.getElementById("num").value=decimal.toString(); // muestra el resultado en el campo de texto num
- }
- </script>
- </body>
- </html>
bueno ese es el codigo, otra cosa yo pensaba crear una funcion para convertir el binario a hexadecimal creando una funcion y si se preguntan como pues si tenemos un numero binario como este por ejemplo
1011001010110111
mi metodo era devidirlo en partes de 4 digitos asi
1011 0010 1011 0111
y convertir cada parte en su valor hexadecimal asi
1011 0010 1011 0111
B 2 B 7
y tenemos esto que el numero
1011001010110111 es igual a B2B7 esa es una forma de convertir binario a hexadecimal...asi que le pedi a chatgpt que me creara una funcion para convertir binario a hexadecimal en javascript y esto me arrojo
function binarioGrandeAHexadecimal(binario) {
// Validar que solo tenga 0 y 1
if (!/^[01]+$/.test(binario)) { //if que pregunta que solo debe contener 0 y 1
throw new Error("El número debe ser binario (solo 0 y 1).");
}
// Convertir de binario (string) a BigInt
let numero = BigInt('0b' + binario);
// Pasar a hexadecimal
return numero.toString(16).toUpperCase();
}bueno ahora usaremos mi codigo con el metodo que les mostre arriba
<html>
<head>
<body>
<center>
Numero Binario:<br>
<input type="numer" id="bin" style="width:600;text-align:center;"><br><br>
<input type="button" value="Convertir" onclick="conver()"><br><br>
Numero Hexadecimal:<br>
<input type="text" id="num" style="width:600;text-align:center;">
</center>
<script>
function binarioGigante(binario)
{
let x=binario.length-4,digi="",cadena=""; //declaramos las variables
while(x>0) //ciclo while
{
digi=binario.substr(x,4); //extrae los ultimos 4 digitos de la variable binario
digi=parseInt(digi,2); //conbierte el valor de digi a decimal para despues a hexadecimal
cadena=digi.toString(16)+cadena; //aqui convierte el valor de la variable digi a Hexadecimal y lo concatena con la variable cadena
binario=binario.substr(0,x); //desecha los digitos obtenidos
x-=4;//x sele resta menos 4
}
x=binario.length; //x toma la longitud de binario que halla quedado
digi=binario.substr(0,x); //extrae los ultimos
digi=parseInt(digi,2);//conbierte el valor de digi a decimal para despues a hexadecimal
cadena=digi.toString(16)+cadena;//aqui convierte el valor de la variable digi a Hexadecimal y lo concatena con la variable cadena
return cadena; //retorna el valor en de la variable cadena
}
function conver()
{
let binario = document.getElementById("bin").value; //inicializa la variable cadena
if(!/^[01]+$/.test(binario)) //pregunta si la variable binario solo contiene 0 y 1
{
alert("Introduce solo números binarios (0 o 1)."); // esta alerta salta si hay un valor que no sea 0 o 1
}
else
{
let hexa = binarioGigante(binario); //manda llamar la funcion binarioGigante y le envia el binario para despues retornar a la variable hexa el resultado
document.getElementById("num").value=hexa.toUpperCase();// muestra el valor hexadecimal en el campo de texto en mayusculas
}
}
</script>
</body>
</html>
aqui una foto del programa en ejecucion
domingo, 24 de agosto de 2025
Generador De Claves Del Reto #3 de Rogerfm.Net
Hola amigos hoy les dejo el codigo del generador de claves del reto numero #3 de la pagina Rogerfm en javascript y html...se los dejo para que lo analicen y vean como el reto genera la clave aqui una foto del reto
<html>
<head>
<title>Generador De Claves Del Crackme #3 De Rogerfm.Net ...:::By Flamer:::...</title>
</head>
<body>
<center>
<h1>Crackme #3 de Rogerfm.Net</h1>
Nombre:    <input type="text" id="nick" size='50' style="text-align:center;"><input type="button" value="Copy" onclick="copiar1()"><br><br>
Serial:        <input type="text" id="pass" size='50' style="text-align:center;"><input type="button" value="Copy" onclick="copiar2()"><br><br>
<input type="button" id="102" value="Generar" onclick="genera()">
<input type="button" id="104" value="Limpiar" onclick="limpia()">
</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 genera()
{
let nom=document.getElementById("nick").value;
let x=0,digi="",edx=0,clave=0,r=17;
if(nom.length>=4)
{
for(x=0;x<nom.length;x++)
{
digi=nom.substr(x,1);
edx=digi.charCodeAt()+2159;
clave+=(edx * r);
r++;
}
document.getElementById("pass").value=clave.toString();
}
else
{
alert("El nombre debe ser mayor o igual a 4 digitos");
}
}
</script>
</body>
</html>
bueno solo lo copean lo pegan en el bloc de notas y lo aguardan con cualquier nombre pero con la extencion .html
aqui una foto de la clave Flamer
ahora la ponemos en el reto y veamos lo que nos arroja







































