o
    jh                    @   s#  d dl mZ d dl mZ d dlmZ d dlZd dlZd dlmZ	 d dl
mZ d dlmZ d dlmZ d d	lmZmZmZmZmZmZmZmZ d d
lmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' d dl(m)Z) d dl*m+Z+ d dl,m-Z-m.Z.m/Z/ d dl0m1Z1 edZ2G dd de)Z3e'Z4dZ5dZ6dZ7dZ8dZ9dZ:dZ;dZ<dZ=dZ>dZ?dZ@dZAdZBd ZCd!ZDd"ZEd#ZFd$ZGd%ZHdZIdZJdZKdZLd ZMd!ZNd&ZOd'ZPd(ZQd)ZRd*ZSd+ZTd,ZUd-ZVd.ZWdZXdZYdZZdZ[d Z\d/Z]d#Z^d$Z_d0Z`dZadZbdZcdZdd Zed/Zfd1Zgd2Zhd3ZidZjdZkdZldZmd Znd!Zod&Zpd'Zqd(Zrd)Zsd*Ztd+Zud4Zvd5Zwd6ZxdZydZzdZ{dZ|d Z}d!Z~d&Zd'Zd(Zd)Zd*Zd7Zd8Zd9Zd:Zd;ZdZdZdZdZd<Zd=Zd>Zd?ZdZdZd@ZdAZdZdBZd ZdZdCZdZdDZdEZdFZdGZdZdHZdZdZdZdZdZdZdZdIZdJZdKZdZdZdZdZd Zd!Zd&Zd'Zd(Zd)Zd*Zd7Zd8Zd9Zd:Zd;ZdZdZdZdZd<Zd=ZdZdZdZd Zd!Zd&Zd'Zd(Zd)Zd7Zd8Zd9ZdZdZdZdZd<Zd=Zd>Zd?ZdZdZd@ZdAZdLZdMZdNZd)ZdOZdPZdQZdRZdSZdZdZdZdZd Zd!ZdZdZdZdZd Zd!ZdTdU ZdVdW ZdXdY ZdZd[ Zd\d] ZG d^d_ d_eZG d`da daeZG dbdc dceZG ddde deeZG dfdg dgeZG dhdi dieZG djdk dkeZG dldm dmeZG dndo doeZG dpdq dqeZG drds dseZG dtdu dueZeZG dvdw dweZ e ZG dxdy dyeZG dzd{ d{eZG d|d} d}eZG d~d deZG dd deZG dd deZG dd deZG dd deZ	G dd deZ
G dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZ G dd deZ!G dd deZ"G dd deZ#G dd deZ$G dd deZ%G dd deZ&G ddÄ deZ'G ddń deZ(G ddǄ deZ)G ddɄ deZ*G dd˄ deZ+G dd̈́ deZ,G ddτ deZ-G ddф deZ.G ddӄ deZ/G ddՄ deZ0G ddׄ deZ1G ddل deZ2G ddۄ deZ3G dd݄ deZ4G dd߄ deZ5G dd deZ6G dd deZ7G dd deZ8G dd deZ9G dd deZ:G dd deZ;G dd deZ<G dd deZ=G dd deZ>G dd deZ?G dd deZ@G dd deZAG dd deZBG dd deZCG dd deZDG dd deZEG d d deZFG dd deZGG dd deZHG dd deZIG dd	 d	eZJG d
d deZKG dd deZLG dd deZMG dd deZNG dd deZOG dd deZPG dd deZQG dd deZRG dd deZSG dd deZTG dd deZUG d d! d!eZVG d"d# d#eZWG d$d% d%eZXG d&d' d'eZYG d(d) d)eZZG d*d+ d+eZ[G d,d- d-eZ\G d.d/ d/eZ]G d0d1 d1eZ^G d2d3 d3eZ_G d4d5 d5eZ`G d6d7 d7eZaG d8d9 d9eZbG d:d; d;eZcG d<d= d=eZdG d>d? d?eZeG d@dA dAeZfG dBdC dCeZgG dDdE dEeZhG dFdG dGeZiG dHdI dIeZjG dJdK dKeZkG dLdM dMeZlG dNdO dOeZmG dPdQ dQeZnG dRdS dSeZoG dTdU dUeZpG dVdW dWeZqG dXdY dYeZrG dZd[ d[eZsG d\d] d]eZtG d^d_ d_eZuG d`da daeZvG dbdc dceZwG ddde deeZxG dfdg dgeZyG dhdi dieZzG djdk dkeZ{G dldm dmeZ|G dndo doeZ}G dpdq dqeZ~G drds dseZG dtdu dueZG dvdw dweZG dxdy dyeZG dzd{ d{eZG d|d} d}eZG d~d deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG ddÄ deZG dĐdń deZG dƐdǄ deZG dȐdɄ deZG dʐd˄ deZG d̐d̈́ deZG dΐdτ deZG dАdф deZG dҐdӄ deZG dԐdՄ deZG d֐dׄ deZG dؐdل deZG dڐdۄ deZG dܐd݄ deZG dސd߄ deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG d d deZG dd deZG dd deZG dd deZG dd	 d	eZG d
d deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG d d! d!eZG d"d# d#eZG d$d% d%eZG d&d' d'eZG d(d) d)eZG d*d+ d+eZG d,d- d-eZG d.d/ d/eZG d0d1 d1eZG d2d3 d3eZG d4d5 d5eZG d6d7 d7eZG d8d9 d9eZG d:d; d;eZG d<d= d=eZG d>d? d?eZG d@dA dAeZG dBdC dCeZG dDdE dEeZG dFdG dGeZG dHdI dIeZG dJdK dKeZG dLdM dMeZG dNdO dOeZG dPdQ dQeZG dRdS dSeZG dTdU dUeZG dVdW dWeZG dXdY dYeZG dZd[ d[eZG d\d] d]eZG d^d_ d_eZG d`da daeZG dbdc dceZG ddde deeZG dfdg dgeZG dhdi dieZG djdk dkeZG dldm dmeZG dndo doeZG dpdq dqeZG drds dseZG dtdu dueZ G dvdw dweZG dxdy dyeZG dzd{ d{eZi d eefdeefdeefd|eefd}eefd~eefdeefdeefdeefdeefdeefdeefdeefdeefdeefd eefdeefi deefdeefdeefdeefdeefdeefdeefdeefdeefdeefdeefdeefdeĐefdeƐefd!eȐefdeʐefde̐efi deΐefdeАefdeҐefdeԐefde֐efdeؐefdeڐefdeܐefdeސefdeefdeefdeefdeefdeefdeefdeefdeefeefeefeefeefeefeefeefeefe efeefd
Zde:dfddZde:dfddZde:fddZde:fddZe:efddZ	e:d fddZ
e:d fddZe:d fddZd)ddZd)ddZd)ddZed dfddÄZetjd ddfdĐdńZetjd ddfdƐdǄZetjd ddfdȐdɄZetjdfdːd̄Zetjdfd͐d΄Ze]fdϐdЄZe]fdѐd҄Zee]fdӐdԄZe]fdՐdքZe.jfdאd؄Ze.jfdِdڄZe5jfdېd܄Ze;j fdݐdބZ!e\j"fdߐdZ#e\j"fddZ$dd Z%dd Z&dd Z'dd Z(dd Z)dd Z*dd Z+dd Z,dd Z-dd Z.dd Z/dd Z0dd Z1dd Z2dd  Z3dd Z4dd Z5dd Z6dd Z7d	d
 Z8dd Z9d*ddZ:dd Z;dd Z<dd Z=dd Z>dd Z?dd Z@dd ZAdd ZBdd  ZCd!d" ZDd#d$ ZEd%d& ZFd+d'd(ZGdS (,      )division)print_function)	unhexlifyN)logger)Enum)uuidtup_to_bin)	Structure)NDRCALLNDR	NDRSTRUCTNDRUNION
NDRPOINTERNDRUniConformantArrayNDRUniConformantVaryingArrayNDRENUM)NULLRPC_UNICODE_STRINGULONGUSHORTUCHARLARGE_INTEGERRPC_SIDLONGSTRLPBYTESECURITY_INFORMATIONPRPC_SIDPRPC_UNICODE_STRINGLPWSTR)DCERPCException)NTStatus)DES
cipherMODERC4)hashlib)z$12345778-1234-ABCD-EF00-0123456789ACz1.0c                   @   s   e Zd ZdddZdd ZdS )DCERPCSessionErrorNc                 C   s   t | ||| d S )N)r   __init__)selferror_string
error_codepacket r+   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/aiosmb/dcerpc/v5/samr.pyr&   *   s   zDCERPCSessionError.__init__c                 C   s4   | j }d }z
d|t|jf W S    d| j   Y S )Nz#SAMR SessionError: code: 0x%x - %s z+SAMR SessionError: unknown error code: 0x%x)r)   r    name)r'   keyr-   r+   r+   r,   __str__-   s   zDCERPCSessionError.__str__)NNN)__name__
__module____qualname__r&   r/   r+   r+   r+   r,   r%   )   s    
r%   i   i   i   i   i   i   l        i   @i    i                      i?  i  i  i!  @            i   i i  iz i i  i  i  i  i  i iD  iA  i   i   i    i @  i   i   i    i  @ i   i   i   l        i  i   i   0i  0i  0i  @l       l       l       i  i  i  i  i  i  i   i	  c                 C   sd   d}| d d  dd }t|d d d}||}t|dd  d}||}|| S )Ns   KGS!@#$%       ascii)ljustupperr!   encodeencrypt)password	LM_SECRETt1dr1r2r+   r+   r,   LMOWFv1  s   

rK   c                 C   s&   t | tdu r| d} t|  S )NTutf-16le)
isinstancestrrC   r$   md4digest)rE   r+   r+   r,   NTOWFv1"  s   
rQ   c                 C   s  t d}| d d? d@ |d< | d d@ d> | d d? B |d< | d d@ d> | d d? B |d< | d d	@ d
> | d d
? B |d< | d d@ d> | d
 d? B |d
< | d
 d@ d> | d d? B |d< | d d@ d> | d d	? B |d< | d d@ |d	< tdd |D }t|S )Nr6   r   r3         r4         r?   r5         ?   c                 S   s   g | ]}|d > d@ qS )r3      r+   ).0byter+   r+   r,   
<listcomp>5  s    z!transform_key.<locals>.<listcomp>)	bytearraybytes)	input_key
output_keyr+   r+   r,   transform_key'  s         ra   c           
      C   t   | d d }| dd  }|d d }t |}|dd }t |}t|tj}t|tj}||}||}	||	 S Nr6   r?   r=   )ra   r!   r"   ECBdecrypt
encryptedHashr.   Block1Block2Key1Key2Crypt1Crypt2plain1plain2r+   r+   r,   SamDecryptNTLMHash:     

