Páginas

anun1

viernes, 26 de junio de 2026

Solucion al Crackme 7 de la pagina Rogerfm.Net

Hola amigos hoy veremos la solución del reto 7 de la página rogerfm.net, este reto hace tiempo lo había resuelto y ahora lo traigo de nuevo.

aquí una foto del reto



Este reto primeramente lee un valor desde el registro, si estas en una máquina de 32 bits el valor de registro será este

HKEY_LOCAL_MACHINE\SOFTWARE\A Challenge for Newbies

y dentro de este la clave REG_SZ llamado password   tenemos que encontrar el valor de esa clave 

y si estás usando una máquina de 64bits la ruta es

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\A Challenge for Newbies 

Con los mismos valores... Bueno la clave a encontrar y que se guarda en el registro en la ruta mencionada anteriormente es de 8 dígitos y se divide en partes.

La primera es que se suma cada dígito por su valor ASCII y el resultado lo multiplica por su posición y el resultado tiene que ser igual a 4684666

Nota: estamos en JavaScript, y este lenguaje lees desde la posición 0 o sea el dígito 0.... Pero en vez de empezar desde el dígito 0 empezaremos desde el dígito 1 o posición 1...

después toma los dígitos  5 y 4 y resta digito 5 - dígitos - 1

después toma los dígitos  4 y 2 y resta digito 4 - digito 2 - 1

después toma los dígitos  2 y 1 y resta digito 2 - digito 1 - 2

después toma los dígitos  1 y 6 y resta digito 1 - digito 6 - 7

después toma los dígitos  6 y 7 y resta digito 6 - digito 7 - 2

después toma los dígitos  7 y 8 y resta digito 7 - digito 8 - 2

después toma los digitos  8 y 3 y resta digito 8 - digito 3 - 0

como pueden ver es por fuerza bruta como el anterior así que yo hice un fuerza bruta, pero ami manera y es calando dígito por dígito y nos va diciendo que tan lejos o que tan cerca andamos y nos muestra el valor ASCII de cada dígito y la resta aquí se los dejo.... Nota: a ver si le entienden o yo solo me entiendo y me da pereza explicarlo

