anun1

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


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:&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</label>
<input type="text" id="nom" size='50' style="text-align:center;">&nbsp&nbsp
<input type="button" value="Copy" onclick="copiar1()"><br><br>
<label style="color:white;">Serial:&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</label>
<input type="text" id="pass" size='50' style="text-align:center;">&nbsp&nbsp
<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:


Bueno espero les guste y viendo el código, se den una idea de cómo funciona el crackme.

En fin saludos Flamer

lunes, 23 de febrero de 2026

Remplazar string de un archivo ejecutable o binario en C++

Hola, amigos hoy les dejaré un código en c++ el cual remplazar un valor Spring por otro desde c++, ya que en JavaScript no pude hacerlo y no me quise complicar la vida lo realice en c++, este programa o ejercicio como lo quieran llamar primeramente lo mire de un amigo, no sé si fue necroxia u otro usuario del grupo crackslatinos no recuerdo quien, pero él lo realizo en aquel tiempo en vb6, pero como vb6 ya quedo para la historia yo lo realice en otro lenguaje.

Nota:este programa no remplaza o lee valores Unicode

bueno aquí una imagen del ejecutable que le vamos a remplazar el string, solo al darle clic nos muestra esto

.

Bueno ahora abriremos el editor de c++ y pegamos el siguiente código
#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;
}

Damos compilar y ejecutar



El ejecutable que tome como ejemplo es un crackme llamado reverseMe.exe y lo tengo en la misma carpeta donde tengo el código de este programa por esa razón solo puse su nombre y no toda una ruta.


La palabra a buscar es license y la remplazaré por 1234567 y al hacerlo me muestra el mensaje que se realizó con éxito así que ahora ejecutamos el crackme y me muestra el siguiente mensaje


Bueno creo que eso es todo y espero les guste, otra cosa ya tengo la solución de ese crackme, es algo sencillo a ver si lo publico en el foro del hacker.net y en underc0de

Nos vemos hasta la próxima Flamer y saludos a necroxia y a todos los Crackslatinos


domingo, 22 de febrero de 2026

Generador De Claves Del Crackme 3 De RedH@wK

Hola amigos hoy traigo el generador de claves del reto 3 de RedH@wK... Es algo sencillo ya que vean el código sabrán por qué, y entretenido, porque no hay algún crackme sencillo para pasar el rato y que te levante el ánimo; no se compara el ánimo como un reto difícil, pero es casi igual... En fin, aquí una foto del reto

 .

Ahora el código en HTML y JavaScript.

<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:&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</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:&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</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:&nbsp&nbsp&nbsp</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:&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</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:&nbsp&nbsp&nbsp</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:&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</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