rp   c           
      C   rb   rc   )ra   r!   r"   rd   rD   rf   r+   r+   r,   SamEncryptNTLMHashL  rq   rr   c                   @      e Zd ZeZdS )RPC_UNICODE_STRING_ARRAYNr0   r1   r2   r   itemr+   r+   r+   r,   rt   a      rt   c                   @   rs   )RPC_UNICODE_STRING_ARRAY_CNru   r+   r+   r+   r,   rx   d  rw   rx   c                   @      e Zd ZdeffZdS )PRPC_UNICODE_STRING_ARRAYDataN)r0   r1   r2   rx   referentr+   r+   r+   r,   rz   g      rz   c                   @   s(   e Zd ZdZdZdeffZdddZdS )	
RPC_STRING))MaximumLength<H=len(Data)-12)Lengthr   )
ReferentIDz<L=0xff))r   <H=len(Data)-24)r   r   )r   z<Q=0xffr{   Nr   c                 C   s@   |d u r| j j}|dkrtd| dd td| d  dd d S )N z%s )endz %rr{   )	__class__r0   print)r'   msgindentr+   r+   r,   dump}  s
   zRPC_STRING.dump)Nr   )r0   r1   r2   	commonHdrcommonHdr64r   r|   r   r+   r+   r+   r,   r~   m  s    r~   c                   @   ry   )PRPC_STRINGr{   N)r0   r1   r2   r~   r|   r+   r+   r+   r,   r     r}   r   c                   @      e Zd ZdefdeffZdS )OLD_LARGE_INTEGERLowPartHighPartN)r0   r1   r2   r   r   	structurer+   r+   r+   r,   r         r   c                   @      e Zd ZG dd deZdS )SID_NAME_USEc                   @   s4   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdS )zSID_NAME_USE.enumItemsr3   r4   rT   r5   rU   rS   r?   r6   	   
   N)r0   r1   r2   SidTypeUserSidTypeGroupSidTypeDomainSidTypeAliasSidTypeWellKnownGroupSidTypeDeletedAccountSidTypeInvalidSidTypeUnknownSidTypeComputerSidTypeLabelr+   r+   r+   r,   	enumItems  s    r   Nr0   r1   r2   r   r   r+   r+   r+   r,   r         r   c                   @      e Zd ZdZdS )USHORT_ARRAYz<HN)r0   r1   r2   rv   r+   r+   r+   r,   r     s    r   c                   @   ry   )PUSHORT_ARRAYr{   N)r0   r1   r2   r   r|   r+   r+   r+   r,   r     r}   r   c                   @   "   e Zd ZdefdefdeffZdS )RPC_SHORT_BLOBr   r   BufferN)r0   r1   r2   r   r   r   r+   r+   r+   r,   r     
    r   c                   @      e Zd ZdZdd ZdS )SAMPR_HANDLE))r{   z20s=b""c                 C   s   | j du rdS dS )NTr6   r5   )_isNDR64r'   r+   r+   r,   getAlignment  s   
zSAMPR_HANDLE.getAlignmentNr0   r1   r2   r   r   r+   r+   r+   r,   r         r   c                   @   r   )ENCRYPTED_LM_OWF_PASSWORD))r{   z16s=b""c                 C      dS Nr3   r+   r   r+   r+   r,   r        z&ENCRYPTED_LM_OWF_PASSWORD.getAlignmentNr   r+   r+   r+   r,   r     r   r   c                   @   ry   )PENCRYPTED_LM_OWF_PASSWORDr{   N)r0   r1   r2   r   r|   r+   r+   r+   r,   r     r}   r   c                   @   rs   )ULONG_ARRAYNr0   r1   r2   r   rv   r+   r+   r+   r,   r     rw   r   c                   @   ry   )PULONG_ARRAYr{   N)r0   r1   r2   r   r|   r+   r+   r+   r,   r     r}   r   c                   @   rs   )ULONG_ARRAY_CVNr   r+   r+   r+   r,   r     rw   r   c                   @   r   )SAMPR_ULONG_ARRAYCountElementNr0   r1   r2   r   r   r   r+   r+   r+   r,   r     r   r   c                   @   ry   )SAMPR_SID_INFORMATION
SidPointerN)r0   r1   r2   r   r   r+   r+   r+   r,   r     r}   r   c                   @   ry   )PSAMPR_SID_INFORMATIONr{   N)r0   r1   r2   r   r|   r+   r+   r+   r,   r     r}   r   c                   @   rs   )SAMPR_SID_INFORMATION_ARRAYN)r0   r1   r2   r   rv   r+   r+   r+   r,   r     rw   r   c                   @   ry   )PSAMPR_SID_INFORMATION_ARRAYr{   N)r0   r1   r2   r   r|   r+   r+   r+   r,   r     r}   r   c                   @   r   )SAMPR_PSID_ARRAYr   SidsNr0   r1   r2   r   r   r   r+   r+   r+   r,   r     r   r   c                   @   r   )SAMPR_PSID_ARRAY_OUTr   r   Nr   r+   r+   r+   r,   r     r   r   c                   @   r   )SAMPR_RETURNED_USTRING_ARRAYr   r   N)r0   r1   r2   r   rz   r   r+   r+   r+   r,   r     r   r   c                   @   r   )SAMPR_RID_ENUMERATION
RelativeIdNameNr0   r1   r2   r   r   r   r+   r+   r+   r,   r   	  r   r   c                   @   rs   )SAMPR_RID_ENUMERATION_ARRAYN)r0   r1   r2   r   rv   r+   r+   r+   r,   r     rw   r   c                   @   ry   )PSAMPR_RID_ENUMERATION_ARRAYr{   N)r0   r1   r2   r   r|   r+   r+   r+   r,   r     r}   r   c                   @   r   )SAMPR_ENUMERATION_BUFFEREntriesReadr   N)r0   r1   r2   r   r   r   r+   r+   r+   r,   r     r   r   c                   @   ry   )PSAMPR_ENUMERATION_BUFFERr{   N)r0   r1   r2   r   r|   r+   r+   r+   r,   r     r}   r   c                   @      e Zd ZdS )
CHAR_ARRAYNr0   r1   r2   r+   r+   r+   r,   r   $      r   c                   @   ry   )PCHAR_ARRAYr{   N)r0   r1   r2   r   r|   r+   r+   r+   r,   r   '  r}   r   c                   @   r   )SAMPR_SR_SECURITY_DESCRIPTORr   SecurityDescriptorN)r0   r1   r2   r   r   r   r+   r+   r+   r,   r   ,  r   r   c                   @   ry   )PSAMPR_SR_SECURITY_DESCRIPTORr{   N)r0   r1   r2   r   r|   r+   r+   r+   r,   r   2  r}   r   c                   @      e Zd ZdefdeffZdS )GROUP_MEMBERSHIPr   
AttributesNr0   r1   r2   r   r   r+   r+   r+   r,   r   8  r   r   c                   @   rs   )GROUP_MEMBERSHIP_ARRAYN)r0   r1   r2   r   rv   r+   r+   r+   r,   r   >  rw   r   c                   @   ry   )PGROUP_MEMBERSHIP_ARRAYr{   N)r0   r1   r2   r   r|   r+   r+   r+   r,   r   A  r}   r   c                   @   r   )SAMPR_GET_GROUPS_BUFFERMembershipCountGroupsN)r0   r1   r2   r   r   r   r+   r+   r+   r,   r   G  r   r   c                   @   ry   )PSAMPR_GET_GROUPS_BUFFERr{   N)r0   r1   r2   r   r|   r+   r+   r+   r,   r   M  r}   r   c                   @   "   e Zd ZdefdefdeffZdS )SAMPR_GET_MEMBERS_BUFFERMemberCountMembersr   Nr   r+   r+   r+   r,   r   S  r   r   c                   @   ry   )PSAMPR_GET_MEMBERS_BUFFERr{   N)r0   r1   r2   r   r|   r+   r+   r+   r,   r   Z  r}   r   c                   @   r   )SAMPR_REVISION_INFO_V1RevisionSupportedFeaturesNr   r+   r+   r+   r,   r   `  r   r   c                   @   s"   e Zd ZdeffZddefiZdS )SAMPR_REVISION_INFOtagr3   V1N)r0   r1   r2   r   r   r   unionr+   r+   r+   r,   r   g  s
    r   c                   @   r   ) USER_DOMAIN_PASSWORD_INFORMATIONMinPasswordLengthPasswordPropertiesN)r0   r1   r2   r   r   r   r+   r+   r+   r,   r   q  r   r   c                   @   r   )DOMAIN_SERVER_ENABLE_STATEc                   @      e Zd ZdZdZdS )z$DOMAIN_SERVER_ENABLE_STATE.enumItemsr3   r4   N)r0   r1   r2   DomainServerEnabledDomainServerDisabledr+   r+   r+   r,   r   y      r   Nr   r+   r+   r+   r,   r   x  r   r   c                   @   ry   )DOMAIN_STATE_INFORMATIONDomainServerStateN)r0   r1   r2   r   r   r+   r+   r+   r,   r   ~  r}   r   c                   @   r   )DOMAIN_SERVER_ROLEc                   @   r   )zDOMAIN_SERVER_ROLE.enumItemsr4   rT   N)r0   r1   r2   DomainServerRoleBackupDomainServerRolePrimaryr+   r+   r+   r,   r     r   r   Nr   r+   r+   r+   r,   r     r   r   c                   @   s.   e Zd ZdefdefdefdefdeffZdS )DOMAIN_PASSWORD_INFORMATIONr   PasswordHistoryLengthr   MaxPasswordAgeMinPasswordAgeN)r0   r1   r2   r   r   r   r   r+   r+   r+   r,   r         r   c                   @   ry   )DOMAIN_LOGOFF_INFORMATIONForceLogoffNr0   r1   r2   r   r   r+   r+   r+   r,   r    r}   r  c                   @   ry   )DOMAIN_SERVER_ROLE_INFORMATIONDomainServerRoleN)r0   r1   r2   r   r   r+   r+   r+   r,   r    r}   r  c                   @   r   )DOMAIN_MODIFIED_INFORMATIONDomainModifiedCountCreationTimeNr  r+   r+   r+   r,   r	    r   r	  c                   @   s"   e Zd ZdefdefdeffZdS )DOMAIN_MODIFIED_INFORMATION2r
  r  ModifiedCountAtLastPromotionNr  r+   r+   r+   r,   r    r   r  c                   @   sR   e Zd Zdefdefdefdefdefdefdefdefd	efd
efdeffZdS ) SAMPR_DOMAIN_GENERAL_INFORMATIONr  OemInformation
DomainNameReplicaSourceNodeNamer
  r   r  UasCompatibilityRequired	UserCount