<head><title>Brute Force</title>
</head>
<body>
<br><br><br>
<center>
Solo Letras de (e) Hasta (t)<br><br>
<input type="text" id="clave" maxlength="8" style="width:150;height:40;font-size:25;text-align:center;"><br><br>
<input type="button" value="Manual" onclick="calcular()">
<br><br>
<div id="eti1" style="background:#FA0404;width:500;">Valor a encontrar es 4684666 ----></div><br>
<div id="eti2" style="background:#FA0404;width:500;"></div><br>
<div id="eti3" style="background:#FA0404;width:500;"></div><br>
<div id="eti4" style="background:#FA0404;width:500;"></div><br>
<div id="eti5" style="background:#FA0404;width:500;"></div><br>
<div id="eti6" style="background:#FA0404;width:500;"></div><br>
<div id="eti7" style="background:#FA0404;width:500;"></div><br>
<div id="eti8" style="background:#FA0404;width:500;"></div><br>
</center>
<script>
function calcular()
{
   let pass,x,d1,d2,s,sum=0;

   pass=document.getElementById("clave").value;
   
   if(pass.length==8)
   {
      for(x=7;x>=0;x--)
      {
         digi=pass[x];
	 sum=(sum + digi.charCodeAt(0)) * (x + 1);
      }
      
      document.getElementById("eti1").innerHTML="Valor a encontrar es 4684666 ----> " + sum;
      if(sum==4684666)
      {	  
         document.getElementById("eti1").style.background="#2FF807"; //verde  
      }
      else
      {
         document.getElementById("eti1").style.background="#FA0404"; //rojo
      }
      
      d1 = pass[4];
      d2 = pass[3];
      s  = d1.charCodeAt(0) - d2.charCodeAt(0) - 1;
      document.getElementById("eti2").innerHTML= "digitos 5 y 4_____" + d1 + " - " + d2 + "_____" + d1.charCodeAt(0) + " - " + d2.charCodeAt(0) + " - 1 = " + s + "  igual a cero";   
      if(s == 0)
      {
         document.getElementById("eti2").style.background="#2FF807";  
      }
      else
      {
         document.getElementById("eti2").style.background="#FA0404";
      }
      
      d1 = pass[3];
      d2 = pass[1];
      s  = d1.charCodeAt(0) - d2.charCodeAt(0) - 1;
      document.getElementById("eti3").innerHTML= "digitos 4 y 2_____" + d1 + " - " + d2 + "_____" + d1.charCodeAt(0) + " - " + d2.charCodeAt(0) + " - 1 = " + s + "  igual a cero";  
      if(s == 0)
      {
         document.getElementById("eti3").style.background="#2FF807";  
      }
      else
      {
         document.getElementById("eti3").style.background="#FA0404";
      }      
      
      d1 = pass[1];
      d2 = pass[0];
      s  = d1.charCodeAt(0) - d2.charCodeAt(0) - 2;
      document.getElementById("eti4").innerHTML= "digitos 2 y 1_____" + d1 + " - " + d2 + "_____" + d1.charCodeAt(0) + " - " + d2.charCodeAt(0) + " - 2 = " + s + "  igual a cero";  
      if(s == 0)
      {
         document.getElementById("eti4").style.background="#2FF807";  
      }
      else
      {
         document.getElementById("eti4").style.background="#FA0404";
      }
	  
      d1 = pass[0];
      d2 = pass[5];
      s  = d1.charCodeAt(0) - d2.charCodeAt(0) - 7;
      document.getElementById("eti5").innerHTML= "digitos 1 y 6_____" + d1 + " - " + d2 + "_____" + d1.charCodeAt(0) + " - " + d2.charCodeAt(0) + " - 7 = " + s + "  igual a cero"; 
      if(s == 0)
      {
         document.getElementById("eti5").style.background="#2FF807";  
      }
      else
      {
         document.getElementById("eti5").style.background="#FA0404";
      }
	  
      d1 = pass[5];
      d2 = pass[6];
      s  = d1.charCodeAt(0) - d2.charCodeAt(0) - 2;
      document.getElementById("eti6").innerHTML= "digitos 6 y 7_____" + d1 + " - " + d2 + "_____" + d1.charCodeAt(0) + " - " + d2.charCodeAt(0) + " - 2 = " + s + "  igual a cero";  
      if(s == 0)
      {
         document.getElementById("eti6").style.background="#2FF807";  
      }
      else
      {
         document.getElementById("eti6").style.background="#FA0404";
      }
	  
      d1 = pass[6];
      d2 = pass[7];
      s  = d1.charCodeAt(0) - d2.charCodeAt(0) - 2
      document.getElementById("eti7").innerHTML= "digitos 7 y 8_____" + d1 + " - " + d2 + "_____" + d1.charCodeAt(0) + " - " + d2.charCodeAt(0) + " - 2 = " + s + "  igual a cero";  
      if(s == 0)
      {
         document.getElementById("eti7").style.background="#2FF807";  
      }
      else
      {
         document.getElementById("eti7").style.background="#FA0404";
      }
	  
      d1 = pass[7];
      d2 = pass[2];
      s  = d1.charCodeAt(0) - d2.charCodeAt(0)
      document.getElementById("eti8").innerHTML= "digitos 8 y 3_____" + d1 + " - " + d2 + "_____" + d1.charCodeAt(0) + " - " + d2.charCodeAt(0) + " = " + s + "  igual a cero";  
      if(s == 0)
      {
         document.getElementById("eti8").style.background="#2FF807";  
      }
      else
      {
         document.getElementById("eti8").style.background="#FA0404";
      }
   }
}
</script>
</body>
</html>

