22 #include <samsrv/samsrv.h> 38 CHAR EmptyLmPassword[15] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,};
46 ERR(
"Calculation of the empty NT hash failed (Status 0x%08lx)\n",
Status);
55 ERR(
"Calculation of the empty LM hash failed (Status 0x%08lx)\n",
Status);
72 TRACE(
"SamIConnect(%p %p %lx %ld)\n",
89 ServerObject->
Trusted = Trusted;
93 TRACE(
"SamIConnect done (Status 0x%08lx)\n",
Status);
105 TRACE(
"SamIInitialize() called\n");
136 TRACE(
"SampInitializeRegistry() called\n");
164 if (
Ptr->General.Name.Buffer !=
NULL)
167 if (
Ptr->General.AdminComment.Buffer !=
NULL)
172 if (
Ptr->Name.Name.Buffer !=
NULL)
177 if (
Ptr->AdminComment.AdminComment.Buffer !=
NULL)
204 if (
Ptr->UserInformation.Buffer !=
NULL)
206 for (
i = 0;
i <
Ptr->UserInformation.EntriesRead;
i++)
208 if (
Ptr->UserInformation.Buffer[
i].AccountName.Buffer !=
NULL)
211 if (
Ptr->UserInformation.Buffer[
i].AdminComment.Buffer !=
NULL)
214 if (
Ptr->UserInformation.Buffer[
i].FullName.Buffer !=
NULL)
223 if (
Ptr->MachineInformation.Buffer !=
NULL)
225 for (
i = 0;
i <
Ptr->MachineInformation.EntriesRead;
i++)
227 if (
Ptr->MachineInformation.Buffer[
i].AccountName.Buffer !=
NULL)
230 if (
Ptr->MachineInformation.Buffer[
i].AdminComment.Buffer !=
NULL)
239 if (
Ptr->GroupInformation.Buffer !=
NULL)
241 for (
i = 0;
i <
Ptr->GroupInformation.EntriesRead;
i++)
243 if (
Ptr->GroupInformation.Buffer[
i].AccountName.Buffer !=
NULL)
246 if (
Ptr->GroupInformation.Buffer[
i].AdminComment.Buffer !=
NULL)
255 if (
Ptr->OemUserInformation.Buffer !=
NULL)
257 for (
i = 0;
i <
Ptr->OemUserInformation.EntriesRead;
i++)
259 if (
Ptr->OemUserInformation.Buffer[
i].OemAccountName.Buffer !=
NULL)
268 if (
Ptr->OemGroupInformation.Buffer !=
NULL)
270 for (
i = 0;
i <
Ptr->OemGroupInformation.EntriesRead;
i++)
272 if (
Ptr->OemGroupInformation.Buffer[
i].OemAccountName.Buffer !=
NULL)
302 if (
Ptr->General.OemInformation.Buffer !=
NULL)
305 if (
Ptr->General.DomainName.Buffer !=
NULL)
308 if (
Ptr->General.ReplicaSourceNodeName.Buffer !=
NULL)
316 if (
Ptr->Oem.OemInformation.Buffer !=
NULL)
321 if (
Ptr->Name.DomainName.Buffer !=
NULL)
326 if (
Ptr->Replication.ReplicaSourceNodeName.Buffer !=
NULL)
340 if (
Ptr->General2.I1.OemInformation.Buffer !=
NULL)
343 if (
Ptr->General2.I1.DomainName.Buffer !=
NULL)
346 if (
Ptr->General2.I1.ReplicaSourceNodeName.Buffer !=
NULL)
376 for (
i = 0;
i <
Ptr->EntriesRead;
i++)
378 if (
Ptr->Buffer[
i].Name.Buffer !=
NULL)
432 if (
Ptr->General.Name.Buffer !=
NULL)
435 if (
Ptr->General.AdminComment.Buffer !=
NULL)
440 if (
Ptr->Name.Name.Buffer !=
NULL)
448 if (
Ptr->AdminComment.AdminComment.Buffer !=
NULL)
486 for (
i = 0;
i <
Ptr->Count;
i++)
506 if (
Ptr->SecurityDescriptor !=
NULL)
540 if (
Ptr->General.UserName.Buffer !=
NULL)
543 if (
Ptr->General.FullName.Buffer !=
NULL)
546 if (
Ptr->General.AdminComment.Buffer !=
NULL)
549 if (
Ptr->General.UserComment.Buffer !=
NULL)
554 if (
Ptr->Preferences.UserComment.Buffer !=
NULL)
557 if (
Ptr->Preferences.Reserved1.Buffer !=
NULL)
562 if (
Ptr->Logon.UserName.Buffer !=
NULL)
565 if (
Ptr->Logon.FullName.Buffer !=
NULL)
568 if (
Ptr->Logon.HomeDirectory.Buffer !=
NULL)
571 if (
Ptr->Logon.HomeDirectoryDrive.Buffer !=
NULL)
574 if (
Ptr->Logon.ScriptPath.Buffer !=
NULL)
577 if (
Ptr->Logon.ProfilePath.Buffer !=
NULL)
580 if (
Ptr->Logon.WorkStations.Buffer !=
NULL)
583 if (
Ptr->Logon.LogonHours.LogonHours !=
NULL)
588 if (
Ptr->LogonHours.LogonHours.LogonHours !=
NULL)
593 if (
Ptr->Account.UserName.Buffer !=
NULL)
596 if (
Ptr->Account.FullName.Buffer !=
NULL)
599 if (
Ptr->Account.HomeDirectory.Buffer !=
NULL)
602 if (
Ptr->Account.HomeDirectoryDrive.Buffer !=
NULL)
605 if (
Ptr->Account.ScriptPath.Buffer !=
NULL)
608 if (
Ptr->Account.ProfilePath.Buffer !=
NULL)
611 if (
Ptr->Account.AdminComment.Buffer !=
NULL)
614 if (
Ptr->Account.WorkStations.Buffer !=
NULL)
617 if (
Ptr->Account.LogonHours.LogonHours !=
NULL)
622 if (
Ptr->Name.UserName.Buffer !=
NULL)
625 if (
Ptr->Name.FullName.Buffer !=
NULL)
630 if (
Ptr->AccountName.UserName.Buffer !=
NULL)
635 if (
Ptr->FullName.FullName.Buffer !=
NULL)
643 if (
Ptr->Home.HomeDirectory.Buffer !=
NULL)
646 if (
Ptr->Home.HomeDirectoryDrive.Buffer !=
NULL)
651 if (
Ptr->Script.ScriptPath.Buffer !=
NULL)
655 if (
Ptr->Profile.ProfilePath.Buffer !=
NULL)
659 if (
Ptr->AdminComment.AdminComment.Buffer !=
NULL)
664 if (
Ptr->WorkStations.WorkStations.Buffer !=
NULL)
669 ERR(
"Information class UserSetPasswordInformation cannot be queried!\n");
685 if (
Ptr->Parameters.Parameters.Buffer !=
NULL)
690 if (
Ptr->All.UserName.Buffer !=
NULL)
693 if (
Ptr->All.FullName.Buffer !=
NULL)
696 if (
Ptr->All.HomeDirectory.Buffer !=
NULL)
699 if (
Ptr->All.HomeDirectoryDrive.Buffer !=
NULL)
702 if (
Ptr->All.ScriptPath.Buffer !=
NULL)
705 if (
Ptr->All.ProfilePath.Buffer !=
NULL)
708 if (
Ptr->All.AdminComment.Buffer !=
NULL)
711 if (
Ptr->All.WorkStations.Buffer !=
NULL)
714 if (
Ptr->All.UserComment.Buffer !=
NULL)
717 if (
Ptr->All.Parameters.Buffer !=
NULL)
720 if (
Ptr->All.LmOwfPassword.Buffer !=
NULL)
723 if (
Ptr->All.NtOwfPassword.Buffer !=
NULL)
726 if (
Ptr->All.PrivateData.Buffer !=
NULL)
729 if (
Ptr->All.SecurityDescriptor.SecurityDescriptor !=
NULL)
732 if (
Ptr->All.LogonHours.LogonHours !=
NULL)
PGENERIC_MAPPING pServerMapping
VOID NTAPI SamIFree_SAMPR_GROUP_INFO_BUFFER(PSAMPR_GROUP_INFO_BUFFER Ptr, GROUP_INFORMATION_CLASS InformationClass)
VOID NTAPI SamIFree_SAMPR_ALIAS_INFO_BUFFER(PSAMPR_ALIAS_INFO_BUFFER Ptr, ALIAS_INFORMATION_CLASS InformationClass)
enum _DOMAIN_DISPLAY_INFORMATION DOMAIN_DISPLAY_INFORMATION
BOOL SampIsSetupRunning(VOID)
wchar_t * PSAMPR_SERVER_NAME
_Must_inspect_result_ _In_ PFSRTL_PER_STREAM_CONTEXT Ptr
NTSTATUS WINAPI SystemFunction006(LPCSTR password, LPSTR hash)
static NTSTATUS SampInitHashes(VOID)
ENCRYPTED_NT_OWF_PASSWORD EmptyNtHash
RTL_RESOURCE SampResource
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
enum _GROUP_INFORMATION_CLASS GROUP_INFORMATION_CLASS
VOID NTAPI SamIFree_SAMPR_RETURNED_USTRING_ARRAY(PSAMPR_RETURNED_USTRING_ARRAY Ptr)
BOOL SampInitializeSAM(VOID)
NTSTATUS NTAPI SamIInitialize(VOID)
enum _DOMAIN_INFORMATION_CLASS DOMAIN_INFORMATION_CLASS
VOID NTAPI SamIFreeVoid(PVOID Ptr)
NTSTATUS NTAPI SamIConnect(IN PSAMPR_SERVER_NAME ServerName, OUT SAMPR_HANDLE *ServerHandle, IN ACCESS_MASK DesiredAccess, IN BOOLEAN Trusted)
NTSYSAPI VOID NTAPI RtlInitializeResource(_In_ PRTL_RESOURCE Resource)
#define NT_SUCCESS(StatCode)
NTSTATUS WINAPI SystemFunction007(const UNICODE_STRING *string, LPBYTE hash)
enum _ALIAS_INFORMATION_CLASS ALIAS_INFORMATION_CLASS
VOID NTAPI SamIFree_SAMPR_USER_INFO_BUFFER(PSAMPR_USER_INFO_BUFFER Ptr, USER_INFORMATION_CLASS InformationClass)
VOID NTAPI SamIFree_SAMPR_DISPLAY_INFO_BUFFER(PSAMPR_DISPLAY_INFO_BUFFER Ptr, DOMAIN_DISPLAY_INFORMATION InformationClass)
VOID NTAPI SamIFree_SAMPR_GET_MEMBERS_BUFFER(PSAMPR_GET_MEMBERS_BUFFER Ptr)
VOID NTAPI SamIFree_SAMPR_ENUMERATION_BUFFER(PSAMPR_ENUMERATION_BUFFER Ptr)
VOID NTAPI SamIFree_SAMPR_ULONG_ARRAY(PSAMPR_ULONG_ARRAY Ptr)
NTSTATUS SampInitDatabase(VOID)
ENCRYPTED_LM_OWF_PASSWORD EmptyLmHash
VOID NTAPI SamIFree_SAMPR_SR_SECURITY_DESCRIPTOR(PSAMPR_SR_SECURITY_DESCRIPTOR Ptr)
VOID SampStartRpcServer(VOID)
NTSTATUS NTAPI SampInitializeRegistry(VOID)
VOID NTAPI SamIFree_SAMPR_DOMAIN_INFO_BUFFER(PSAMPR_DOMAIN_INFO_BUFFER Ptr, DOMAIN_INFORMATION_CLASS InformationClass)
_In_ PIO_STACK_LOCATION _Inout_ PFILE_OBJECT _Inout_ PVCB _Outptr_result_maybenull_ PDCB _In_ PDCB _In_ PDIRENT _In_ ULONG _In_ ULONG _In_ PUNICODE_STRING _In_ PACCESS_MASK DesiredAccess
VOID NTAPI SamIFree_SAMPR_PSID_ARRAY(PSAMPR_PSID_ARRAY Ptr)
_In_ FILTER_INFORMATION_CLASS InformationClass
void __RPC_USER MIDL_user_free(void *p)
VOID NTAPI SamIFree_SAMPR_GET_GROUPS_BUFFER(PSAMPR_GET_GROUPS_BUFFER Ptr)
NTSYSAPI VOID NTAPI RtlMapGenericMask(PACCESS_MASK AccessMask, PGENERIC_MAPPING GenericMapping)
NTSTATUS SampOpenDbObject(IN PSAM_DB_OBJECT ParentObject, IN LPWSTR ContainerName, IN LPWSTR ObjectName, IN ULONG RelativeId, IN SAM_DB_OBJECT_TYPE ObjectType, IN ACCESS_MASK DesiredAccess, OUT PSAM_DB_OBJECT *DbObject)
enum _USER_INFORMATION_CLASS USER_INFORMATION_CLASS