GroupCount
AliasCountN)r0   r1   r2   r   r   r   r   r   r+   r+   r+   r,   r    s    r  c                   @   s(   e Zd ZdefdefdefdeffZdS )!SAMPR_DOMAIN_GENERAL_INFORMATION2I1LockoutDurationLockoutObservationWindowLockoutThresholdN)r0   r1   r2   r  r   r   r   r+   r+   r+   r,   r        r  c                   @   ry   )SAMPR_DOMAIN_OEM_INFORMATIONr  Nr0   r1   r2   r   r   r+   r+   r+   r,   r    r}   r  c                   @   ry   )SAMPR_DOMAIN_NAME_INFORMATIONr  Nr  r+   r+   r+   r,   r    r}   r  c                   @   ry   )$SAMPR_DOMAIN_REPLICATION_INFORMATIONr  Nr  r+   r+   r+   r,   r    r}   r  c                   @   r   ) SAMPR_DOMAIN_LOCKOUT_INFORMATIONr  r  r  N)r0   r1   r2   r   r   r   r+   r+   r+   r,   r     r   r   c                   @   r   )DOMAIN_INFORMATION_CLASSc                   @   s<   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdS )z"DOMAIN_INFORMATION_CLASS.enumItemsr3   r4   rT   r5   rU   rS   r?   r6   r            N)r0   r1   r2   DomainPasswordInformationDomainGeneralInformationDomainLogoffInformationDomainOemInformationDomainNameInformationDomainReplicationInformationDomainServerRoleInformationDomainModifiedInformationDomainStateInformationDomainGeneralInformation2DomainLockoutInformationDomainModifiedInformation2r+   r+   r+   r,   r     s    r   Nr   r+   r+   r+   r,   r!    r   r!  c                   @   s   e Zd Zejdefejdefejde	fej
defejdefejdefejdefejdefejd	efejd
efejdefejdefiZdS )SAMPR_DOMAIN_INFO_BUFFERPasswordGeneralLogoffOemr   RoleReplicationModifiedStateGeneral2Lockout	Modified2N)r0   r1   r2   r!  r%  r   r&  r  r'  r  r(  r  r)  r  r+  r  r*  r  r,  r	  r-  r   r.  r  r/  r   r0  r  r   r+   r+   r+   r,   r1    s    











r1  c                   @   ry   )PSAMPR_DOMAIN_INFO_BUFFERr{   N)r0   r1   r2   r1  r|   r+   r+   r+   r,   r=    r}   r=  c                   @   ry   )GROUP_ATTRIBUTE_INFORMATIONr   Nr   r+   r+   r+   r,   r>    r}   r>  c                   @   s(   e Zd ZdefdefdefdeffZdS )SAMPR_GROUP_GENERAL_INFORMATIONr   r   r   AdminCommentNr0   r1   r2   r   r   r   r+   r+   r+   r,   r?    r  r?  c                   @   ry   )SAMPR_GROUP_NAME_INFORMATIONr   Nr  r+   r+   r+   r,   rB    r}   rB  c                   @   ry   )#SAMPR_GROUP_ADM_COMMENT_INFORMATIONr@  Nr  r+   r+   r+   r,   rC    r}   rC  c                   @   r   )GROUP_INFORMATION_CLASSc                   @       e Zd ZdZdZdZdZdZdS )z!GROUP_INFORMATION_CLASS.enumItemsr3   r4   rT   r5   rU   N)r0   r1   r2   GroupGeneralInformationGroupNameInformationGroupAttributeInformationGroupAdminCommentInformationGroupReplicationInformationr+   r+   r+   r,   r   $      r   Nr   r+   r+   r+   r,   rD  #  r   rD  c                   @   sB   e Zd Zejdefejdefejde	fej
defejdefiZdS )SAMPR_GROUP_INFO_BUFFERr3  r   	Attributer@  DoNotUseN)r0   r1   r2   rD  rF  r?  rG  rB  rH  r>  rI  rC  rJ  r   r+   r+   r+   r,   rL  ,      




rL  c                   @   ry   )PSAMPR_GROUP_INFO_BUFFERr{   N)r0   r1   r2   rL  r|   r+   r+   r+   r,   rP  5  r}   rP  c                   @   s"   e Zd ZdefdefdeffZdS )SAMPR_ALIAS_GENERAL_INFORMATIONr   r   r@  NrA  r+   r+   r+   r,   rQ  ;  r   rQ  c                   @   ry   )SAMPR_ALIAS_NAME_INFORMATIONr   Nr  r+   r+   r+   r,   rR  C  r}   rR  c                   @   ry   )#SAMPR_ALIAS_ADM_COMMENT_INFORMATIONr@  Nr  r+   r+   r+   r,   rS  I  r}   rS  c                   @   r   )ALIAS_INFORMATION_CLASSc                   @      e Zd ZdZdZdZdS )z!ALIAS_INFORMATION_CLASS.enumItemsr3   r4   rT   N)r0   r1   r2   AliasGeneralInformationAliasNameInformationAliasAdminCommentInformationr+   r+   r+   r,   r   P      r   Nr   r+   r+   r+   r,   rT  O  r   rT  c                   @   .   e Zd Zejdefejdefejde	fiZ
dS )SAMPR_ALIAS_INFO_BUFFERr3  r   r@  N)r0   r1   r2   rT  rV  rQ  rW  rR  rX  rS  r   r+   r+   r+   r,   r[  V  
    


r[  c                   @   ry   )PSAMPR_ALIAS_INFO_BUFFERr{   N)r0   r1   r2   r[  r|   r+   r+   r+   r,   r]  ]  r}   r]  c                   @   ry   )USER_PRIMARY_GROUP_INFORMATIONPrimaryGroupIdNr   r+   r+   r+   r,   r^  c  r}   r^  c                   @   ry   )USER_CONTROL_INFORMATIONUserAccountControlNr   r+   r+   r+   r,   r`  i  r}   r`  c                   @   ry   )USER_EXPIRES_INFORMATIONAccountExpiresNr  r+   r+   r+   r,   rb  o  r}   rb  c                   @   r   )LOGON_HOURS_ARRAYNr   r+   r+   r+   r,   rd  u  r   rd  c                   @   ry   )PLOGON_HOURS_ARRAYr{   N)r0   r1   r2   rd  r|   r+   r+   r+   r,   re  x  r}   re  c                   @   s&   e Zd ZdefdeffZdddZdS )SAMPR_LOGON_HOURSUnitsPerWeek
LogonHoursr   c                 C   s    t | d d | d< t| |S )Nrh  r6   rg  )lenr
   getData)r'   soFarr+   r+   r,   rj    s   zSAMPR_LOGON_HOURS.getDataN)r   )r0   r1   r2   r   re  r   rj  r+   r+   r+   r,   rf  }  s
    rf  c                   @   s  e Zd Zg defdefdefdefdefdefdefdefd	efd
efdefdefdefdefdefdefdefdefdefdefdefdefdefdefdefde	fde	fde	fde	fde
fde
fd e
fd!e
fR Zd"S )#SAMPR_USER_ALL_INFORMATION	LastLogon
LastLogoffPasswordLastSetrc  PasswordCanChangePasswordMustChangeUserNameFullNameHomeDirectoryHomeDirectoryDrive
ScriptPathProfilePathr@  WorkStationsUserComment
ParametersLmOwfPasswordNtOwfPasswordPrivateDatar   UserIdr_  ra  WhichFieldsrh  BadPasswordCount
LogonCountCountryCodeCodePageLmPasswordPresentNtPasswordPresentPasswordExpiredPrivateDataSensitiveN)r0   r1   r2   r   r   r   r   r   rf  r   r   r   r+   r+   r+   r,   rl    s    	
 !"#$
rl  c                   @   s.   e Zd ZdefdefdefdefdeffZdS )SAMPR_USER_GENERAL_INFORMATIONrr  rs  r_  r@  ry  NrA  r+   r+   r+   r,   r    r  r  c                   @   s(   e Zd ZdefdefdefdeffZdS )"SAMPR_USER_PREFERENCES_INFORMATIONry  	Reserved1r  r  N)r0   r1   r2   r   r   r   r+   r+   r+   r,   r    r  r  c                   @   ry   )!SAMPR_USER_PARAMETERS_INFORMATIONrz  Nr  r+   r+   r+   r,   r    r}   r  c                   @   s|   e Zd Zdefdefdefdefdefdefdefdefd	efd
efdefdefdefdefdefdefdefdeffZdS )SAMPR_USER_LOGON_INFORMATIONrr  rs  r~  r_  rt  ru  rv  rw  rx  rm  rn  ro  rp  rq  rh  r  r  ra  N	r0   r1   r2   r   r   r   rf  r   r   r+   r+   r+   r,   r    (    r  c                   @   s|   e Zd Zdefdefdefdefdefdefdefdefd	efd
efdefdefdefdefdefdefdefdeffZdS )SAMPR_USER_ACCOUNT_INFORMATIONrr  rs  r~  r_  rt  ru  rv  rw  r@  rx  rm  rn  rh  r  r  ro  rc  ra  Nr  r+   r+   r+   r,   r    r  r  c                   @   ry   )SAMPR_USER_A_NAME_INFORMATIONrr  Nr  r+   r+   r+   r,   r    r}   r  c                   @   ry   )SAMPR_USER_F_NAME_INFORMATIONrs  Nr  r+   r+   r+   r,   r    r}   r  c                   @   r   )SAMPR_USER_NAME_INFORMATIONrr  rs  Nr  r+   r+   r+   r,   r    r   r  c                   @   r   )SAMPR_USER_HOME_INFORMATIONrt  ru  Nr  r+   r+   r+   r,   r    r   r  c                   @   ry   )SAMPR_USER_SCRIPT_INFORMATIONrv  Nr  r+   r+   r+   r,   r    r}   r  c                   @   ry   )SAMPR_USER_PROFILE_INFORMATIONrw  Nr  r+   r+   r+   r,   r    r}   r  c                   @   ry   )$SAMPR_USER_ADMIN_COMMENT_INFORMATIONr@  Nr  r+   r+   r+   r,   r    r}   r  c                   @   ry   )#SAMPR_USER_WORKSTATIONS_INFORMATIONrx  Nr  r+   r+   r+   r,   r  %  r}   r  c                   @   ry   )"SAMPR_USER_LOGON_HOURS_INFORMATIONrh  N)r0   r1   r2   rf  r   r+   r+   r+   r,   r  +  r}   r  c                   @   s    e Zd ZddeffZdd ZdS )SAMPR_USER_PASSWORD)r   z512s=b""r   c                 C   r   )Nr5   r+   r   r+   r+   r,   r   6  r   z SAMPR_USER_PASSWORD.getAlignmentN)r0   r1   r2   r   r   r   r+   r+   r+   r,   r  1  s
    r  c                   @   r   )SAMPR_ENCRYPTED_USER_PASSWORD))r   z516s=b""c                 C   r   r   r+   r   r+   r+   r,   r   >  r   z*SAMPR_ENCRYPTED_USER_PASSWORD.getAlignmentNr   r+   r+   r+   r,   r  :  r   r  c                   @   ry   )PSAMPR_ENCRYPTED_USER_PASSWORDr{   N)r0   r1   r2   r  r|   r+   r+   r+   r,   r  A  r}   r  c                   @   r   )!SAMPR_ENCRYPTED_USER_PASSWORD_NEW))r   z522s=b""c                 C   r   r   r+   r   r+   r+   r,   r   K  r   z.SAMPR_ENCRYPTED_USER_PASSWORD_NEW.getAlignmentNr   r+   r+   r+   r,   r  G  r   r  c                   @   s.   e Zd ZdefdefdefdefdeffZdS ) SAMPR_USER_INTERNAL1_INFORMATIONEncryptedNtOwfPasswordEncryptedLmOwfPasswordr  r  r  N)r0   r1   r2   ENCRYPTED_NT_OWF_PASSWORDr   r   r   r+   r+   r+   r,   r  O  r  r  c                   @   r   ) SAMPR_USER_INTERNAL4_INFORMATIONr  UserPasswordN)r0   r1   r2   rl  r  r   r+   r+   r+   r,   r  Y  r   r  c                   @   r   )$SAMPR_USER_INTERNAL4_INFORMATION_NEWr  r  N)r0   r1   r2   rl  r  r   r+   r+   r+   r,   r  `  r   r  c                   @   r   ) SAMPR_USER_INTERNAL5_INFORMATIONr  r  N)r0   r1   r2   r  r   r   r+   r+   r+   r,   r  g  r   r  c                   @   r   )$SAMPR_USER_INTERNAL5_INFORMATION_NEWr  r  N)r0   r1   r2   r  r   r   r+   r+   r+   r,   r  n  r   r  c                   @   r   )USER_INFORMATION_CLASSc                   @   sh   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdS )z USER_INFORMATION_CLASS.enumItemsr3   r4   rT   r5   rU   rS   r?   r6   r   r   r"  r#  r$  r=   r7                           N)r0   r1   r2   UserGeneralInformationUserPreferencesInformationUserLogonInformationUserLogonHoursInformationUserAccountInformationUserNameInformationUserAccountNameInformationUserFullNameInformationUserPrimaryGroupInformationUserHomeInformationUserScriptInformationUserProfileInformationUserAdminCommentInformationUserWorkStationsInformationUserControlInformationUserExpiresInformationUserInternal1InformationUserParametersInformationUserAllInformationUserInternal4InformationUserInternal5InformationUserInternal4InformationNewUserInternal5InformationNewr+   r+   r+   r,   r   v  s0    r   Nr   r+   r+   r+   r,   r  u  r   r  c                   @   s  e Zd Zi ejdefejdefejde	fej
defejdefejdefejdefejdefejd	efejd
efejdefejdefejdefejdefej de!fej"de#fej$de%fej&de'fej(de)fej*de+fej,de-fej.de/fej0de1fiZ2dS )SAMPR_USER_INFO_BUFFERr3  PreferencesLogonrh  Accountr   AccountNamers  PrimaryGroupHomeScriptProfiler@  rx  ControlExpires	Internal1rz  All	Internal4	Internal5Internal4NewInternal5NewN)3r0   r1   r2   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r^  r  r  r  r  r  r  r  r  r  r  r  r`  r  rb  r  r  r  r  r  rl  r  r  r  r  r  r  r  r  r   r+   r+   r+   r,   r    sV    








	















