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





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
Блин кто может? 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-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach