www.pudn.com > Pwl.zip > PWL.CPP


#include 
#include 

typedef struct tagPASSWORD_CACHE_ENTRY {
    WORD cbEntry;						// size of this entry, in bytes
    WORD cbResource;				// size of resource name, in bytes
    WORD cbPassword;				// size of password, in bytes
    BYTE iEntry;						// entry index 
    BYTE nType;							// type of entry
    BYTE abResource[1];			// start of resource name
														// password immediately follows resource name
} PASSWORD_CACHE_ENTRY;

char *buf, *ob1;
															
BOOL CALLBACK pce(PASSWORD_CACHE_ENTRY *x, DWORD)
{
	memmove(buf, x->abResource, x->cbResource);
	buf[x->cbResource] = 0;
	CharToOem(buf, ob1);
	printf("%-30s : ", ob1);

	memmove(buf, x->abResource+x->cbResource, x->cbPassword);
	buf[x->cbPassword] = 0;
	CharToOem(buf, ob1);
	printf("%s\n", ob1);

	return TRUE;
}

void main()
{
	buf = new char[1024];
	ob1 = new char[1024];
	puts("No security in this crazy world!\n"
		"Win95 PWL viewer (c) 1997 Vitas Ramanchauskas\n"
		"http://webdon.com, e-mail: vitas@webdon.com vitas@rocketmail.com, ICQ:3024702\n\n"
		"************\n"
		"!DISCLAIMER!\n"
		"!This program intended to be used for legal purpose only!\n"
		"************\n\nPress Enter to begin...\n");
	getchar();

	HINSTANCE hi = LoadLibrary("mpr.dll");
	if(!hi)
	{
		puts("Couldn't load mpr.dll");
		return;
	}
	WORD (__stdcall *enp)(LPSTR, WORD, BYTE, void*, DWORD) = 
		(WORD (__stdcall *)(LPSTR, WORD, BYTE, void*, DWORD))GetProcAddress(hi, "WNetEnumCachedPasswords");
	if(!enp)
	{
		puts("Couldn't import function");
		return;
	}
	(*enp)(0,0, 0xff, pce, 0);
	FreeLibrary(hi);
}