aquí les dejo una foto

Así que ingresamos 8 dígitos y damos clic al botón y vamos calando letra por letra y hay nos muestra que dígitos está comparando y con cuanto nos hemos pasado en su valor negativo o positivo y cuando le atines se pondrá en verde

El valor que encontraremos sera prestige y verificamos en el programa de fuerza bruta 


ahora lo aguardamos en el registro


Como nos sigue marcando error y no muestra el cartelito correcto así que ingresamos el valor 12345678 en el cuadro de texto y vemos que es comparado los primeros 4 dígitos por 61736964 y después los otros 4 por 72657473 así que juntamos los números así  72657473  61736964 y nos vamos a una página para pasarlos de hexadecimal a texto y nos da esto


Como vemos nos da la palabra retsasid, pero la voltearemos porque el depurador x64dbg los lee al revés y nos queda la palabra disaster

luego ingresamos ese valor al crackme y nos arroja esto


Bueno creo que eso es todo espero les guste saludos Flamer


miércoles, 17 de junio de 2026

Extraer, Ver Archivos y Eliminar....Analizador De Archivos Rar en javascript y HTA

Hola amigos hoy veremos un simple código que hice en JavaScript, pero esta vez no es con HTML sino que está en hta porque en HTML no se puede usar comandos de consola, también le pedí a la IA que me hiciera una versión y para acabarla ella la hizo mejor que yo, así que son 2 códigos, pero la de la IA es un poco más reducida ya verán porque, primero les dejo una foto del mío y como funciona


Damos en el botón examinar y elegimos el archivo rar y después damos en el botón ver archivos y se muestra lo siguiente

Ahora si queremos extraer todo solo damos clic en el botón que dice eso, ese botón no lo explicaré ya que sale de sobra, los que voy a explicar son los otros 3, bueno empecemos si queremos extraer un archivo primero seleccionamos el nombre del archivo y damos en copiar, para después pegarlo en el cuadro de texto así.

 
después damos clic en extraer y pegamos en el cuadro de texto que aparecerá


Y listo nos muestra el mensaje de archivo extraído, ahora si queremos agregar solo damos clic en el botón agregar y aparecerá un cuadro de diálogo y elegimos el archivo a agregar este.



Yo elegí el archivo de firefox.exe y nos manda el siguiente mensaje

después otro mensaje que dice que elijamos de nuevo el archivo rar, ya que el valor del examinar cambio


Ahora damos clic en examinar y elegimos el archivo rar de nuevo y damos clic en el botón examinar y vemos que nos muestra que el archivo si se agregó
Ahora si queremos eliminar el archivo damos clic en el botón que dice eso, pero antes copeamos el nombre del archivo y pegamos en el cuadro de texto que aparecerá como se ve en la imagen

Y nos muestra lo siguiente


Bueno ahora les dejaré el código

<html>
<head>
<title>Simple Analizador De Archivos Rar</title>
</head>
<body>
<center>
<input type="file" size="50" id="archi"><br><br>
<textarea cols="100" rows="30" id="log" disabled></textarea><br><br>
<input type="button" value="Ver Archivos" id="v" onclick="ver()">
<input type="button" value="Extraer" id="ex" onclick="extrae()" disabled>
<input type="button" value="Extraer Todo" id="tod" onclick="todo()" disabled>
<input type="button" value="Agregar" id="agre" onclick="agregar()" disabled>
<input type="button" value="Eliminar" id="del" onclick="dele()" disabled>

