viernes, 30 de octubre de 2026
Copiar y Descargar el Codigo HTML De Una Pagina Web Ya Cargada
Programa Para Buscar Archivos En Tu Computadora En JavaScript y Node.js
Hola amigos hoy le pedí a chatgpt que me hiciera un programa para buscar un crackme que está en mi pc, ya que me baje el respaldo de "crackmes.de" y el crackme a buscar es el de matalaz, se puede encontrar rápido sin usar el programa solo por el nombre de usuario, ya que están indexados así, pero yo elegí ese para la prueba, para probar el programa.
Bueno empecemos les mostraré el programa primero ya ustedes lo copean y lo pegan en el bloc de notas y lo aguardan como "buscar.js"
// Cargar módulos
const fs = require("fs");
const path = require("path");
const readline = require("readline");
// Configurar entrada y salida de texto
let opciones = {
input: process.stdin,
output: process.stdout
};
// Crear interfaz de consola
let rl = readline.createInterface(opciones);
// Variable para guardar la ruta
let carpeta = "";
// Función para buscar archivos en carpetas y subcarpetas
function buscar(dir, nombre)
{
let archivos;
// Obtener archivos de la carpeta
try
{
archivos = fs.readdirSync(dir);
}
catch (e)
{
return;
}
// Recorrer todos los elementos encontrados
for (let i = 0; i < archivos.length; i++)
{
// Obtener la ruta completa
let ruta = path.join(dir, archivos[i]);
try
{
// Comprobar si es una carpeta
if (fs.statSync(ruta).isDirectory())
{
// Entrar en la subcarpeta
buscar(ruta, nombre);
}
// Comprobar si el nombre coincide
else if (archivos[i].includes(nombre))
{
// Mostrar la ruta del archivo
console.log(ruta);
}
}
catch (e) {}
}
}
// Función para recibir el nombre del archivo
function preguntarNombre(nombre)
{
// Iniciar búsqueda
buscar(carpeta, nombre);
// Cerrar interfaz
rl.close();
}
// Solicitar la ruta de búsqueda
rl.question("Ruta: ", function(ruta)
{
carpeta = ruta.trim();
// Comprobar si la ruta existe
if (!fs.existsSync(carpeta))
{
console.log("La ruta no existe.");
rl.close();
return;
}
// Comprobar si es una carpeta
if (!fs.statSync(carpeta).isDirectory())
{
console.log("La ruta no es una carpeta.");
rl.close();
return;
}
// Solicitar nombre del archivo
rl.question("Nombre: ", preguntarNombre);
});
Como ven el programa ya trae sus comentarios por si no lo entienden, ya que lo tenemos aguardado en el escritorio abrimos el CMD o símbolo del sistema y lo ejecutamos así
Nos pide la ruta de la carpeta yo le daré esta
C:\Users\zeta_\Music\COPIA DE crackmes.de\users
Y luego no pide el nombre del archivo yo le pondré este, como en la imagen
Y para finalizar damos enter y nos arroja una serie de resultados, ya que la palabra crackme.zip se repite mucho, pero para saber si encontró el archivo que buscábamos o si lo mostró en la serie de resultados daremos clic derecho en la pestaña del CMD así
Y damos clic en buscar y escribimos el nombre de usuario y nos arroja esto
Como vemos si lo encontró, esto quiere decir que el programa si funciona, ojalá a alguien le sirva este programa... yo puse como ejemplo la copia de crackmes.de y me mostró varios resultados porque se repite mucho ese nombre de archivo, pero si ustedes buscan uno que casi no se repita mostrara menos resultados, otra cosa el programa distingue entre mayúsculas y minúsculas
Bueno saludos Flamer
jueves, 29 de octubre de 2026
Solucion Al Crackme 5 De La Pagina Enigmagroup
Hola amigos hoy veremos el crackme 5 de la antigua página de enigmagroup, así que primero miramos los string y para buscar el cartelito correcto y nos muestra esto
Hay podemos ver el cartelito correcto y el incorrecto y si damos doble clic en el mensaje no manda a esta zona
Como pueden ver hay se miran los textos que mencione, así que si nos vamos más arriba miramos la API vbaVarTstEq que se encarga de comparar dos valores
Asi que ponemos el breakpoint en dicha API y damos ejecutar y nos pide el serial yo ingresare el que se mira en la imagen
Se detiene justo en ese lugar que pusimos el breakpoint, de hay en adelante nos vamos traceando con F7 puro F7 hasta llegar a esta zona
En la imagen observamos que compara el serial que ingresamos con este:
"5A195-02D2D-05A2D-5A10E"
Si se fijan en el crackme no pudimos poner más de 4 dígitos en los campos de textos, así que buscaremos la API len que es la encargada de obtener el número de dígitos de un string así que escribimos len en módulos y aparecen 2, así que a las 2 les pongo un breakpoint
Luego escribimos en los cuadros de texto y se detiene justo aquí
Yo ingresé 5 dígitos en el primer cuadro de texto y como vemos unas líneas abajo esta una comparación, compara EAX con 4, así que modificamos ese 4 con 7
Ahora nos vamos traceando hasta la línea 0040352F antes de que se ejecute la API rtcMidCharVar que es la que recorta la cadena ingresada a 4 y es el valor que modificaremos en la línea 0040352F yo le pondré 7 también y quedara así
Ahora aguardamos los cambios para eso damos clic en parchear archivo
Y renombramos el archivo como "app5_crack.exe" y ahora si ingresamos el valor de arriba y nos arroja el cartelito correcto
Bueno parece que aquí quedo resuelto, pero les cuento que yo creía eso, hasta otro día que no funciono el mismo serial y revise y era otro, así que se me prendió el foco y dije este crackme tiene que con la fecha así que busque en los módulos o en las APIs la encargada de eso y es la API GetDate en el programa la muestra así rtcGetDateVa y ponemos un breakpoint en cada una para ver en cuál se detiene
Pero otra cosa para que funcione tiene que detener el crackme y volverlo a ejecutar y se detiene justo aquí
Como vemos en el FPU está la fecha solo le pedimos a Google que nos la dé y es
Una cosa el programa lee la fecha en este formato 29/10/2026 y el primer dígito es un 2 y después que tiene el dígito este es multiplicado por 45 como en la imagen
Así que toma el 2 y lo multiplica por 45 y luego lo convierte a hexadecimal para después tomar el 9 y lo multiplica por 45... Ahora si se preguntan que pasa cuando se encuentra con la barra invertida "/" pues le cuento lo multiplica por 0 ..... aquí se muestra como toma la fecha
Pero antes de que pregunte si es una barra invertida cada 2 dígitos que lee pone un guion "-"
ahora si el valor es 0 multiplica por 1 aquí les dejo una tabla
Ahora yo le hice un keygen en JavaScript y HTML aquí el código
<html>
<head>
<title>Keygen Crackme 5 De EnigmaGroup...:::Flamer:::...</title>
</head>
<body bgcolor="black">
<center>
<marquee style="font-size:30;color:yellow;">Keygen Crackme 5 De EnigmaGroup ...:::Flamer:::...</marquee><br><br>
<label style="color:white;">Serial:</label>
<input type="text" id="pass" size='40' style="background-color:Gray;color:white;text-align:center;"><br><br>
<input type="button" value="Generar" onclick="genera()">
</center>
<script>
function copiar1()
{
let c=document.getElementById('pass');
navigator.clipboard.writeText(c.value);
}
//==================================================================================
function genera()
{
let fecha=new Date();
let dia=String(fecha.getDate()).padStart(2, '0');
let mes=String(fecha.getMonth() + 1).padStart(2, '0');
let año=fecha.getFullYear();
let chafe=dia + "/" + mes + "/" + año;
let x,digi,pws="",mul,conta=0;
for(x=0;x<chafe.length;x++)
{
digi=chafe[x];
if(digi=="/")
{
mul=45*0;
}
else if(digi=="0")
{
mul=45 * 1;
}
else
{
mul=45 * parseInt(digi);
}
if(conta==2)
{
pws+="-";
conta=-1;
}
pws+=mul.toString(16);
conta++;
}
document.getElementById("pass").value= pws.toUpperCase();
}
</script>
</body>
</html>
Aquí una imagen
Bueno amigos creo que eso es todo saludos Flamer y espero les guste
miércoles, 28 de octubre de 2026
Solucion Al Crackme 1 http://usuarios.lycos.es/sisar
Hola amigos hoy veremos la solución de un crackme sencillo, pero entretenido, no sé el nombre del usuario que lo creo solo sé que se publicó en http://usuarios.lycos.es/sisar
Aquí una foto del reto
Así que lo abrimos con el depurador x32dbg y buscamos en los string y encontramos esto
Y como podemos ver hay se mira que compara el serial que ingresamos con este otro ";=>?@AC" y si cambiamos de nombre y ponemos como serial "123456" sigue comparando con la misma cadena así que ponemos como nombre "flamer" y como serial";=>?@AC" y nos arroja el cartelito correcto
<html>
<head>
<title>Keygen Crackme 1 http://usuarios.lycos.es/sisar ...:::Flamer:::...</title>
</head>
<body bgcolor="black">
<center>
<marquee style="font-size:30;color:yellow;">Keygen Crackme 1 http://usuarios.lycos.es/sisar ...:::Flamer:::...</marquee><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()"><br><br>
<input type="button" value="Generar" onclick="genera()">
</center>
<script>
function copiar()
{
let c=document.getElementById('pass');
navigator.clipboard.writeText(c.value);
}
//==================================================================================
function genera()
{
let p="1345679",pass="";
let x,digi;
for(x=0;x<p.length;x++)
{
digi=p[x].charCodeAt(0);
digi=digi+10;
pass+=String.fromCharCode(digi);
}
document.getElementById("pass").value=pass;
}
</script>
</body>
</html>
Codigo para poder descargar imagenes de instagram
$$('img').forEach(img => console.log(img.src));
let nodos = document.getElementsByTagName("img");
for (let i = 0; i < nodos.length; i++)
{
console.log(nodos[i].src);
}
console.log($$('a').map(a => a.href).join('\n'));
let nodos = document.getElementsByTagName("a");
for (let i = 0; i < nodos.length; i++)
{
console.log(nodos[i].href);
}
martes, 27 de octubre de 2026
Solucion Al KeyFileMe#01 by deurus
004653B3 | 8BF0 | mov esi,eax | esi:"1234567890abcdefghij"
004653B5 | 33C0 | xor eax,eax |
004653B7 | EB 09 | jmp keyfileme#01.4653C2 |
004653B9 | 80C2 D0 | add dl,D0 |
004653BC | 80EA 0A | sub dl,A |
004653BF | 73 09 | jae keyfileme#01.4653CA |
004653C1 | 46 | inc esi | esi:"1234567890abcdefghij"
004653C2 | 8A16 | mov dl,byte ptr ds:[esi] | esi:"1234567890abcdefghij"
004653C4 | 84D2 | test dl,dl |
004653C6 | 75 F1 | jne keyfileme#01.4653B9 |
004653C8 | B0 01 | mov al,1 |
004653CA | 5E | pop esi | esi:"1234567890abcdefghij"
004653CB | 5B | pop ebx | ebx:"1234567890abcdefghij"
004653CC | C3 | ret |
0046551B | 8BF0 | mov esi,eax |
0046551D | 81F6 D0850000 | xor esi,85D0 |
00465523 | 8B45 E0 | mov eax,dword ptr ss:[ebp-20] | [ebp-20]:"33333"
00465526 | E8 FD34FAFF | call keyfileme#01.408A28 |
0046552B | 8BF8 | mov edi,eax |
0046552D | 81F7 06010100 | xor edi,10106 |
00465533 | 8BC6 | mov eax,esi |
00465535 | 25 01000080 | and eax,80000001 |
0046553A | 79 05 | jns keyfileme#01.465541 |
0046553C | 48 | dec eax |
0046553D | 83C8 FE | or eax,FFFFFFFE |
00465540 | 40 | inc eax |
00465541 | 0FB755 FE | movzx edx,word ptr ss:[ebp-2] |
00465545 | 33C2 | xor eax,edx |
00465547 | 8945 DC | mov dword ptr ss:[ebp-24],eax |
0046554A | 8BC7 | mov eax,edi |
0046554C | C1E0 03 | shl eax,3 |
0046554F | 0FB755 FC | movzx edx,word ptr ss:[ebp-4] |
00465553 | 33C2 | xor eax,edx |
00465555 | 8945 D4 | mov dword ptr ss:[ebp-2C],eax |
00465558 | 8BC6 | mov eax,esi |
0046555A | 99 | cdq |
0046555B | F77D D4 | idiv dword ptr ss:[ebp-2C] |
0046555E | 3355 DC | xor edx,dword ptr ss:[ebp-24] |
00465561 | 03D7 | add edx,edi |
00465563 | 8995 F0FDFFFF | mov dword ptr ss:[ebp-210],edx |
<html>
<head>
<title>Keygen Reto KeyFileMe#01 by deurus ...:::Flamer:::...</title>
</head>
<body bgcolor="black">
<center>
<marquee style="font-size:30;color:yellow;">Keygen Reto KeyFileMe#01 by deurus ...:::Flamer:::...</marquee><br><br>
<label style="color:white;">Serial:</label>
<input type="text" id="pass" size='80' style="background-color:Gray;color:white;text-align:center;">
<input type="button" value="Copy" onclick="copiar()"><br><br>
<input type="button" value="Generar" onclick="genera()">
<input type="button" value="Descargar" onclick="descarga()">
</center>
<script>
function copiar()
{
let c=document.getElementById('pass');
navigator.clipboard.writeText(c.value);
}
//==================================================================================
function genera()
{
let fecha=new Date();
let dia=fecha.getDate();
let mes=fecha.getMonth() + 1;
let p3,p1,s1,s2;
[s1,s2]=busca1(mes);
p1=s2;
p3=s1;
document.getElementById("pass").value=s2.toString() + aleatorio() + s1.toString() + aleatorio();
}
//==================================================================================
function busca2(r1,r2,d)
{
let p,x=9000;
for(x=9000;x<50000;x++)
{
p=x;
p=p ^ 34256;
p=p % r1;
p=(p ^ d) + r2;
if(p>9000 && p<10000)
return x;
}
return -1;
}
//==================================================================================
function aleatorio()
{
let r=parseInt(Math.random() * (99999 - 11111) + 11111);
return r.toString();
}
//==================================================================================
function busca1(m)
{
let x=65000,p,r1,r2,y;
do
{
do
{
x++;
p=x;
p=p ^ 65798;
r2=p;
p=p << 3;
p=p ^ m;
r1=p;
}while(p>65000)
y=busca2(r1,r2,m);
}while(y==-1);
return [x,y];
}
function descarga()
{
const a = document.createElement('a');
a.href = 'data:text/plain;charset=utf-8,' + encodeURIComponent(document.getElementById("pass").value);
a.download = 'key.txt';
a.click();
}
</script>
</body>
</html>




























































