Páginas

anun1

viernes, 30 de octubre de 2026

Copiar y Descargar el Codigo HTML De Una Pagina Web Ya Cargada

Hola amigos hoy veremos como descargar el código fuente de una página web ya sé que si damos clic derecho y ver código fuente se puede ver y copiar, pero que pasa si lo hacemos así no podemos descargar los elementos que se cargan después eso se puede ver si damos clic derecho y luego en inspeccionar, hay veremos elementos que se cargaron después, me refiero al código DOM (Document Object Model o Modelo de Objetos del Documento)

Para hacer esto seme ocurrió probar este código primero, lo probé en una página de Instagram

const code = document.documentElement.outerHTML;
const a = document.createElement('a');
   a.href = 'data:text/plain;charset=utf-8,' + encodeURIComponent(code);
   a.download = 'pagina.html'; 
   a.click();

Si se descarga pero si aparece esta ventana


Aparece porque yo tengo configurado el navegador así, y si aparece se me pierde el mause... Pero solo doy en enter y se descarga y listo ya tenemos el código completo... Pero ami seme ocurrió otro método y lo cale en la página de Instagram con una ventana de incógnito, para eso nos iremos a Instagram a cualquier perfil y damos clic derecho y luego en inspeccionar



Después nos iremos a la pestaña consola y borramos lo que hay así



Ahora copeamos el siguiente código y lo pegamos en la consola....NOTA: yo estoy desde una ventana de incógnito, no por miedo, sino por mi privacidad... no peguen códigos de desconocidos en la consola si no saben lo que hace, ya que como dice el mensaje pueden ser víctimas de robo de cuenta, seguimos 

const code = document.documentElement.outerHTML; 
document.write('<textarea id="log" style="width:70%; height:400px;"></textarea>');
document.getElementById('log').value = code;

const boton = document.createElement('button');
boton.textContent = 'Copiar El Codigo HTML';
boton.onclick = () => navigator.clipboard.writeText(code);
document.body.appendChild(boton);

Este código ya no descargará el código, lo que hace es crear un cuadro de texto con el código HTML adentro y aparte un botón para copiarlo aquí lo muestro



Solo damos clic en copiar y lo pegamos en el bloc de notas y aguardamos como "pagina.html" y veremos lo siguiente


Como vemos nos muestra las imágenes y lo demás, esto no pasaría si damos clic derecho, ver código fuente y copiar tal código

Bueno eso es todo saludos Flamery podría haberlo hecho en Node.js o Python, pero no mejor preferí hacerlo de forma manual...y otra cosa son cosas simples las que enseño, ya que no soy profesional no me considero uno, soy tan solo un novato que está aprendiendo y publica lo que está aprendiendo

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 nos manda a esta zona


Hay podemos ver el mensaje correcto y más arriba una API que compara así que le ponemos un breakpoint y lo ejecutamos


Y como vemos nos pide nombre de usuario y serial yo le pondré como nombre "polon" y como serial "123456" y damos clic en comprobar



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


Al parecer no se le puede hacer keygen, ya que el serial es el mismo para todos los nombres, se podría decir que lo tenemos resuelto, pero se preguntaran de donde viene esa cadena pues lo buscaremos y es más arriba en la línea 004021EA vemos que está la API vbaLenBstr que es la encargada de decirnos la longitud de una cadena


Y por debajo de la API vbaLenBstr  se encuentra un ciclo que toma digito por dígito de una cadena o número constante que es este "1345679" y toma cada dígito de esta cadena y lo convierte a su valor ASCII para después sumarle A que en decimal es 10 y para después lo convierte de nuevo a cadena y el resultado del ciclo es el serial ";=>?@AC"....Aquí les dejo en JavaScript que es lo que hace el programa l

<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>

Aquí una foto



Bueno amigos creo que eso es todo saludos Flamer y espero les haya gustado

Codigo para poder descargar imagenes de instagram

Hola amigos hoy veremos un tema ya viejo que hace mucho lo trate, pero ahora vengo con otra versión más actualizada, aquí los temas que trate en el pasado



Bueno pues un familiar me pregunto si servían los códigos para una cuenta de instagram, ya que quería descargar todas las imágenes de un perfil, así que me di a la tarea de buscarle, así que aquí se los muestro como lo hice.... NOTA: el perfil que mostraré continuación no es el que el quería, así que medí a la tarea de buscar uno de prueba, primero esto le pasaba a él, daba clic derecho ala imagen y después clic en guardar como y descargaba un archivo .HTML y no la imagen


Ahora como no se puede de esa forma, nosotros daremos clic derecho y después clic en inspeccionar


Vemos que nos aparece un mensaje de advertencia