r  c                   @   ry   )PSAMPR_USER_INFO_BUFFERr{   N)r0   r1   r2   r  r|   r+   r+   r+   r,   r    r}   r  c                   @   r   )PSAMPR_SERVER_NAME2))r{   z4s=b""N)r0   r1   r2   r|   r+   r+   r+   r,   r    rw   r  c                   @   s4   e Zd ZdefdefdefdefdefdeffZdS )SAMPR_DOMAIN_DISPLAY_USERIndexRidAccountControlr  r@  rs  Nr   r+   r+   r+   r,   r        r  c                   @   rs   )SAMPR_DOMAIN_DISPLAY_USER_ARRAYN)r0   r1   r2   r  rv   r+   r+   r+   r,   r    rw   r  c                   @   ry   ) PSAMPR_DOMAIN_DISPLAY_USER_ARRAYr{   N)r0   r1   r2   r  r|   r+   r+   r+   r,   r    r}   r  c                   @   .   e Zd ZdefdefdefdefdeffZdS )SAMPR_DOMAIN_DISPLAY_MACHINEr  r  r  r  r@  Nr   r+   r+   r+   r,   r    r  r  c                   @   rs   )"SAMPR_DOMAIN_DISPLAY_MACHINE_ARRAYN)r0   r1   r2   r  rv   r+   r+   r+   r,   r    rw   r  c                   @   ry   )#PSAMPR_DOMAIN_DISPLAY_MACHINE_ARRAYr{   N)r0   r1   r2   r  r|   r+   r+   r+   r,   r    r}   r  c                   @   r  )SAMPR_DOMAIN_DISPLAY_GROUPr  r  r  r  r@  Nr   r+   r+   r+   r,   r    r  r  c                   @   rs   ) SAMPR_DOMAIN_DISPLAY_GROUP_ARRAYN)r0   r1   r2   r  rv   r+   r+   r+   r,   r    rw   r  c                   @   ry   )!PSAMPR_DOMAIN_DISPLAY_GROUP_ARRAYr{   N)r0   r1   r2   r  r|   r+   r+   r+   r,   r    r}   r  c                   @   r   )SAMPR_DOMAIN_DISPLAY_OEM_USERr  OemAccountNameNr0   r1   r2   r   r~   r   r+   r+   r+   r,   r    r   r  c                   @   rs   )#SAMPR_DOMAIN_DISPLAY_OEM_USER_ARRAYN)r0   r1   r2   r  rv   r+   r+   r+   r,   r    rw   r  c                   @   ry   )$PSAMPR_DOMAIN_DISPLAY_OEM_USER_ARRAYr{   N)r0   r1   r2   r  r|   r+   r+   r+   r,   r    r}   r  c                   @   r   )SAMPR_DOMAIN_DISPLAY_OEM_GROUPr  r  Nr  r+   r+   r+   r,   r    r   r  c                   @   rs   )$SAMPR_DOMAIN_DISPLAY_OEM_GROUP_ARRAYN)r0   r1   r2   r  rv   r+   r+   r+   r,   r    rw   r  c                   @   ry   )%PSAMPR_DOMAIN_DISPLAY_OEM_GROUP_ARRAYr{   N)r0   r1   r2   r  r|   r+   r+   r+   r,   r    r}   r  c                   @   r   ) SAMPR_DOMAIN_DISPLAY_USER_BUFFERr   r   N)r0   r1   r2   r   r  r   r+   r+   r+   r,   r    r   r  c                   @   r   )#SAMPR_DOMAIN_DISPLAY_MACHINE_BUFFERr   r   N)r0   r1   r2   r   r  r   r+   r+   r+   r,   r    r   r  c                   @   r   )!SAMPR_DOMAIN_DISPLAY_GROUP_BUFFERr   r   N)r0   r1   r2   r   r  r   r+   r+   r+   r,   r    r   r  c                   @   r   )$SAMPR_DOMAIN_DISPLAY_OEM_USER_BUFFERr   r   N)r0   r1   r2   r   r  r   r+   r+   r+   r,   r     r   r  c                   @   r   )%SAMPR_DOMAIN_DISPLAY_OEM_GROUP_BUFFERr   r   N)r0   r1   r2   r   r  r   r+   r+   r+   r,   r  '  r   r  c                   @   r   )DOMAIN_DISPLAY_INFORMATIONc                   @   rE  )z$DOMAIN_DISPLAY_INFORMATION.enumItemsr3   r4   rT   r5   rU   N)r0   r1   r2   DomainDisplayUserDomainDisplayMachineDomainDisplayGroupDomainDisplayOemUserDomainDisplayOemGroupr+   r+   r+   r,   r   /  rK  r   Nr   r+   r+   r+   r,   r  .  r   r  c                   @   sB   e Zd Zejdefejdefejde	fej
defejdefiZdS )SAMPR_DISPLAY_INFO_BUFFERUserInformationMachineInformationGroupInformationOemUserInformationOemGroupInformationN)r0   r1   r2   r  r  r  r  r  r  r  r  r  r  r  r   r+   r+   r+   r,   r  7  rO  r  c                   @   r   )SAM_VALIDATE_PASSWORD_HASHr   HashN)r0   r1   r2   r   r   r   r+   r+   r+   r,   r   A  r   r   c                   @   ry   )PSAM_VALIDATE_PASSWORD_HASHr{   N)r0   r1   r2   r   r|   r+   r+   r+   r,   r  G  r}   r  c                   @   s:   e Zd ZdefdefdefdefdefdefdeffZdS )	SAM_VALIDATE_PERSISTED_FIELDSPresentFieldsro  BadPasswordTimeLockoutTimer  r   PasswordHistoryN)r0   r1   r2   r   r   r  r   r+   r+   r+   r,   r  M  s    r  c                   @   r   )SAM_VALIDATE_VALIDATION_STATUSc                   @   s8   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdS )z(SAM_VALIDATE_VALIDATION_STATUS.enumItemsr   r3   r4   rT   r5   rU   rS   r?   r6   r   r   N)r0   r1   r2   SamValidateSuccessSamValidatePasswordMustChangeSamValidateAccountLockedOutSamValidatePasswordExpiredSamValidatePasswordIncorrectSamValidatePasswordIsInHistorySamValidatePasswordTooShortSamValidatePasswordTooLong#SamValidatePasswordNotComplexEnoughSamValidatePasswordTooRecentSamValidatePasswordFilterErrorr+   r+   r+   r,   r   Z  s    r   Nr   r+   r+   r+   r,   r  Y  r   r  c                   @   r   ) SAM_VALIDATE_STANDARD_OUTPUT_ARGChangedPersistedFieldsValidationStatusN)r0   r1   r2   r  r  r   r+   r+   r+   r,   r  h  r   r  c                   @   ry   )!PSAM_VALIDATE_STANDARD_OUTPUT_ARGr{   N)r0   r1   r2   r  r|   r+   r+   r+   r,   r  n  r}   r  c                   @   r   )%SAM_VALIDATE_AUTHENTICATION_INPUT_ARGInputPersistedFieldsPasswordMatchedN)r0   r1   r2   r  r   r   r+   r+   r+   r,   r  t  r   r  c                   @   s.   e Zd ZdefdefdefdefdeffZdS )&SAM_VALIDATE_PASSWORD_CHANGE_INPUT_ARGr  ClearPasswordUserAccountNameHashedPasswordPasswordMatchNr0   r1   r2   r  r   r   r   r   r+   r+   r+   r,   r  {  r  r  c                   @   s4   e Zd ZdefdefdefdefdefdeffZdS )%SAM_VALIDATE_PASSWORD_RESET_INPUT_ARGr  r  r  r  PasswordMustChangeAtNextLogonClearLockoutNr   r+   r+   r+   r,   r!    r  r!  c                   @   r   )PASSWORD_POLICY_VALIDATION_TYPEc                   @   rU  )z)PASSWORD_POLICY_VALIDATION_TYPE.enumItemsr3   r4   rT   N)r0   r1   r2   SamValidateAuthenticationSamValidatePasswordChangeSamValidatePasswordResetr+   r+   r+   r,   r     rY  r   Nr   r+   r+   r+   r,   r$    r   r$  c                   @   rZ  )SAM_VALIDATE_INPUT_ARGValidateAuthenticationInputValidatePasswordChangeInputValidatePasswordResetInputN)r0   r1   r2   r$  r%  r  r&  r  r'  r!  r   r+   r+   r+   r,   r(    r\  r(  c                   @   s.   e Zd ZejdefejdefejdefiZdS )SAM_VALIDATE_OUTPUT_ARGValidateAuthenticationOutputValidatePasswordChangeOutputValidatePasswordResetOutputN)	r0   r1   r2   r$  r%  r  r&  r'  r   r+   r+   r+   r,   r,    r\  r,  c                   @   ry   )PSAM_VALIDATE_OUTPUT_ARGr{   N)r0   r1   r2   r,  r|   r+   r+   r+   r,   r0    r}   r0  c                   @   r   )USER_PROPERTIES))r  <L=0)r   r2  	Reserved2<H=0	Reserved3r5  )	Reserved4z96s="")PropertySignaturez<H=0x50)PropertyCountr5  )UserProperties:Nr0   r1   r2   r   r+   r+   r+   r,   r1    rw   r1  c                   @   r   )USER_PROPERTY))
NameLengthr5  )ValueLengthr5  )Reservedr5  )_PropertyNamez_-PropertyNamezself['NameLength'])PropertyNamer<  )_PropertyValuez_-PropertyValuezself['ValueLength'])PropertyValuer<  Nr=  r+   r+   r+   r,   r>    rw   r>  c                   @   r   )WDIGEST_CREDENTIALS)")r  B=0)r4  rG  )VersionzB=1)NumberOfHasheszB=29)r7  z12s="")Hash116s="")Hash2rK  )Hash3rK  )Hash4rK  )Hash5rK  )Hash6rK  )Hash7rK  )Hash8rK  )Hash9rK  )Hash10rK  )Hash11rK  )Hash12rK  )Hash13rK  )Hash14rK  )Hash15rK  )Hash16rK  )Hash17rK  )Hash18rK  )Hash19rK  )Hash20rK  )Hash21rK  )Hash22rK  )Hash23rK  )Hash24rK  )Hash25rK  )Hash26rK  )Hash27rK  )Hash28rK  )Hash29rK  Nr=  r+   r+   r+   r,   rF    rw   rF  c                   @   r   )KERB_KEY_DATA)r  r5  r3  r6  KeyTyper2  	KeyLengthr2  	KeyOffsetr2  Nr=  r+   r+   r+   r,   rh    rw   rh  c                   @   r   )KERB_STORED_CREDENTIAL))r   z<H=3Flagsr5  CredentialCountr5  OldCredentialCountr5  DefaultSaltLengthr5  DefaultSaltMaximumLengthr5  DefaultSaltOffsetr2  r   r<  Nr=  r+   r+   r+   r,   rp    rw   rp  c                   @   r   )KERB_KEY_DATA_NEW)ri  r3  )r7  r2  )IterationCountr2  rj  rl  rn  Nr=  r+   r+   r+   r,   r~    rw   r~  c                   @   r   )KERB_STORED_CREDENTIAL_NEW))r   z<H=4rq  rs  )ServiceCredentialCountr5  ru  )OlderCredentialCountr5  rw  ry  r{  )DefaultIterationCountr2  r}  Nr=  r+   r+   r+   r,   r    rw   r  c                   @       e Zd ZdZdefdeffZdS )SamrConnectr   
ServerNameDesiredAccessN)r0   r1   r2   opnumr  r   r   r+   r+   r+   r,   r  1  
    r  c                   @   r   )SamrConnectResponseServerHandle	ErrorCodeNr0   r1   r2   r   r   r   r+   r+   r+   r,   r  8  r   r  c                   @   r  )SamrCloseHandler3   	SamHandler  N)r0   r1   r2   r  r   r   r   r+   r+   r+   r,   r  >  r  r  c                   @   r   )SamrCloseHandleResponser  r  Nr  r+   r+   r+   r,   r  E  r   r  c                   @   &   e Zd ZdZdefdefdeffZdS )SamrSetSecurityObjectr4   ObjectHandleSecurityInformationr   N)r0   r1   r2   r  r   r   r   r   r+   r+   r+   r,   r  K      r  c                   @   ry   )SamrSetSecurityObjectResponser  Nr   r+   r+   r+   r,   r  S  r}   r  c                   @   r  )SamrQuerySecurityObjectrT   r  r  N)r0   r1   r2   r  r   r   r   r+   r+   r+   r,   r  X  r  r  c                   @   r   )SamrQuerySecurityObjectResponser   r  N)r0   r1   r2   r   r   r   r+   r+   r+   r,   r  _  r   r  c                   @   r  )SamrLookupDomainInSamServerrU   r  r   N)r0   r1   r2   r  r   r   r   r+   r+   r+   r,   r  e  r  r  c                   @   r   )#SamrLookupDomainInSamServerResponseDomainIdr  Nr0   r1   r2   r   r   r   r+   r+   r+   r,   r  l  r   r  c                   @   &   e Zd ZdZdefdefdeffZdS )SamrEnumerateDomainsInSamServerrS   r  EnumerationContextPreferedMaximumLengthNr0   r1   r2   r  r   r   r   r+   r+   r+   r,   r  r  r  r  c                   @   (   e Zd ZdefdefdefdeffZdS )'SamrEnumerateDomainsInSamServerResponser  r   CountReturnedr  Nr0   r1   r2   r   r   r   r+   r+   r+   r,   r  z  r  r  c                   @   r  )SamrOpenDomainr?   r  r  r  N)r0   r1   r2   r  r   r   r   r   r+   r+   r+   r,   r    r  r  c                   @   r   )SamrOpenDomainResponseDomainHandler  Nr  r+   r+   r+   r,   r    r   r  c                   @   r  )SamrQueryInformationDomainr6   r  DomainInformationClassNr0   r1   r2   r  r   r!  r   r+   r+   r+   r,   r    r  r  c                   @   r   )"SamrQueryInformationDomainResponser   r  Nr0   r1   r2   r=  r   r   r+   r+   r+   r,   r    r   r  c                   @   r  )SamrSetInformationDomainr   r  r  DomainInformationN)r0   r1   r2   r  r   r!  r1  r   r+   r+   r+   r,   r    r  r  c                   @   ry   ) SamrSetInformationDomainResponser  Nr   r+   r+   r+   r,   r    r}   r  c                   @   r  )SamrCreateGroupInDomainr   r  r   r  Nr0   r1   r2   r  r   r   r   r   r+   r+   r+   r,   r    r  r  c                   @   r   )SamrCreateGroupInDomainResponseGroupHandler   r  Nr  r+   r+   r+   r,   r    r   r  c                   @   r  )SamrEnumerateGroupsInDomainr"  r  r  r  Nr  r+   r+   r+   r,   r    r  r  c                   @   r  )SamrCreateUserInDomainr#  r  r   r  Nr  r+   r+   r+   r,   r    r  r  c                   @   r   )SamrCreateUserInDomainResponse
