Obtener la contraseña del screensaver en W98


 

Obtener la contraseña del protector de pantalla en Windows 98 no es muy difícil, pues esta se encuentra encriptada en el registro. Una vez que sabes donde está puedes probar a descubrir el método de encriptacion que utiliza probando con varias contraseñas y analizando la contraseña encriptada... aunque yo no descubri este método, encontré este código en una página de AstaLaVista.com. Hasta donde sé le pertenece a un tal Rohit Arora. Modifiqué el código original para que lea el registro directamente y lo convertí en proyecto VC++. Si quieres s�lo el ejecutable está dentro del proyecto.


screensaverpass.c



/**********************************************************************\
  This program was developed by ROHIT ARORA
  modified by Esau Rodriguez (=ex=) (no useful in XP but ok in W98)
\**********************************************************************/
#include <windows.h>
#include <winreg.h>
#include <stdio.h>
#include <ctype.h>

#define  MAX_LEN_PWD 28

void main()
{

  int k = 1;
  int j;
  int dec[] = {4,8,14,14,7,6,1,13,6,7,6,9,10,1,1,11,7,10,8,12,4,7,15,8,5,4,9,5};

  int pass1[MAX_LEN_PWD];

  HKEY hParentKey;

  DWORD state = 0;
  DWORD type = 0;
  DWORD size = MAX_LEN_PWD;

  SECURITY_ATTRIBUTES sa = {sizeof(sa), 0, 1};
  char pass[MAX_LEN_PWD];


  //read the registry
  RegCreateKeyEx (HKEY_CURRENT_USER,
          "Control Panel\\Desktop",
          0,
          "",
          REG_OPTION_NON_VOLATILE,
          KEY_ALL_ACCESS,
          &sa,
          &hParentKey,
          &state);

  if (state==2)
  {
    LONG ln;
    
    ln = RegQueryValueEx (hParentKey,
                "ScreenSave_Data",
                0,
                &type,
                (BYTE *) &pass[0],
                &size);

    if (ln != ERROR_SUCCESS)
    {
      printf ("  Can't find pwd!\n");
      printf ("  No se puede encontrar pwd!\n");
      return;
    }

    k = (int) (size - 1);

    //decode pwd
    for (j = 0; j < k; j++)
    {
      if (isalpha(pass[j]))
        pass1[j]=pass[j]-55;
      else
        pass1[j]=pass[j]-48;

      pass1[j]=pass1[j]^dec[j];
    }

    printf ("    *************---------***********\n");
    printf ("    *************exe_q_tor***********\n");
    printf ("    *************---------***********\n\n");

    
    printf("    Your screen saver password is:\n");
    printf("    La clave del protector es:\n\n    ");

    for (j = 0; j < k; j += 2)
      printf("%c",__toascii(16*pass1[j]+pass1[j+1]));

    printf ("\n\n    *************---------***********\n");
    printf ("    *************exe_q_tor***********\n");
    printf ("    *************---------***********\n\n");
  }
  else
  {
    printf ("  Can't read registry!\n");
    printf ("  No se pudo leer el registro!\n");
  }
}

 

 

Esaú Rodríguez Oscanoa

 


Diseño y coordinación : Esaú Rodriguez Oscanoa - Lima - Per�

Esta página se ve mejor en Mozilla Firefox a 1024x768


Hosted by www.Geocities.ws

1