Nota: no peguen códigos de extraños en la consola y menos si están logueados, yo para este ejemplo estoy desde una ventana de incógnito y el perfil que estoy viendo es público

Bueno como queremos las imágenes pondremos el siguiente código en la consola

$$('img').forEach(img => console.log(img.src));
 
Y miren lo que aparece en la consola


Ahora si lo quieren de una forma más simple o sencilla este es el código

let nodos = document.getElementsByTagName("img");
for (let i = 0; i < nodos.length; i++)
{
   console.log(nodos[i].src);
}

Y aparece lo mismo


Ahora si quieren saber todos los links de la página ponen este código

console.log($$('a').map(a => a.href).join('\n'));

Y si quieren otra versión más entendible

let nodos = document.getElementsByTagName("a");
for (let i = 0; i < nodos.length; i++)
{
    console.log(nodos[i].href);
}

Y parece esto


Bueno creo que eso es todo saludos flamer y espero les sirva de algo

martes, 27 de octubre de 2026

Solucion Al KeyFileMe#01 by deurus

Hola amigos hoy veremos un reto del usuario deurus es un keyfile(lo baje de crackmes.one y de hay saque el nombre de usuario) es un reto igual que un crackme solo con la diferencia que el serial se guarda en un archivo no se escribe en un cuadro de texto como los demás retos, aquí una foto del reto


Damos clic en el botón aceptar y se cierra, así que lo abrimos con x32dbg y buscaremos como se llama el archivo que leerá la contraseña, asi que buscamos en los string el mensaje que nos muestra arriba y aquí esta


Así que damos doble clic en él y nos manda a esta zona... Nota: en la imagen de arriba nos muestra el mensaje correcto y el incorrecto, pero eso lo veremos después


Así que ponemos un breakpoint como lo muestra la imagen, pero al parecer en la imagen se puede ver un string que dice "key.txt" al parecer así se llamara el archivo, asi que lo ejecutamos y vemos que nos muestra

Y si hay esta la ruta, entonces el archivo se llama "key.txt" así que pasamos a crearlo para ver que sucede y adentro le ponemos "123456" y vemos que ahora al ejecutarlo no se cierra, entonces ahora nos iremos de nuevo a los string y buscamos el mensaje de registrado


Y nos lleva a esta zona 


Como vemos en esas líneas compara así que más arriba se genera el serial así que nos vamos hasta la línea 004654A2 y miramos que compara 6 con 14 que en decimal es 20


Como vemos esta comparando lo que está dentro del archivo que son 6 dígitos con 20, eso quiere decir que el serial a buscar es de 20 dígitos, así que le pondremos 20 dígitos al archivo "key.txt" yo le pondré como serial "1234567890abcdefghij" y pasamos el primer filtro, pero ahora nos topamos con otro este



Y si entramos en el CALL de arriba contiene este código

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                                            |

Así que lo traceamos y averiguamos que solo acepta números, si ponemos letras nos rebota el salto, así que modificamos el serial del archivo yo pondré "01234567890123456789"


Ahora pondré como serial en el archivo  "11111222223333344444" y nos muestra lo siguiente


Ahora si seguimos ya sabremos que pasa con cada parte del serial y vemos que xorea 11111 con 34256


Y más abajo xorea 33333 con 65798 y nos da x resultado, así que vemos que solo toma 2 partes del código, la primera y la tercera aquí les dejo el código de generación del serial

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                 |

Bueno si analizan el código verán que en la línea 00465541...EDX toma el valor 1B desde una dirección de memoria


Y en la línea 0046554F....EDX vuelve a tomar otro valor desde otra dirección que es A


Si se preguntan que son esos valores pues les cuento el valor 1B es el día 27 en decimal y la A es el mes 10 en decimal que es octubre... Ahora veremos de donde toma esos valores para eso nos vamos a los módulos y pondremos un breakpoint en la API GetLocalTime esta


Y se detiene justo en la API y traceamos un poco con F8 y vemos en los registros los valores que les mencione


Bueno ya que saben de donde salen esos valores 1B y A y que toma los primeros 5 dígitos del serial y los otros 5 dígitos de la tercera parte del serial, hace las operaciones del código que les deje arriba y al final en la línea 00465611 compara si es menor que 65000



Y líneas más abajo en la línea 0046561D pregunta si es mayor a 9000


Y por último en la línea 0046562B pregunta si es menor a 10000


Bueno y si todo sale bien este es el mensaje que muestra


Ahora les dejo el generador de claves o keygen... Solo copean y pegan en el bloc de notas como "genera.html"

<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>

Aquí una imagen


Bueno amigos creo que eso es todo espero les haya gustado saludos Flamer