UserHandler   r  Nr  r+   r+   r+   r,   r    r   r  c                   @   r  )#SamrEnumerateGroupsInDomainResponser  r   r  r  Nr  r+   r+   r+   r,   r    r  r  c                   @   s,   e Zd ZdZdefdefdefdeffZdS )SamrEnumerateUsersInDomainr$  r  r  ra  r  Nr  r+   r+   r+   r,   r        r  c                   @   r  )"SamrEnumerateUsersInDomainResponser  r   r  r  Nr  r+   r+   r+   r,   r    r  r  c                   @   r  )SamrCreateAliasInDomainr=   r  r  r  Nr  r+   r+   r+   r,   r    r  r  c                   @   r   )SamrCreateAliasInDomainResponseAliasHandler   r  Nr  r+   r+   r+   r,   r    r   r  c                   @   r  )SamrEnumerateAliasesInDomainrV   r  r  r  Nr  r+   r+   r+   r,   r    r  r  c                   @   r  )$SamrEnumerateAliasesInDomainResponser  r   r  r  Nr  r+   r+   r+   r,   r    r  r  c                   @   r  )SamrGetAliasMembershipr7   r  SidArrayNr0   r1   r2   r  r   r   r   r+   r+   r+   r,   r  	  r  r  c                   @   r   )SamrGetAliasMembershipResponse
Membershipr  Nr0   r1   r2   r   r   r   r+   r+   r+   r,   r    r   r  c                   @   r  )SamrLookupNamesInDomainr  r  r   NamesN)r0   r1   r2   r  r   r   rt   r   r+   r+   r+   r,   r    r  r  c                   @   r   )SamrLookupNamesInDomainResponseRelativeIdsUser  Nr  r+   r+   r+   r,   r    r   r  c                   @   r  )SamrLookupIdsInDomainr  r  r   r  N)r0   r1   r2   r  r   r   r   r   r+   r+   r+   r,   r  %  r  r  c                   @   s"   e Zd ZdefdefdeffZdS )SamrLookupIdsInDomainResponser  r  r  N)r0   r1   r2   r   r   r   r   r+   r+   r+   r,   r  -  r   r  c                   @   r  )SamrOpenGroup   r  r  GroupIdNr  r+   r+   r+   r,   r  4  r  r  c                   @   r   )SamrOpenGroupResponser  r  Nr  r+   r+   r+   r,   r  <  r   r  c                   @   r  )SamrQueryInformationGroupr  r  GroupInformationClassN)r0   r1   r2   r  r   rD  r   r+   r+   r+   r,   r  B  r  r  c                   @   r   )!SamrQueryInformationGroupResponser   r  N)r0   r1   r2   rP  r   r   r+   r+   r+   r,   r  I  r   r  c                   @   r  )SamrSetInformationGroupr  r  r  r   N)r0   r1   r2   r  r   rD  rL  r   r+   r+   r+   r,   r  O  r  r  c                   @   ry   )SamrSetInformationGroupResponser  Nr   r+   r+   r+   r,   r  W  r}   r  c                   @   r  )SamrAddMemberToGroup   r  MemberIdr   Nr  r+   r+   r+   r,   r  \  r  r  c                   @   ry   )SamrAddMemberToGroupResponser  Nr   r+   r+   r+   r,   r  d  r}   r  c                   @      e Zd ZdZdeffZdS )SamrDeleteGroupr  r  Nr0   r1   r2   r  r   r   r+   r+   r+   r,   r  i      r  c                   @   r   )SamrDeleteGroupResponser  r  Nr  r+   r+   r+   r,   r  o  r   r  c                   @   r  )SamrRemoveMemberFromGroupr  r  r  Nr  r+   r+   r+   r,   r  u  r  r  c                   @   ry   )!SamrRemoveMemberFromGroupResponser  Nr   r+   r+   r+   r,   r  |  r}   r  c                   @   r  )SamrGetMembersInGroupr  r  Nr  r+   r+   r+   r,   r    r  r  c                   @   r   )SamrGetMembersInGroupResponser   r  N)r0   r1   r2   r   r   r   r+   r+   r+   r,   r    r   r  c                   @   r  )SamrSetMemberAttributesOfGroupr  r  r  r   Nr  r+   r+   r+   r,   r    r  r  c                   @   ry   )&SamrSetMemberAttributesOfGroupResponser  Nr   r+   r+   r+   r,   r    r}   r  c                   @   r  )SamrOpenAlias   r  r  AliasIdNr  r+   r+   r+   r,   r    r  r  c                   @   r   )SamrOpenAliasResponser  r  Nr  r+   r+   r+   r,   r    r   r  c                   @   r  )SamrQueryInformationAlias   r  AliasInformationClassN)r0   r1   r2   r  r   rT  r   r+   r+   r+   r,   r    r  r  c                   @   r   )!SamrQueryInformationAliasResponser   r  N)r0   r1   r2   r]  r   r   r+   r+   r+   r,   r    r   r  c                   @   r  )SamrSetInformationAlias   r  r  r   N)r0   r1   r2   r  r   rT  r[  r   r+   r+   r+   r,   r    r  r  c                   @   ry   )SamrSetInformationAliasResponser  Nr   r+   r+   r+   r,   r    r}   r  c                   @   r  )SamrDeleteAlias   r  Nr  r+   r+   r+   r,   r    r  r  c                   @   r   )SamrDeleteAliasResponser  r  Nr  r+   r+   r+   r,   r    r   r  c                   @   r  )SamrAddMemberToAliasrW   r  r  Nr0   r1   r2   r  r   r   r   r+   r+   r+   r,   r    r  r  c                   @   ry   )SamrAddMemberToAliasResponser  Nr   r+   r+   r+   r,   r    r}   r  c                   @   r  )SamrRemoveMemberFromAliasr8   r  r  Nr  r+   r+   r+   r,   r    r  r  c                   @   ry   )!SamrRemoveMemberFromAliasResponser  Nr   r+   r+   r+   r,   r    r}   r  c                   @   r  )SamrGetMembersInAlias!   r  Nr  r+   r+   r+   r,   r    r  r  c                   @   r   )SamrGetMembersInAliasResponser   r  N)r0   r1   r2   r   r   r   r+   r+   r+   r,   r    r   r  c                   @   r  )SamrOpenUser"   r  r  r~  Nr  r+   r+   r+   r,   r    r  r  c                   @   r   )SamrOpenUserResponser  r  Nr  r+   r+   r+   r,   r    r   r  c                   @   r  )SamrDeleteUser#   r  Nr  r+   r+   r+   r,   r      r  r   c                   @   r   )SamrDeleteUserResponser  r  Nr  r+   r+   r+   r,   r    r   r  c                   @   r  )SamrQueryInformationUser$   r  UserInformationClassNr0   r1   r2   r  r   r  r   r+   r+   r+   r,   r    r  r  c                   @   r   ) SamrQueryInformationUserResponser   r  Nr0   r1   r2   r  r   r   r+   r+   r+   r,   r    r   r  c                   @   r  )SamrSetInformationUser%   r  r  r   Nr0   r1   r2   r  r   r  r  r   r+   r+   r+   r,   r	    r  r	  c                   @   ry   )SamrSetInformationUserResponser  Nr   r+   r+   r+   r,   r  !  r}   r  c                   @   sV   e Zd ZdZdefdefdefdefdefdefdefd	efd
efdefdeffZdS )SamrChangePasswordUser&   r  	LmPresentOldLmEncryptedWithNewLmNewLmEncryptedWithOldLm	NtPresentOldNtEncryptedWithNewNtNewNtEncryptedWithOldNtNtCrossEncryptionPresentNewNtEncryptedWithNewLmLmCrossEncryptionPresentNewLmEncryptedWithNewNtN)	r0   r1   r2   r  r   r   r   PENCRYPTED_NT_OWF_PASSWORDr   r+   r+   r+   r,   r  &  s    r  c                   @   ry   )SamrChangePasswordUserResponser  Nr   r+   r+   r+   r,   r  6  r}   r  c                   @   r  )SamrGetGroupsForUser'   r  Nr  r+   r+   r+   r,   r  ;  r  r  c                   @   r   )SamrGetGroupsForUserResponser   r  N)r0   r1   r2   r   r   r   r+   r+   r+   r,   r  A  r   r  c                   @   2   e Zd ZdZdefdefdefdefdeffZdS )SamrQueryDisplayInformation(   r  DisplayInformationClassr  
EntryCountPreferredMaximumLengthNr0   r1   r2   r  r   r  r   r   r+   r+   r+   r,   r  G      r  c                   @   (   e Zd ZdefdefdefdeffZdS )#SamrQueryDisplayInformationResponseTotalAvailableTotalReturnedr   r  Nr0   r1   r2   r   r  r   r+   r+   r+   r,   r'  Q  r  r'  c                   @   r  )SamrGetDisplayEnumerationIndex)   r  r!  PrefixNr0   r1   r2   r  r   r  r   r   r+   r+   r+   r,   r+  Y  r  r+  c                   @   r   )&SamrGetDisplayEnumerationIndexResponser  r  Nr   r+   r+   r+   r,   r/  a  r   r/  c                   @   r  )$SamrGetUserDomainPasswordInformation,   r  Nr  r+   r+   r+   r,   r0  g  r  r0  c                   @   r   ),SamrGetUserDomainPasswordInformationResponsePasswordInformationr  Nr0   r1   r2   r   r   r   r+   r+   r+   r,   r2  m  r   r2  c                   @   r  )!SamrRemoveMemberFromForeignDomain-   r  	MemberSidNr  r+   r+   r+   r,   r5  s  r  r5  c                   @   ry   ))SamrRemoveMemberFromForeignDomainResponser  Nr   r+   r+   r+   r,   r8  z  r}   r8  c                   @   r  )SamrQueryInformationDomain2.   r  r  Nr  r+   r+   r+   r,   r9    r  r9  c                   @   r   )#SamrQueryInformationDomain2Responser   r  Nr  r+   r+   r+   r,   r;    r   r;  c                   @   r  )SamrQueryInformationUser2/   r  r  Nr  r+   r+   r+   r,   r<    r  r<  c                   @   r   )!SamrQueryInformationUser2Responser   r  Nr  r+   r+   r+   r,   r>    r   r>  c                   @   r  )SamrQueryDisplayInformation20   r  r!  r  r"  r#  Nr$  r+   r+   r+   r,   r?    r%  r?  c                   @   r&  )$SamrQueryDisplayInformation2Responser(  r)  r   r  Nr*  r+   r+   r+   r,   rA    r  rA  c                   @   r  )SamrGetDisplayEnumerationIndex21   r  r!  r-  Nr.  r+   r+   r+   r,   rB    r  rB  c                   @   r   )'SamrGetDisplayEnumerationIndex2Responser  r  Nr   r+   r+   r+   r,   rD    r   rD  c                   @   s,   e Zd ZdZdefdefdefdeffZdS )SamrCreateUser2InDomain2   r  r   AccountTyper  Nr  r+   r+   r+   r,   rE    r  rE  c                   @   s(   e Zd ZdefdefdefdeffZdS )SamrCreateUser2InDomainResponser  GrantedAccessr   r  Nr  r+   r+   r+   r,   rH    r  rH  c                   @   r  )SamrQueryDisplayInformation33   r  r!  r  r"  r#  Nr$  r+   r+   r+   r,   rJ    r%  rJ  c                   @   r&  )$SamrQueryDisplayInformation3Responser(  r)  r   r  Nr*  r+   r+   r+   r,   rL    r  rL  c                   @   r  )SamrAddMultipleMembersToAlias4   r  MembersBufferNr  r+   r+   r+   r,   rM    r  rM  c                   @   ry   )%SamrAddMultipleMembersToAliasResponser  Nr   r+   r+   r+   r,   rP    r}   rP  c                   @   r  )"SamrRemoveMultipleMembersFromAlias5   r  rO  Nr  r+   r+   r+   r,   rQ    r  rQ  c                   @   ry   )*SamrRemoveMultipleMembersFromAliasResponser  Nr   r+   r+   r+   r,   rS    r}   rS  c                   @   s,   e Zd ZdZdefdefdefdeffZdS )SamrOemChangePasswordUser26   r  rr  NewPasswordEncryptedWithOldLm"OldLmOwfPasswordEncryptedWithNewLmN)	r0   r1   r2   r  r   r~   r  r   r   r+   r+   r+   r,   rT    r  rT  c                   @   ry   )"SamrOemChangePasswordUser2Responser  Nr   r+   r+   r+   r,   rX    r}   rX  c                   @   s>   e Zd ZdZdefdefdefdefdefdefde	ffZ
d	S )
SamrUnicodeChangePasswordUser27   r  rr  NewPasswordEncryptedWithOldNt"OldNtOwfPasswordEncryptedWithNewNtr  rV  "OldLmOwfPasswordEncryptedWithNewNtN)r0   r1   r2   r  r   r   r  r  r   r   r   r+   r+   r+   r,   rY  	  s    rY  c                   @   ry   )&SamrUnicodeChangePasswordUser2Responser  Nr   r+   r+   r+   r,   r^  	  r}   r^  c                   @   r  ) SamrGetDomainPasswordInformation8   UnusedN)r0   r1   r2   r  r   r   r+   r+   r+   r,   r_  	  s    r_  c                   @   r   )(SamrGetDomainPasswordInformationResponser3  r  Nr4  r+   r+   r+   r,   rb  	  r   rb  c                   @   r  )SamrConnect29   r  r  Nr0   r1   r2   r  PSAMPR_SERVER_NAMEr   r   r+   r+   r+   r,   rc   	  r  rc  c                   @   r   )SamrConnect2Responser  r  Nr  r+   r+   r+   r,   rg  '	  r   rg  c                   @   r  )SamrSetInformationUser2:   r  r  r   Nr  r+   r+   r+   r,   rh  -	  r  rh  c                   @   ry   )SamrSetInformationUser2Responser  Nr   r+   r+   r+   r,   rj  5	  r}   rj  c                   @   r  )SamrConnect4>   r  ClientRevisionr  Nre  r+   r+   r+   r,   rk  :	  r  rk  c                   @   r   )SamrConnect4Responser  r  Nr  r+   r+   r+   r,   rn  B	  r   rn  c                   @   s,   e Zd ZdZdefdefdefdeffZdS )SamrConnect5r9   r  r  	InVersionInRevisionInfoN)r0   r1   r2   r  rf  r   r   r   r+   r+   r+   r,   ro  H	  r  ro  c                   @   s(   e Zd ZdefdefdefdeffZdS )SamrConnect5Response
OutVersionOutRevisionInfor  r  N)r0   r1   r2   r   r   r   r   r+   r+   r+   r,   rr  Q	  r  rr  c                   @   r  )SamrRidToSidA   r  r  Nr  r+   r+   r+   r,   ru  Y	  r  ru  c                   @   r   )SamrRidToSidResponseSidr  Nr  r+   r+   r+   r,   rw  `	  r   rw  c                   @   r  )SamrSetDSRMPasswordB   ra  r~  r  N)r0   r1   r2   r  r   r   r  r   r+   r+   r+   r,   ry  f	  r  ry  c                   @   ry   )SamrSetDSRMPasswordResponser  Nr   r+   r+   r+   r,   r{  n	  r}   r{  c                   @   r  )SamrValidatePasswordC   ValidationTypeInputArgN)r0   r1   r2   r  r$  r(  r   r+   r+   r+   r,   r|  s	  r  r|  c                   @   r   )SamrValidatePasswordResponse	OutputArgr  N)r0   r1   r2   r0  r   r   r+   r+   r+   r,   r  z	  r   r  rT   rU   rS   r?   r   r   r"  r#  r$  r=   rV   r  r  r  r  r  r  r  r  r  r  r  r  r  r  rW   r  r  r  r  r
  r  r  r   r,  r1  r6  r:  r=  r@  rC  rF  rK  rN  rR  )
rU  rZ  r`  rd  ri  rl  r9   rv  rz  r}  r>   c                    s<   t  }||d< ||d< ||d< ||d d< | |I d H S )Nr  r  rp  rq  r   )ro  request)dce
serverNamedesiredAccess	inVersionr  r+   r+   r,   hSamrConnect5	  s   r  c                    0   t  }||d< ||d< ||d< | |I d H S )Nr  r  rm  )rk  r  )r  r  r  clientRevisionr  r+   r+   r,   hSamrConnect4	     r  c                    (   t  }||d< ||d< | |I d H S Nr  r  )rc  r  r  r  r  r  r+   r+   r,   hSamrConnect2	  
   r  c                    r  r  )r  r  r  r+   r+   r,   hSamrConnect	  r  r  c                    r  )Nr  r  r  )r  r  )r  serverHandler  domainIdr  r+   r+   r,   hSamrOpenDomain	  r  r  c                    r  )Nr  r  r  )r  r  )r  domainHandler  groupIdr  r+   r+   r,   hSamrOpenGroup	  r  r  c                    r  )Nr  r  r  )r  r  )r  r  r  aliasIdr  r+   r+   r,   hSamrOpenAlias	  r  r  c                    r  )Nr  r  r~  )r  r  )r  r  r  userIdr  r+   r+   r,   hSamrOpenUser	  r  r      c                    r  )Nr  r  r  )r  r  )r  r  enumerationContextpreferedMaximumLengthr  r+   r+   r,    hSamrEnumerateDomainsInSamServer	  r  r  c                    r  Nr  r  r  )r  r  r  r  r  r  r  r+   r+   r,   hSamrEnumerateGroupsInDomain
  r  r  c                    r  r  )r  r  r  r+   r+   r,   hSamrEnumerateAliasesInDomain
  r  r  c                    8   t  }||d< ||d< ||d< ||d< | |I d H S )Nr  ra  r  r  )r  r  )r  r  userAccountControlr  r  r  r+   r+   r,   hSamrEnumerateUsersInDomain
     r  c                    @   t  }||d< ||d< ||d< ||d< ||d< | |I d H S Nr  r!  r  r"  r#  )rJ  r  r  r  displayInformationClassindex