</center>
<script>
var shell=new ActiveXObject("WScript.Shell");
var fso=new ActiveXObject("Scripting.FileSystemObject");
var res,loger,f,posi;
function ver()
{
    f = document.getElementById("archi").value;
	
   if(fso.FileExists(f) && /\.rar$/i.test(f))
   {
      loger=shell.Exec("C:\\Program Files\\WinRAR\\unrar.exe l " + String.fromCharCode(34) + f + String.fromCharCode(34));
      res=loger.StdOut.ReadAll();
      posi=res.indexOf("Atributos");
      res=res.substr(posi);
	   
      document.getElementById("log").value=res;
      document.getElementById("ex").disabled=false;
      document.getElementById("tod").disabled=false;
      document.getElementById("agre").disabled=false;
      document.getElementById("del").disabled=false;
   }
   else
   {
       alert("Error El Archivo No Existe...");
   } 	
}
function extrae()
{
   var file=window.prompt("Dame El Nombre Del Archivo a Extraer");
   
   f = document.getElementById("archi").value;
   loger=shell.Exec("C:\\Program Files\\WinRAR\\unrar.exe x " + String.fromCharCode(34) + f + String.fromCharCode(34) + " " + String.fromCharCode(34) + file + String.fromCharCode(34));
   //res=loger.StdOut.ReadAll();
   alert("Archivo Extraido Con Exito...");
}
function todo()
{
   
   f = document.getElementById("archi").value;
   posi=f.lastIndexOf("\\");
   res=f.substr(0,posi);
   loger=shell.Exec("C:\\Program Files\\WinRAR\\unrar.exe x " + String.fromCharCode(34) + f + String.fromCharCode(34) + " " + String.fromCharCode(34) + res + String.fromCharCode(34));
   //res=loger.StdOut.ReadAll();
   alert("Archivos Extraidos Con Exito...");
}
function agregar()
{
    f = document.getElementById("archi").value;
    document.getElementById("archi").click();
    res=document.getElementById("archi").value;
    	
    loger=shell.Exec("C:\\Program Files\\WinRAR\\rar.exe a -ep " + String.fromCharCode(34) + f + String.fromCharCode(34) + " " + String.fromCharCode(34) + res + String.fromCharCode(34));
    res=loger.StdOut.ReadAll();
    alert(res);
    document.getElementById("ex").disabled=true;
    document.getElementById("tod").disabled=true;
    document.getElementById("agre").disabled=true;
    document.getElementById("del").disabled=true;
    alert("Ahora Elige El Archivo rar");
}
function dele()
{
   var file=window.prompt("Dame El Nombre Del Archivo a Extraer");
   
   f = document.getElementById("archi").value;
   loger=shell.Exec("C:\\Program Files\\WinRAR\\rar.exe d " + String.fromCharCode(34) + f + String.fromCharCode(34) + " " + String.fromCharCode(34) + file + String.fromCharCode(34));
   res=loger.StdOut.ReadAll();
   alert(res);
}
</script>
</body>
</html>

Aclaro el código se puede mejorar yo lo hice de manera simple y pose algún comentario porque se trababa, ya que usaba StdOut.ReadAll()  en fin ahora les muestro el codigo de la IA una foto primero



Como ven tiene mejor presentación que el mío y es más complejo... Aclaro si me gusta como quedo la versión del IA, pero ami en lo personal me gusta lo más simple para practicar y enseñar en fin, si quieren probarlo damos clic en buscar y elegimos el archivo rar y después damos clic en ver contenido.... Ahora su código

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Visor de Archivos RAR</title>
<HTA:APPLICATION
    ID="VisorRAR"
    APPLICATIONNAME="VisorRAR"
    BORDER="thin"
    CAPTION="yes"
    ICON="shell32.dll,21"
    MAXIMIZEBUTTON="yes"
    MINIMIZEBUTTON="yes"
    SCROLL="auto"
    SINGLEINSTANCE="yes"
    SYSMENU="yes"
    WINDOWSTATE="normal"
