информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медЗа кого нас держат?Где водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Блин кто может? 11.08.03 12:41  
Автор: Darkhelmet Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Кто в силах переписать вот этот исходник с Си на Delphi?

Он и вам полезен буде!!! =)

Я Си нифига не знаю... =(

#include <windows.h>
#include <Ntsecapi.h>
#include <stdio.h>

void hexprint(char *buf, int size)
{
for (int i=0;i<size;i+=16)
{
int j=0;
while((i+j<size)&&(j<16))
{
int z=(unsigned char)buf[i+j];
printf("%02X ",z);
j++;
if (j==8) printf(" ");
}
for (j=j;j<18;j++) printf(" ");
j=0;
while((i+j<size)&&(j<16))
{
if ((unsigned char)buf[i+j]>=' ') printf("%c",buf[i+j]); else
printf(".");
j++;
if (j==8) printf(" ");
}
printf("\n");
}
printf("\n");
}

extern "C" __declspec(dllimport) VOID __stdcall
RtlInitUnicodeString(
PUNICODE_STRING DestinationString,
PCWSTR SourceString
);

extern "C" __declspec(dllimport) VOID __stdcall
RtlConvertSidToUnicodeString(
PUNICODE_STRING usSID,
SID *sid,
DWORD unkown);

#define TARGET_SYSTEM_NAME L"mysystem"
LSA_HANDLE GetPolicyHandle()
{
LSA_OBJECT_ATTRIBUTES ObjectAttributes;
WCHAR SystemName[] = TARGET_SYSTEM_NAME;
LSA_UNICODE_STRING lusSystemName;
NTSTATUS ntsResult;
LSA_HANDLE lsahPolicyHandle;

ZeroMemory(&ObjectAttributes, sizeof(ObjectAttributes));

/*SystemNameLength = 0;//wcslen(SystemName);
lusSystemName.Buffer = NULL;//SystemName;
lusSystemName.Length = SystemNameLength * sizeof(WCHAR);
lusSystemName.MaximumLength= (SystemNameLength+1) * sizeof(WCHAR);*/

RtlInitUnicodeString(&lusSystemName,NULL/*TARGET_SYSTEM_ NAME*/);

ntsResult = LsaOpenPolicy(
&lusSystemName, //Name of the target system.
&ObjectAttributes,
POLICY_ALL_ACCESS, //Desired access permissions.
&lsahPolicyHandle //Receives the policy handle.
);

if (ntsResult)
{
wprintf(L"OpenPolicy returned %lu\n",
LsaNtStatusToWinError(ntsResult));
return NULL;
}
return lsahPolicyHandle;
}

int main(int argc, char* argv[])
{
char *lpSystemName = NULL;

LSA_HANDLE hPolicy = GetPolicyHandle();
LSA_UNICODE_STRING *Data;
LSA_UNICODE_STRING KeyName;
WCHAR Template[]=L"RasDialParams!%s#%d";
char AccountName[1024];
DWORD sAccountName=sizeof(AccountName);
GetUserName(AccountName,&sAccountName);
union {
SID s;
char c[1024];
} sid;
DWORD ssid = sizeof(sid);
char DomainName[1024];
DWORD sDomainName = sizeof(DomainName);
SID_NAME_USE peUse;
if
(!LookupAccountName(lpSystemName,AccountName,(SID*)&sid. c,&ssid,(char*)&DomainName,&sDomainName,&peU se))
printf("LookupAccountName error %d\n",GetLastError());
WCHAR wcSIDbuf[100];
UNICODE_STRING wcSID = {sizeof(wcSIDbuf),sizeof(wcSIDbuf),wcSIDbuf};
RtlConvertSidToUnicodeString(&wcSID,&sid.s,0);
wprintf(L"%s\n",wcSIDbuf);
WCHAR KeyNameW[1024];
swprintf(KeyNameW,Template,wcSIDbuf,0);
wprintf(L"%s\n",KeyNameW);
RtlInitUnicodeString(&KeyName,KeyNameW);
LsaRetrievePrivateData(hPolicy,&KeyName,&Data);
if (Data) //wprintf(L"%s\n",Data->Buffer);
hexprint((char*)Data->Buffer,Data->Length);
return 0;
}
1




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


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