entryCountr  r  r+   r+   r,   hSamrQueryDisplayInformation3
     r  c                    r  r  )r?  r  r  r+   r+   r,   hSamrQueryDisplayInformation2$
  r  r  c                    r  r  )r  r  r  r+   r+   r,   hSamrQueryDisplayInformation-
  r  r  r   c                    r  Nr  r!  r-  )rB  r  r  r  r  prefixr  r+   r+   r,    hSamrGetDisplayEnumerationIndex26
  r  r  c                    r  r  )r+  r  r  r+   r+   r,   hSamrGetDisplayEnumerationIndex=
  r  r  c                    r  Nr  r   r  )r  r  r  r  r-   r  r  r+   r+   r,   hSamrCreateGroupInDomainD
  r  r  c                    r  )Nr  r  r  )r  r  )r  r  accountNamer  r  r+   r+   r,   hSamrCreateAliasInDomainK
  r  r  c                    r  )Nr  r   rG  r  )rE  r  )r  r  r-   accountTyper  r  r+   r+   r,   hSamrCreateUser2InDomainR
  r  r  c                    r  r  )r  r  r  r+   r+   r,   hSamrCreateUserInDomainZ
  r  r  c                    r  Nr  r  )r  r  r  r  domainInformationClassr  r+   r+   r,   hSamrQueryInformationDomaina
  r  r  c                    r  r  )r9  r  r  r+   r+   r,   hSamrQueryInformationDomain2g
  r  r  c                    r  )Nr  r  )r  r  )r  groupHandlegroupInformationClassr  r+   r+   r,   hSamrQueryInformationGroupm
  r  r  c                    r  )Nr  r  )r  r  )r  aliasHandlealiasInformationClassr  r+   r+   r,   hSamrQueryInformationAliass
  r  r  c                    r  Nr  r  )r<  r  r  