/>
<style>
  html, body {
    height: 100%;
    margin: 0;
    font-family: "Segoe UI", Tahoma, Arial, sans-serif;
    background: #1e1e1e;
    color: #e0e0e0;
  }
  .barra {
    padding: 12px;
    background: #2d2d30;
    border-bottom: 1px solid #444;
  }
  #ruta {
    width: 55%;
    padding: 5px;
    background: #1e1e1e;
    color: #fff;
    border: 1px solid #555;
  }
  button {
    padding: 5px 14px;
    margin-left: 6px;
    background: #3c3c3c;
    color: #fff;
    border: 1px solid #555;
    cursor: pointer;
  }
  button:hover { background: #505050; }
  #salida {
    margin: 12px;
    height: 75%;
    overflow: auto;
    background: #0c0c0c;
    color: #6fdc6f;
    font-family: Consolas, "Courier New", monospace;
    font-size: 13px;
    padding: 10px;
    white-space: pre;
    border: 1px solid #333;
  }
  #estado {
    margin-left: 12px;
    font-size: 12px;
    color: #999;
  }
  #herramienta {
    margin-top: 6px;
    font-size: 11px;
    color: #888;
  }
</style>
</head>
<body onload="document.getElementById('herramienta').innerText = mostrarHerramienta();">

<div class="barra">
  <input type="text" id="ruta" placeholder="Ruta completa del archivo .rar">
  <input type="file" id="explorador" accept=".rar" style="display:none"
         onchange="document.getElementById('ruta').value = this.value;">
  <button onclick="document.getElementById('explorador').click();">Buscar...</button>
  <button onclick="listarContenido();">Ver contenido</button>
  <span id="estado"></span>
  <div id="herramienta"></div>
</div>

<div id="salida">El contenido del archivo .rar aparecerá aquí...</div>

<script language="JScript">

// Busca 7-Zip o WinRAR en las rutas habituales de instalación
function buscarHerramienta() {
  var fso = new ActiveXObject("Scripting.FileSystemObject");
  var candidatos = [
    {ruta: "C:\\Program Files\\7-Zip\\7z.exe", tipo: "7z"},
    {ruta: "C:\\Program Files (x86)\\7-Zip\\7z.exe", tipo: "7z"},
    {ruta: "C:\\Program Files\\WinRAR\\UnRAR.exe", tipo: "unrar"},
    {ruta: "C:\\Program Files (x86)\\WinRAR\\UnRAR.exe", tipo: "unrar"},
    {ruta: "C:\\Program Files\\WinRAR\\Rar.exe", tipo: "unrar"},
    {ruta: "C:\\Program Files (x86)\\WinRAR\\Rar.exe", tipo: "unrar"}
  ];
  for (var i = 0; i < candidatos.length; i++) {
    if (fso.FileExists(candidatos[i].ruta)) return candidatos[i];
  }
  return null;
}

function mostrarHerramienta() {
  var h = buscarHerramienta();
  if (h) {
    return "Herramienta detectada: " + h.ruta;
  }
  return "No se detectó 7-Zip ni WinRAR. Instala alguno de los dos para poder listar archivos .rar.";
}

function listarContenido() {
  var rutaArchivo = document.getElementById("ruta").value;
  var salida = document.getElementById("salida");
  var estado = document.getElementById("estado");

  if (!rutaArchivo) {
    alert("Escribe o selecciona la ruta de un archivo .rar");
    return;
  }

  var fso = new ActiveXObject("Scripting.FileSystemObject");
  if (!fso.FileExists(rutaArchivo)) {
    alert("El archivo no existe:\n" + rutaArchivo);
    return;
  }

  var herramienta = buscarHerramienta();
  if (!herramienta) {
    salida.innerText = "No se encontró ninguna herramienta capaz de leer archivos RAR.\n\n" +
      "Instala 7-Zip (https://www.7-zip.org) o WinRAR y vuelve a intentarlo.";
    return;
  }

  estado.innerText = "Leyendo...";
  salida.innerText = "";

  var comando;
  if (herramienta.tipo === "7z") {
    // 7z l = listar contenido en formato de tabla
    comando = '"' + herramienta.ruta + '" l "' + rutaArchivo + '"';
  } else {
    // UnRAR/Rar lb = listar solo nombres de archivo (bare list)
    comando = '"' + herramienta.ruta + '" lb "' + rutaArchivo + '"';
  }

  var shell = new ActiveXObject("WScript.Shell");
  try {
    var proceso = shell.Exec(comando);
    var resultado = proceso.StdOut.ReadAll();
    var errores = proceso.StdErr.ReadAll();

    if (resultado.replace(/\s/g, "") === "" && errores.replace(/\s/g, "") !== "") {
      salida.innerText = "Error al leer el archivo:\n\n" + errores;
    } else {
      salida.innerText = resultado;
    }
  } catch (e) {
    salida.innerText = "Ocurrió un error al ejecutar el comando:\n" + e.message;
  } finally {
    estado.innerText = "";
  }
}
</script>
</body>
</html>


