Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1997.
//
// File: crack.c
//
// Contents:
//
// Classes:
//
// Functions:
//
// History: 9-07-97 RichardW Created
//
//----------------------------------------------------------------------------
#include "pwdsspp.h"
BOOL CacheInitialize( VOID ) { return TRUE ; }
BOOL PwdCrackName( PWSTR DN, PWSTR FlatDomain, PWSTR FlatUser ) { WCHAR FlatName[ 128 ]; WCHAR DnsDomain[ 256 ]; DWORD DnsSize ; DWORD Size ; NTSTATUS Status ; DWORD DsError ; PWSTR Scan ; PVOID DsContext ;
Size = sizeof( FlatName ) / sizeof(WCHAR) ; DnsSize = sizeof( DnsDomain ) / sizeof( WCHAR );
DsContext = THSave();
__try { Status = CrackSingleName( DS_UNKNOWN_NAME, 0, DN, DS_NT4_ACCOUNT_NAME, &DnsSize, DnsDomain, &Size, FlatName, &DsError );
} __except( EXCEPTION_EXECUTE_HANDLER ) { Status = GetExceptionCode(); }
if ( !NT_SUCCESS( Status ) ) { THRestore( DsContext );
return FALSE ; }
if ( DsError == DS_NAME_ERROR_DOMAIN_ONLY ) { Size = sizeof( FlatName ) / sizeof( WCHAR ) ;
DnsSize = sizeof( DnsDomain ) / sizeof( WCHAR );
Status = CrackSingleName( DS_UNKNOWN_NAME, DS_NAME_FLAG_GCVERIFY, DN, DS_NT4_ACCOUNT_NAME, &DnsSize, DnsDomain, &Size, FlatName, &DsError );
}
THRestore( DsContext );
if ( !NT_SUCCESS( Status ) ) { return FALSE ; }
if ( DsError == DS_NAME_NO_ERROR ) { Scan = wcschr( FlatName, L'\\' );
if ( Scan ) { *Scan++ = L'\0' ; wcscpy(FlatDomain, FlatName ); wcscpy(FlatUser, Scan ); } else { wcscpy(FlatUser, FlatName ); FlatDomain[0] = L'\0'; }
return TRUE ;
}
return FALSE ;
}
|