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.
 
 
 
 
 
 

127 lines
2.5 KiB

//+---------------------------------------------------------------------------
//
// 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 ;
}