ahora una foto de lo que nos muestra



Bueno si quiere probar los código solo copean y pegan en el bloc de notas y aguardan como "visor.hta"

bueno creo que eso es todo saludos Flamer


martes, 9 de junio de 2026

Solucion al Reto Key File ReverseMe

Hola amigos hoy veremos como crear el archivo de registro del reto Key File ReverseMe, es un reto sencillo solo tenemos que crear el archivo de registro en la misma ubicación donde se encuentra el ejercicio, una cosa el archivo no tiene ventana así que solo les mostraré los mensajes o MenssageBox que nos envía, al ejecutarlo nos envía este, ya que no tenemos el archivo de registro.


Como pueden ver en el mensaje nos dice que no estamos registrados, y también dice en el título el nombre del reto.
Si se preguntan como crear el archivo de registro o como se llama pues bueno, el archivo se debe llamar "keyfile.dat" y dentro del archivo la clave debe contener de 8 dígitos  "G" al principio y los demás dígitos pueden ser aleatorios pero esta clave tiene que ser mayor de 16 dígitos, aquí les dejo un programa en JavaScript y HTML para que lo vean y prueben.

<html>
<head>
<title>Reto Key File ReverseMe  ...:::By Flamer:::...</title>
</head>
<body bgcolor="black">
<center>
<marquee style="font-size:30;color:yellow;">Creador de archivo De Registro ...:::By Flamer:::...</marquee><br><br>
<input type="file" id="archi" size="50"><br><br>
<input type="button" value="Crear Archivo" onclick="crear()">
</center>
<script>
function crear()
{
   var f=document.getElementById("archi").value;
   
   if(f=="")
   {
      alert("Error ruta vacia");
   }
   else
   {
	  var cadena="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	  var largo=cadena.length - 1;
	  var posi,pws="GGGGGGGG";
	  var rand=parseInt(Math.random()*(50-8) + 8);
	  var fso=new ActiveXObject("Scripting.FileSystemObject");
	  
	  for(var x=0;x<rand;x++)
	  {
	     posi=parseInt(Math.random()*(largo-0)+0);
	     digi=cadena.substr(posi,1);
	     pws+=digi;
	  }
	  posi=f.lastIndexOf("\\");
	  var ruta=f.substr(0,posi);
	  var file=fso.CreateTextFile(ruta + "\\keyfile.dat",true);
	  file.WriteLine(pws);
	  file.Close();
	  
	  alert("Archivo De Registro Hecho correctamente");
   }
}
</script>
</body>
</html>

Bueno el programa sebe así.... Nota: si lo quieren probar solo copean y aguardan en el bloc de notas como "creador.hta"





Bueno buscamos la ruta del reto y creamos el archivo presionando el botón y nos arroja lo siguiente


  
Ahora vamos a ver los archivos de la carpeta y se ven así


Ahora lo ejecutamos y nos arroja lo siguiente


Bueno como pueden ver el reto asido superado y la clave que nos generó o que esta adentro del archivo es esta:



Bueno espero les haya gustado saludo Flamer y hasta la próxima