userHandleuserInformationClassr  r+   r+   r,   hSamrQueryInformationUser2y
  r  r  c                    r  r  )r  r  r  r+   r+   r,   hSamrQueryInformationUser
  r  r  c                    4   t  }||d< |d |d< ||d< | |I d H S )Nr  r   r  r  )r  r  )r  r  domainInformationr  r+   r+   r,   hSamrSetInformationDomain
     r  c                    r  )Nr  r   r  r   )r  r  )r  r  bufferr  r+   r+   r,   hSamrSetInformationGroup
  r  r  c                    r  )Nr  r   r  r   )r  r  )r  r  r  r  r+   r+   r,   hSamrSetInformationAlias
  r  r  c                    r  Nr  r   r  r   )rh  r  r  r  r  r  r+   r+   r,   hSamrSetInformationUser2
  r  r  c                    r  r  )r	  r  r  r+   r+   r,   hSamrSetInformationUser
  r  r  c                        t  }||d< | |I d H S Nr  )r  r  r  r  r  r+   r+   r,   hSamrDeleteGroup
     r  c                    r  Nr  )r  r  r  r  r  r+   r+   r,   hSamrDeleteAlias
  r  r  c                    r  Nr  )r   r  r  r  r  r+   r+   r,   hSamrDeleteUser
  r  r  c                    r  Nr  r  r   )r  r  r  r  memberId
attributesr  r+   r+   r,   hSamrAddMemberToGroup
  r  r  c                    r  )Nr  r  )r  r  )r  r  r  r  r+   r+   r,   hSamrRemoveMemberFromGroup
  r  r  c                    r  r  )r  r  r  r+   r+   r,   hSamrGetMembersInGroup
  r  r  c                    r  Nr  r  )r  r  r  r  r  r  r+   r+   r,   hSamrAddMemberToAlias
  r  r  c                    r  r  )r  r  r  r+   r+   r,   hSamrRemoveMemberFromAlias
  r  r  c                    r  r  )r  r  r  r+   r+   r,   hSamrGetMembersInAlias
  r  r  c                    r  )Nr  r7  )r5  r  )r  r  	memberSidr  r+   r+   r,   "hSamrRemoveMemberFromForeignDomain
  r  r  c                    <   t  }||d< ||d< t|d |d d< | |I d H S Nr  rO  r   r   )rM  ri  r  r  r  membersBufferr  r+   r+   r,   hSamrAddMultipleMembersToAlias
     r  c                    r  r  )rQ  ri  r  r  r+   r+   r,   #hSamrRemoveMultipleMembersFromAlias
  r  r  c                    r  r  )r  r  r  r+   r+   r,   hSamrGetGroupsForUser
  r  r  c                    r  )Nr  r  r   r   )r  ri  r  )r  r  sidArrayr  r+   r+   r,   hSamrGetAliasMembership
  r  r  c                    s   t  }||d< t|}t|}t|}d|d< t|d< t|d< d|d< t|||d< t|||d	< d|d
< t|d< d|d< t|||d< | |I d H S )Nr  r   r  r  r  r3   r  r  r  r  r  r  r  )r  rQ   rK   r   rr   r  )r  r  oldPasswordnewPasswordr  oldPwdHashNTnewPwdHashNTnewPwdHashLMr+   r+   r,   hSamrChangePasswordUser
  s"   r  c                    s   t  }||d< t|tdu rt|}t|}t|}d|d< t|d< t|d< d|d< t|||d	< t|||d
< d|d< t|d< d|d< t|||d< | |I d H S )Nr  Fr   r  r  r  r3   r  r  r  r  r  r  r  )	r  rM   r^   fromhexrQ   rK   r   rr   r  )r  r  r   r  r  r  r  r+   r+   r,   hSamrChangePasswordUser_hash  s$   
r  c                    s^  t  }||d< ||d< |dkr|d u rt|}|dks |d u r$t|}t|tdu r0t|}t|tdu r;t|}t|}t }	zddt|d   |	d |	d	< W n# t
yx   d
d l}
ddt|d   ||
 	d |	d	< Y nw t|d |	d< |	 }t|}||}||d d	< t|||d< d
|d< t|d< t|d< | |I d H S )Nr  rr  r   F   Ar<   r4   rL   r   r   r   r[  r\  r  rV  r]  )rY  rK   rQ   rM   r^   r  r   r  ri  rC   UnicodeDecodeErrorsysdecodegetfilesystemencodingrj  r#   rD   rr   r   r  )r  r  userNamer  r  oldPwdHashLMr   r  r  samUserr  pwdBuffrc4encBufr+   r+   r,   hSamrUnicodeChangePasswordUser2&  s<   
&0
r  c                    r  )Nr  r   )r  r  )r  r  r-   r  r+   r+   r,   hSamrLookupDomainInSamServerK  r  r  c                    r  )Nr  r  r   )r  r  )r  objectHandlesecurityInformationsecurityDescriptorr  r+   r+   r,   hSamrSetSecurityObjectQ  r  r  c                    r  )Nr  r  )r  r  )r  r  r  r  r+   r+   r,   hSamrQuerySecurityObjectX  r  r  c                    r  )Nr  )r  r  )r  	samHandler  r+   r+   r,   hSamrCloseHandle^  r  r  c                    r  r  )r  r  r  r+   r+   r,   hSamrSetMemberAttributesOfGroupc  r  r  c                    r  r  )r0  r  r  r+   r+   r,   %hSamrGetUserDomainPasswordInformationj  r  r  c                    s    t  }t|d< | |I d H S )Nra  )r_  r   r  )r  r  r+   r+   r,   !hSamrGetDomainPasswordInformationo  r  r  c                    r  )Nr  r  )ru  r  )r  r  ridr  r+   r+   r,   hSamrRidToSidt  r  r  c                    s,   t  }|d |d< ||d< | |I d H S )Nr   r~  r  )r|  r  )r  inputArgr  r+   r+   r,   hSamrValidatePasswordz  s
   r   c                    b   t  }||d< t||d< |D ]}t }||d< |d | qd|jd jd< | |I d H S )Nr  r   r{   r    MaximumCount)r  ri  r   appendfieldsr  )r  r  namesr  r-   entryr+   r+   r,   hSamrLookupNamesInDomain     r(  c                    r!  )Nr  r   r{   r  r"  r#  )r  ri  r   r$  r%  r  )r  r  idsr  dIdr'  r+   r+   r,   hSamrLookupIdsInDomain  r)  r,  c                    s*  t  }||d< tj|d< tj|d d< d|d d d d< t|d d d d	< t|d d d d
< t|d d d d< t|d d d d< t|d d d d< t|d d d d< t|d d d d< t|d d d d< t|d d d d< t|d d d d< t|d d d d d< t|d d d d d< t|d d d d< t|d d d d d< t|d d d d d< d|d d d d< |d}t|}|dd}|td|7 }t	
d}|  }t }|| || | }	t|	}
|
|| }||d d d d< | |I d H S ) Nr  r  r   r   i   	r  r  r  rr  rs  rt  ru  rv  rw  r@  rx  ry  rz  r{  r|  r}  r   rh  r3   r  rL   r<       z<Ir7   r  )rh  r  r  r   rC   ri  rjuststructpackosurandomget_session_keyr$   md5updaterP   r#   rD   r  )r  r  rE   r  pwdbuffbufflensaltsession_keykeymdr.   cipherbuffercryptr+   r+   r,   hSamrSetPasswordInternal4New  sH   




r=  c                    s   t  }||d< tj|d< tj|d d< |dks|d u r t|}t|tdu r,t|}|  }|d u r8tdt	|||d d d	< t
|d d d
< d|d d d< d|d d d< | |I d H S )Nr  r  r   r   r   Fz]This functionality requires the connection's session key but this connection doesn't have oner  r  r  r3   r  r   r  )r	  r  r  rQ   rM   r^   r  r3  	Exceptionrr   r   r  )r  r  rE   hashNTr  r9  r+   r+   r,   hSamrSetNTInternal1  s"   

r@  )r   r  )r>   r   r   r   r   r   )r   (H  
__future__r   r   binasciir   r/  r1  aiosmbr   LOGaiosmb.dcerpc.v5.enumr   aiosmb.dcerpc.v5.uuidr   aiosmb.dcerpc.v5.structurer   aiosmb.dcerpc.v5.ndrr	   r
   r   r   r   r   r   r   aiosmb.dcerpc.v5.dtypesr   r   r   r   r   r   r   r   r   r   r   r   r   r   aiosmb.dcerpc.v5.rpcrtr   aiosmb.wintypes.ntstatusr    unicrypto.symmetricr!   r"   r#   	unicryptor$   MSRPC_UUID_SAMRr%   rf  DELETEREAD_CONTROL	WRITE_DACWRITE_OWNERACCESS_SYSTEM_SECURITYMAXIMUM_ALLOWEDGENERIC_READGENERIC_WRITEGENERIC_EXECUTEGENERIC_ALLSAM_SERVER_CONNECTSAM_SERVER_SHUTDOWNSAM_SERVER_INITIALIZESAM_SERVER_CREATE_DOMAINSAM_SERVER_ENUMERATE_DOMAINSSAM_SERVER_LOOKUP_DOMAINSAM_SERVER_ALL_ACCESSSAM_SERVER_READSAM_SERVER_WRITESAM_SERVER_EXECUTEDOMAIN_READ_PASSWORD_PARAMETERSDOMAIN_WRITE_PASSWORD_PARAMSDOMAIN_READ_OTHER_PARAMETERSDOMAIN_WRITE_OTHER_PARAMETERSDOMAIN_CREATE_USERDOMAIN_CREATE_GROUPDOMAIN_CREATE_ALIASDOMAIN_GET_ALIAS_MEMBERSHIPDOMAIN_LIST_ACCOUNTSDOMAIN_LOOKUPDOMAIN_ADMINISTER_SERVERDOMAIN_ALL_ACCESSDOMAIN_READDOMAIN_WRITEDOMAIN_EXECUTEGROUP_READ_INFORMATIONGROUP_WRITE_ACCOUNTGROUP_ADD_MEMBERGROUP_REMOVE_MEMBERGROUP_LIST_MEMBERSGROUP_ALL_ACCESS
GROUP_READGROUP_WRITEGROUP_EXECUTEALIAS_ADD_MEMBERALIAS_REMOVE_MEMBERALIAS_LIST_MEMBERSALIAS_READ_INFORMATIONALIAS_WRITE_ACCOUNTALIAS_ALL_ACCESS
ALIAS_READALIAS_WRITEALIAS_EXECUTEUSER_READ_GENERALUSER_READ_PREFERENCESUSER_WRITE_PREFERENCESUSER_READ_LOGONUSER_READ_ACCOUNTUSER_WRITE_ACCOUNTUSER_CHANGE_PASSWORDUSER_FORCE_PASSWORD_CHANGEUSER_LIST_GROUPSUSER_READ_GROUP_INFORMATIONUSER_WRITE_GROUP_INFORMATIONUSER_ALL_ACCESS	USER_READ
USER_WRITEUSER_EXECUTEUSER_ALL_USERNAMEUSER_ALL_FULLNAMEUSER_ALL_USERIDUSER_ALL_PRIMARYGROUPIDUSER_ALL_ADMINCOMMENTUSER_ALL_USERCOMMENTUSER_ALL_HOMEDIRECTORYUSER_ALL_HOMEDIRECTORYDRIVEUSER_ALL_SCRIPTPATHUSER_ALL_PROFILEPATHUSER_ALL_WORKSTATIONSUSER_ALL_LASTLOGONUSER_ALL_LASTLOGOFFUSER_ALL_LOGONHOURSUSER_ALL_BADPASSWORDCOUNTUSER_ALL_LOGONCOUNTUSER_ALL_PASSWORDCANCHANGEUSER_ALL_PASSWORDMUSTCHANGEUSER_ALL_PASSWORDLASTSETUSER_ALL_ACCOUNTEXPIRESUSER_ALL_USERACCOUNTCONTROLUSER_ALL_PARAMETERSUSER_ALL_COUNTRYCODEUSER_ALL_CODEPAGEUSER_ALL_NTPASSWORDPRESENTUSER_ALL_LMPASSWORDPRESENTUSER_ALL_PRIVATEDATAUSER_ALL_PASSWORDEXPIREDUSER_ALL_SECURITYDESCRIPTORUSER_ALL_UNDEFINED_MASKSAM_DOMAIN_OBJECTSAM_GROUP_OBJECTSAM_NON_SECURITY_GROUP_OBJECTSAM_ALIAS_OBJECTSAM_NON_SECURITY_ALIAS_OBJECTSAM_USER_OBJECTSAM_MACHINE_ACCOUNTSAM_TRUST_ACCOUNTSAM_APP_BASIC_GROUPSAM_APP_QUERY_GROUPSE_GROUP_MANDATORYSE_GROUP_ENABLED_BY_DEFAULTSE_GROUP_ENABLEDGROUP_TYPE_ACCOUNT_GROUPGROUP_TYPE_RESOURCE_GROUPGROUP_TYPE_UNIVERSAL_GROUPGROUP_TYPE_SECURITY_ENABLEDGROUP_TYPE_SECURITY_ACCOUNTGROUP_TYPE_SECURITY_RESOURCEGROUP_TYPE_SECURITY_UNIVERSALUSER_ACCOUNT_DISABLEDUSER_HOME_DIRECTORY_REQUIREDUSER_PASSWORD_NOT_REQUIREDUSER_TEMP_DUPLICATE_ACCOUNTUSER_NORMAL_ACCOUNTUSER_MNS_LOGON_ACCOUNTUSER_INTERDOMAIN_TRUST_ACCOUNTUSER_WORKSTATION_TRUST_ACCOUNTUSER_SERVER_TRUST_ACCOUNTUSER_DONT_EXPIRE_PASSWORDUSER_ACCOUNT_AUTO_LOCKED$USER_ENCRYPTED_TEXT_PASSWORD_ALLOWEDUSER_SMARTCARD_REQUIREDUSER_TRUSTED_FOR_DELEGATIONUSER_NOT_DELEGATEDUSER_USE_DES_KEY_ONLYUSER_DONT_REQUIRE_PREAUTHUSER_PASSWORD_EXPIRED+USER_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATIONUSER_NO_AUTH_DATA_REQUIREDUSER_PARTIAL_SECRETS_ACCOUNTUSER_USE_AES_KEYS	UF_SCRIPTUF_ACCOUNTDISABLEUF_HOMEDIR_REQUIRED
UF_LOCKOUTUF_PASSWD_NOTREQDUF_PASSWD_CANT_CHANGE"UF_ENCRYPTED_TEXT_PASSWORD_ALLOWEDUF_TEMP_DUPLICATE_ACCOUNTUF_NORMAL_ACCOUNTUF_INTERDOMAIN_TRUST_ACCOUNTUF_WORKSTATION_TRUST_ACCOUNTUF_SERVER_TRUST_ACCOUNTUF_DONT_EXPIRE_PASSWDUF_MNS_LOGON_ACCOUNTUF_SMARTCARD_REQUIREDUF_TRUSTED_FOR_DELEGATIONUF_NOT_DELEGATEDUF_USE_DES_KEY_ONLYUF_DONT_REQUIRE_PREAUTHUF_PASSWORD_EXPIRED)UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATIONUF_NO_AUTH_DATA_REQUIREDUF_PARTIAL_SECRETS_ACCOUNTUF_USE_AES_KEYSDOMAIN_USER_RID_ADMINDOMAIN_USER_RID_GUESTDOMAIN_USER_RID_KRBTGTDOMAIN_GROUP_RID_ADMINSDOMAIN_GROUP_RID_USERSDOMAIN_GROUP_RID_COMPUTERSDOMAIN_GROUP_RID_CONTROLLERSDOMAIN_ALIAS_RID_ADMINS%DOMAIN_GROUP_RID_READONLY_CONTROLLERSDOMAIN_PASSWORD_COMPLEXDOMAIN_PASSWORD_NO_ANON_CHANGEDOMAIN_PASSWORD_NO_CLEAR_CHANGEDOMAIN_LOCKOUT_ADMINSDOMAIN_PASSWORD_STORE_CLEARTEXTDOMAIN_REFUSE_PASSWORD_CHANGESAM_VALIDATE_PASSWORD_LAST_SETSAM_VALIDATE_BAD_PASSWORD_TIMESAM_VALIDATE_LOCKOUT_TIMESAM_VALIDATE_BAD_PASSWORD_COUNT$SAM_VALIDATE_PASSWORD_HISTORY_LENGTHSAM_VALIDATE_PASSWORD_HISTORYrK   rQ   ra   rp   rr   rt   rx   rz   r~   r   r   r   r   r   r   r   r   r  r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  r  r  r  r  r  r  r   r!  r1  r=  r>  r?  rB  rC  rD  rL  rP  rQ  rR  rS  rT  r[  r]  r^  r`  rb  rd  re  rf  rl  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r!  r$  r(  r,  r0  r1  r>  rF  rh  rp  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r	  r  r  r  r  r  r  r'  r+  r/  r0  r2  r5  r8  r9  r;  r<  r>  r?  rA  rB  rD  rE  rH  rJ  rL  rM  rP  rQ  rS  rT  rX  rY  r^  r_  rb  rc  rg  rh  rj  rk  rn  ro  rr  ru  rw  ry  r{  r|  r  OPNUMSr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r.  r  r  rF  r  rV  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r(  r,  r=  r@  r+   r+   r+   r,   <module>   s"  (@

				)
		

			

'	

	
				
 !"#$%&'()*+,-./0123
4








D""	"		%*