o
    j                    @   s\#  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 m!Z! 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- e#dZ.G dd deZ/eZ0dZ1dZ2dZ3d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_dZ`dZad.Zbd0Zcd1Zdd2ZedZfdZgdZhdZidZjd Zkd%Zld&Zmd'Znd(Zod)Zpd*Zqd3Zrd4Zsd5ZtdZudZvdZwdZxdZyd Zzd%Z{d&Z|d'Z}d(Z~d)Zd6Zd7Zd8Zd9Zd:ZdZdZdZdZd;Zd<Zd=Zd>ZdZdZd?Zd@ZdZdAZd ZdZdBZdZdCZdDZdEZdFZdZdGZdZdZdZdZdZdZdZdHZdIZdJZdZdZdZdZdZd Zd%Zd&Zd'Zd(Zd)Zd6Zd7Zd8Zd9Zd:ZdZdZdZdZd;Zd<ZdZdZdZdZd Zd%Zd&Zd'Zd(Zd6Zd7Zd8ZdZdZdZdZd;Zd<Zd=Zd>ZdZdZd?Zd@ZdKZdLZdMZd(ZdNZdOZdPZdQZdRZdZdZdZdZdZd ZdZdZdZdZdZd ZG dSdT dTeZG dUdV dVeZG dWdX dXe
ZG dYdZ dZeZG d[d\ d\e
ZG d]d^ d^eZG d_d` d`eZG dadb dbeZG dcdd dde
ZG dedf dfeZG dgdh dheZG didj djeZeZG dkdl dle
ZeZG dmdn dneZG dodp dpe
ZG dqdr dreZG dsdt dteZG dudv dveZG dwdx dxe
ZG dydz dzeZG d{d| d|e
Z G d}d~ d~eZG dd 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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 dd  d eZBG dd deZCG dd deZDG dd de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/d0 d0e
ZZG d1d2 d2eZ[G d3d4 d4eZ\G d5d6 d6e
Z]G d7d8 d8eZ^G d9d: d:eZ_G d;d< d<e
Z`G d=d> d>eZaG d?d@ d@eZbG dAdB dBe
ZcG dCdD dDeZdG dEdF dFeZeG dGdH dHe
ZfG dIdJ dJeZgG dKdL dLeZhG dMdN dNeZiG dOdP dPeZjG dQdR dReZkG dSdT dTeZlG dUdV dVe	ZmG dWdX dXeZnG dYdZ dZe
ZoG d[d\ d\eZpG d]d^ d^eZqG d_d` d`eZrG dadb dbe
ZsG dcdd ddeZtG dedf dfeZuG dgdh dheZvG didj djeZwG dkdl dle	ZxG dmdn dne	ZyG dodp dpe
ZzG dqdr dre'Z{dsdt Z|G dudv dve'Z}G dwdx dxe'Z~G dydz dze'ZG 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 d/d0 d0eZG d1d2 d2eZG d3d4 d4eZG d5d6 d6eZG d7d8 d8eZG d9d: d:eZG d;d< d<eZG d=d> d>eZG d?d@ d@eZG dAdB dBeZG dCdD dDeZG dEdF dFeZG dGdH dHeZG dIdJ dJeZG dKdL dLeZG dMdN dNeZG dOdP dPeZG dQdR dReZG dSdT dTeZG dUdV dVeZG dWdX dXeZG dYdZ dZeZG d[d\ d\eZG d]d^ d^eZG d_d` d`eZG dadb dbeZG dcdd ddeZG dedf dfeZG dgdh dheZG didj djeZG dkdl dleZG dmdn dneZG dodp dpeZG dqdr dreZG dsdt dteZi d eefdeefdeefdueefdveefdweefdxeefdeefdyeefdz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efeefd
Zde6ddufddZde6dfddZde6fddZ de6fddZe6efddZe6d fddZe6d fddZe6d fddZd ddZd ddZd ddZed dfddZ	elj
d ddfddZelj
d ddfddZelj
d ddfddZelj
dfdĐdńZelj
dfdƐdǄZeYfdȐdɄZeYfdʐd˄ZeeYfd̐d̈́ZeYfdΐdτZe%jfdАdфZe%jfdҐdӄZe,jfdԐdՄZe2jfd֐dׄZeTjfdؐdلZeT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 Z)dd Z*dd Z+dd Z,dd Z-dd Z.dd Z/d d Z0d!ddZ1d"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 Z:dd Z;dd Z<dd Z=dd Z>d#ddZ?dS ($      )division)print_function)	unhexlify)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)	nt_errorsLOG)uuidtup_to_bin)Enum)	StructureN)md5ARC4)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/impacket/dcerpc/v5/samr.pyr%   0   s   zDCERPCSessionError.__init__c                 C   sF   | j }|tjv rtj| d }tj| d }d| j ||f S d| j  S )Nr      z'SAMR SessionError: code: 0x%x - %s - %sz+SAMR SessionError: unknown error code: 0x%x)r(   r   ERROR_MESSAGES)r&   keyerror_msg_shorterror_msg_verboser*   r*   r+   __str__3   s   

zDCERPCSessionError.__str__)NNN)__name__
__module____qualname__r%   r1   r*   r*   r*   r+   r$   /   s    
r$   i   i   i   i   i   i   l        i   @i    i   r,                   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                   @      e Zd ZeZdS )RPC_UNICODE_STRING_ARRAYNr2   r3   r4   r   itemr*   r*   r*   r+   r?         r?   c                   @   r>   )RPC_UNICODE_STRING_ARRAY_CNr@   r*   r*   r*   r+   rC     rB   rC   c                   @      e Zd ZdeffZdS )PRPC_UNICODE_STRING_ARRAYDataN)r2   r3   r4   rC   referentr*   r*   r*   r+   rE   "      rE   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)LengthrK   )
ReferentIDz<L=0xff))rJ   <H=len(Data)-24)rL   rN   )rM   z<Q=0xffrF   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 %rrF   )	__class__r2   print)r&   msgindentr*   r*   r+   dump8  s
   zRPC_STRING.dump)Nr   )r2   r3   r4   	commonHdrcommonHdr64r   rG   rV   r*   r*   r*   r+   rI   (  s    rI   c                   @   rD   )PRPC_STRINGrF   N)r2   r3   r4   rI   rG   r*   r*   r*   r+   rY   @  rH   rY   c                   @      e Zd ZdefdeffZdS )OLD_LARGE_INTEGERLowPartHighPartN)r2   r3   r4   r   r   	structurer*   r*   r*   r+   r[   F      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.enumItemsr,   r5      r6            r7   	   
   N)r2   r3   r4   SidTypeUserSidTypeGroupSidTypeDomainSidTypeAliasSidTypeWellKnownGroupSidTypeDeletedAccountSidTypeInvalidSidTypeUnknownSidTypeComputerSidTypeLabelr*   r*   r*   r+   	enumItemsN  s    rr   Nr2   r3   r4   r   rr   r*   r*   r*   r+   ra   M      ra   c                   @      e Zd ZdZdS )USHORT_ARRAY<HN)r2   r3   r4   rA   r*   r*   r*   r+   rv   [  s    rv   c                   @   rD   )PUSHORT_ARRAYrF   N)r2   r3   r4   rv   rG   r*   r*   r*   r+   rx   _  rH   rx   c                   @   "   e Zd ZdefdefdeffZdS )RPC_SHORT_BLOBrL   rJ   BufferN)r2   r3   r4   r   rx   r^   r*   r*   r*   r+   rz   d  
    rz   c                   @      e Zd ZdZdd ZdS )SAMPR_HANDLE))rF   z20s=b""c                 C   s   | j du rdS dS )NTr7   r6   )_isNDR64r&   r*   r*   r+   getAlignmentp  s   
zSAMPR_HANDLE.getAlignmentNr2   r3   r4   r^   r   r*   r*   r*   r+   r~   l      r~   c                   @   r}   )ENCRYPTED_LM_OWF_PASSWORD))rF   z16s=b""c                 C      dS Nr,   r*   r   r*   r*   r+   r   {     z&ENCRYPTED_LM_OWF_PASSWORD.getAlignmentNr   r*   r*   r*   r+   r   w  r   r   c                   @   rD   )PENCRYPTED_LM_OWF_PASSWORDrF   N)r2   r3   r4   r   rG   r*   r*   r*   r+   r     rH   r   c                   @   r>   )ULONG_ARRAYNr2   r3   r4   r   rA   r*   r*   r*   r+   r     rB   r   c                   @   rD   )PULONG_ARRAYrF   N)r2   r3   r4   r   rG   r*   r*   r*   r+   r     rH   r   c                   @   r>   )ULONG_ARRAY_CVNr   r*   r*   r*   r+   r     rB   r   c                   @   rZ   )SAMPR_ULONG_ARRAYCountElementNr2   r3   r4   r   r   r^   r*   r*   r*   r+   r     r_   r   c                   @   rD   )SAMPR_SID_INFORMATION
SidPointerN)r2   r3   r4   r   r^   r*   r*   r*   r+   r     rH   r   c                   @   rD   )PSAMPR_SID_INFORMATIONrF   N)r2   r3   r4   r   rG   r*   r*   r*   r+   r     rH   r   c                   @   r>   )SAMPR_SID_INFORMATION_ARRAYN)r2   r3   r4   r   rA   r*   r*   r*   r+   r     rB   r   c                   @   rD   )PSAMPR_SID_INFORMATION_ARRAYrF   N)r2   r3   r4   r   rG   r*   r*   r*   r+   r     rH   r   c                   @   rZ   )SAMPR_PSID_ARRAYr   SidsNr2   r3   r4   r   r   r^   r*   r*   r*   r+   r     r_   r   c                   @   rZ   )SAMPR_PSID_ARRAY_OUTr   r   Nr   r*   r*   r*   r+   r     r_   r   c                   @   rZ   )SAMPR_RETURNED_USTRING_ARRAYr   r   N)r2   r3   r4   r   rE   r^   r*   r*   r*   r+   r     r_   r   c                   @   rZ   )SAMPR_RID_ENUMERATION
RelativeIdNameNr2   r3   r4   r   r   r^   r*   r*   r*   r+   r     r_   r   c                   @   r>   )SAMPR_RID_ENUMERATION_ARRAYN)r2   r3   r4   r   rA   r*   r*   r*   r+   r     rB   r   c                   @   rD   )PSAMPR_RID_ENUMERATION_ARRAYrF   N)r2   r3   r4   r   rG   r*   r*   r*   r+   r     rH   r   c                   @   rZ   )SAMPR_ENUMERATION_BUFFEREntriesReadr{   N)r2   r3   r4   r   r   r^   r*   r*   r*   r+   r     r_   r   c                   @   rD   )PSAMPR_ENUMERATION_BUFFERrF   N)r2   r3   r4   r   rG   r*   r*   r*   r+   r     rH   r   c                   @      e Zd ZdS )
CHAR_ARRAYNr2   r3   r4   r*   r*   r*   r+   r         r   c                   @   rD   )PCHAR_ARRAYrF   N)r2   r3   r4   r   rG   r*   r*   r*   r+   r     rH   r   c                   @   rZ   )SAMPR_SR_SECURITY_DESCRIPTORrL   SecurityDescriptorN)r2   r3   r4   r   r   r^   r*   r*   r*   r+   r     r_   r   c                   @   rD   )PSAMPR_SR_SECURITY_DESCRIPTORrF   N)r2   r3   r4   r   rG   r*   r*   r*   r+   r     rH   r   c                   @      e Zd ZdefdeffZdS )GROUP_MEMBERSHIPr   
AttributesNr2   r3   r4   r   r^   r*   r*   r*   r+   r     r_   r   c                   @   r>   )GROUP_MEMBERSHIP_ARRAYN)r2   r3   r4   r   rA   r*   r*   r*   r+   r     rB   r   c                   @   rD   )PGROUP_MEMBERSHIP_ARRAYrF   N)r2   r3   r4   r   rG   r*   r*   r*   r+   r     rH   r   c                   @   rZ   )SAMPR_GET_GROUPS_BUFFERMembershipCountGroupsN)r2   r3   r4   r   r   r^   r*   r*   r*   r+   r     r_   r   c                   @   rD   )PSAMPR_GET_GROUPS_BUFFERrF   N)r2   r3   r4   r   rG   r*   r*   r*   r+   r     rH   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     r|   r   c                   @   rD   )PSAMPR_GET_MEMBERS_BUFFERrF   N)r2   r3   r4   r   rG   r*   r*   r*   r+   r     rH   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tagr,   V1N)r2   r3   r4   r   rW   r   unionr*   r*   r*   r+   r   "  s
    r   c                   @   rZ   ) USER_DOMAIN_PASSWORD_INFORMATIONMinPasswordLengthPasswordPropertiesN)r2   r3   r4   r   r   r^   r*   r*   r*   r+   r   ,  r_   r   c                   @   r`   )DOMAIN_SERVER_ENABLE_STATEc                   @      e Zd ZdZdZdS )z$DOMAIN_SERVER_ENABLE_STATE.enumItemsr,   r5   N)r2   r3   r4   DomainServerEnabledDomainServerDisabledr*   r*   r*   r+   rr   4      rr   Nrs   r*   r*   r*   r+   r   3  rt   r   c                   @   rD   )DOMAIN_STATE_INFORMATIONDomainServerStateN)r2   r3   r4   r   r^   r*   r*   r*   r+   r   9  rH   r   c                   @   r`   )DOMAIN_SERVER_ROLEc                   @   r   )zDOMAIN_SERVER_ROLE.enumItemsr5   rb   N)r2   r3   r4   DomainServerRoleBackupDomainServerRolePrimaryr*   r*   r*   r+   rr   @  r   rr   Nrs   r*   r*   r*   r+   r   ?  rt   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)r2   r3   r4   r   r   r[   r^   r*   r*   r*   r+   r   E      r   c                   @   rD   )DOMAIN_LOGOFF_INFORMATIONForceLogoffNr2   r3   r4   r[   r^   r*   r*   r*   r+   r   O  rH   r   c                   @   rD   )DOMAIN_SERVER_ROLE_INFORMATIONDomainServerRoleN)r2   r3   r4   r   r^   r*   r*   r*   r+   r   U  rH   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   b  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)r2   r3   r4   r[   r   r   r   r^   r*   r*   r*   r+   r   j  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)r2   r3   r4   r   r   r   r^   r*   r*   r*   r+   r   z      r   c                   @   rD   )SAMPR_DOMAIN_OEM_INFORMATIONr   Nr2   r3   r4   r   r^   r*   r*   r*   r+   r     rH   r   c                   @   rD   )SAMPR_DOMAIN_NAME_INFORMATIONr   Nr   r*   r*   r*   r+   r     rH   r   c                   @   rD   )$SAMPR_DOMAIN_REPLICATION_INFORMATIONr   Nr   r*   r*   r*   r+   r     rH   r   c                   @   ry   ) SAMPR_DOMAIN_LOCKOUT_INFORMATIONr   r   r   N)r2   r3   r4   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.enumItemsr,   r5   rb   r6   rc   rd   re   r7   rf            N)r2   r3   r4   DomainPasswordInformationDomainGeneralInformationDomainLogoffInformationDomainOemInformationDomainNameInformationDomainReplicationInformationDomainServerRoleInformationDomainModifiedInformationDomainStateInformationDomainGeneralInformation2DomainLockoutInformationDomainModifiedInformation2r*   r*   r*   r+   rr     s    rr   Nrs   r*   r*   r*   r+   r     rt   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)r2   r3   r4   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    s    











r  c                   @   rD   )PSAMPR_DOMAIN_INFO_BUFFERrF   N)r2   r3   r4   r  rG   r*   r*   r*   r+   r    rH   r  c                   @   rD   )GROUP_ATTRIBUTE_INFORMATIONr   Nr   r*   r*   r*   r+   r    rH   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r2   r3   r4   r   r   r^   r*   r*   r*   r+   r    r   r  c                   @   rD   )SAMPR_GROUP_NAME_INFORMATIONr   Nr   r*   r*   r*   r+   r    rH   r  c                   @   rD   )#SAMPR_GROUP_ADM_COMMENT_INFORMATIONr  Nr   r*   r*   r*   r+   r    rH   r  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.enumItemsr,   r5   rb   r6   rc   N)r2   r3   r4   GroupGeneralInformationGroupNameInformationGroupAttributeInformationGroupAdminCommentInformationGroupReplicationInformationr*   r*   r*   r+   rr         rr   Nrs   r*   r*   r*   r+   r    rt   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_GROUP_INFO_BUFFERr  r   	Attributer  DoNotUseN)r2   r3   r4   r  r  r  r  r  r  r  r  r  r  r   r*   r*   r*   r+   r        




r  c                   @   rD   )PSAMPR_GROUP_INFO_BUFFERrF   N)r2   r3   r4   r  rG   r*   r*   r*   r+   r     rH   r   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  Nr  r*   r*   r*   r+   r!    r|   r!  c                   @   rD   )SAMPR_ALIAS_NAME_INFORMATIONr   Nr   r*   r*   r*   r+   r"    rH   r"  c                   @   rD   )#SAMPR_ALIAS_ADM_COMMENT_INFORMATIONr  Nr   r*   r*   r*   r+   r#    rH   r#  c                   @   r`   )ALIAS_INFORMATION_CLASSc                   @      e Zd ZdZdZdZdS )z!ALIAS_INFORMATION_CLASS.enumItemsr,   r5   rb   N)r2   r3   r4   AliasGeneralInformationAliasNameInformationAliasAdminCommentInformationr*   r*   r*   r+   rr         rr   Nrs   r*   r*   r*   r+   r$  
  rt   r$  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_BUFFERr  r   r  N)r2   r3   r4   r$  r&  r!  r'  r"  r(  r#  r   r*   r*   r*   r+   r+    
    


r+  c                   @   rD   )PSAMPR_ALIAS_INFO_BUFFERrF   N)r2   r3   r4   r+  rG   r*   r*   r*   r+   r-    rH   r-  c                   @   rD   )USER_PRIMARY_GROUP_INFORMATIONPrimaryGroupIdNr   r*   r*   r*   r+   r.    rH   r.  c                   @   rD   )USER_CONTROL_INFORMATIONUserAccountControlNr   r*   r*   r*   r+   r0  $  rH   r0  c                   @   rD   )USER_EXPIRES_INFORMATIONAccountExpiresNr   r*   r*   r*   r+   r2  *  rH   r2  c                   @   r   )LOGON_HOURS_ARRAYNr   r*   r*   r*   r+   r4  0  r   r4  c                   @   rD   )PLOGON_HOURS_ARRAYrF   N)r2   r3   r4   r4  rG   r*   r*   r*   r+   r5  3  rH   r5  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,   | d dkrt | d d | d< t| |S )Nr8  r   r7   r7  )lenr   getData)r&   soFarr*   r*   r+   r:  ?  s   zSAMPR_LOGON_HOURS.getDataN)r   )r2   r3   r4   r   r5  r^   r:  r*   r*   r*   r+   r6  8  s
    r6  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PasswordLastSetr3  PasswordCanChangePasswordMustChangeUserNameFullNameHomeDirectoryHomeDirectoryDrive
ScriptPathProfilePathr  WorkStationsUserComment
ParametersLmOwfPasswordNtOwfPasswordPrivateDatar   UserIdr/  r1  WhichFieldsr8  BadPasswordCount
LogonCountCountryCodeCodePageLmPasswordPresentNtPasswordPresentPasswordExpiredPrivateDataSensitiveN)r2   r3   r4   r[   r   rz   r   r   r6  r   r   r^   r*   r*   r*   r+   r<  E  s    	
 !"#$
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_GENERAL_INFORMATIONrB  rC  r/  r  rI  Nr  r*   r*   r*   r+   rX  n  r   rX  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_INFORMATIONrI  	Reserved1rR  rS  N)r2   r3   r4   r   r   r^   r*   r*   r*   r+   rY  x  r   rY  c                   @   rD   )!SAMPR_USER_PARAMETERS_INFORMATIONrJ  Nr   r*   r*   r*   r+   r[    rH   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_INFORMATIONrB  rC  rN  r/  rD  rE  rF  rG  rH  r=  r>  r?  r@  rA  r8  rP  rQ  r1  N	r2   r3   r4   r   r   r[   r6  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_INFORMATIONrB  rC  rN  r/  rD  rE  rF  rG  r  rH  r=  r>  r8  rP  rQ  r?  r3  r1  Nr]  r*   r*   r*   r+   r_    r^  r_  c                   @   rD   )SAMPR_USER_A_NAME_INFORMATIONrB  Nr   r*   r*   r*   r+   r`    rH   r`  c                   @   rD   )SAMPR_USER_F_NAME_INFORMATIONrC  Nr   r*   r*   r*   r+   ra    rH   ra  c                   @   r   )SAMPR_USER_NAME_INFORMATIONrB  rC  Nr   r*   r*   r*   r+   rb    r_   rb  c                   @   r   )SAMPR_USER_HOME_INFORMATIONrD  rE  Nr   r*   r*   r*   r+   rc    r_   rc  c                   @   rD   )SAMPR_USER_SCRIPT_INFORMATIONrF  Nr   r*   r*   r*   r+   rd    rH   rd  c                   @   rD   )SAMPR_USER_PROFILE_INFORMATIONrG  Nr   r*   r*   r*   r+   re    rH   re  c                   @   rD   )$SAMPR_USER_ADMIN_COMMENT_INFORMATIONr  Nr   r*   r*   r*   r+   rf    rH   rf  c                   @   rD   )#SAMPR_USER_WORKSTATIONS_INFORMATIONrH  Nr   r*   r*   r*   r+   rg    rH   rg  c                   @   rD   )"SAMPR_USER_LOGON_HOURS_INFORMATIONr8  N)r2   r3   r4   r6  r^   r*   r*   r*   r+   rh    rH   rh  c                   @   s    e Zd ZddeffZdd ZdS )SAMPR_USER_PASSWORD)r{   z512s=b""rL   c                 C   r   )Nr6   r*   r   r*   r*   r+   r     r   z SAMPR_USER_PASSWORD.getAlignmentN)r2   r3   r4   r   r^   r   r*   r*   r*   r+   ri    s
    ri  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+   rj    r   rj  c                   @   rD   )PSAMPR_ENCRYPTED_USER_PASSWORDrF   N)r2   r3   r4   rj  rG   r*   r*   r*   r+   rk    rH   rk  c                   @   r}   )!SAMPR_ENCRYPTED_USER_PASSWORD_NEW))r{   z532s=b""c                 C   r   r   r*   r   r*   r*   r+   r     r   z.SAMPR_ENCRYPTED_USER_PASSWORD_NEW.getAlignmentNr   r*   r*   r*   r+   rl    r   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_INTERNAL1_INFORMATIONEncryptedNtOwfPasswordEncryptedLmOwfPasswordrU  rT  rV  N)r2   r3   r4   ENCRYPTED_NT_OWF_PASSWORDr   r   r^   r*   r*   r*   r+   rm    r   rm  c                   @   rZ   ) SAMPR_USER_INTERNAL4_INFORMATIONr   UserPasswordN)r2   r3   r4   r<  rj  r^   r*   r*   r*   r+   rq    r_   rq  c                   @   rZ   )$SAMPR_USER_INTERNAL4_INFORMATION_NEWr   rr  N)r2   r3   r4   r<  rl  r^   r*   r*   r*   r+   rs    r_   rs  c                   @   rZ   ) SAMPR_USER_INTERNAL5_INFORMATIONrr  rV  N)r2   r3   r4   rj  r   r^   r*   r*   r*   r+   rt  #  r_   rt  c                   @   rZ   )$SAMPR_USER_INTERNAL5_INFORMATION_NEWrr  rV  N)r2   r3   r4   rl  r   r^   r*   r*   r*   r+   ru  *  r_   ru  c                   @   rZ   )SAMPR_USER_RESET_INFORMATIONExtendedWhichFields	ResetDataNr   r*   r*   r*   r+   rv  0  r_   rv  c                   @   r`   )USER_INFORMATION_CLASSc                   @   sl   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ZdS )z USER_INFORMATION_CLASS.enumItemsr,   r5   rb   r6   rc   rd   re   r7   rf   rg   r   r   r      r8                              N)r2   r3   r4   UserGeneralInformationUserPreferencesInformationUserLogonInformationUserLogonHoursInformationUserAccountInformationUserNameInformationUserAccountNameInformationUserFullNameInformationUserPrimaryGroupInformationUserHomeInformationUserScriptInformationUserProfileInformationUserAdminCommentInformationUserWorkStationsInformationUserControlInformationUserExpiresInformationUserInternal1InformationUserParametersInformationUserAllInformationUserInternal4InformationUserInternal5InformationUserInternal4InformationNewUserInternal5InformationNewUserResetInformationr*   r*   r*   r+   rr   8  s2    rr   Nrs   r*   r*   r*   r+   ry  7  rt   ry  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ej2de3fiZ4dS )SAMPR_USER_INFO_BUFFERr  PreferencesLogonr8  Accountr   AccountNamerC  PrimaryGroupHomeScriptProfiler  rH  ControlExpires	Internal1rJ  All	Internal4	Internal5Internal4NewInternal5NewResetN)5r2   r3   r4   ry  r  rX  r  rY  r  r\  r  rh  r  r_  r  rb  r  r`  r  ra  r  r.  r  rc  r  rd  r  re  r  rf  r  rg  r  r0  r  r2  r  rm  r  r[  r  r<  r  rq  r  rt  r  rs  r  ru  r  rv  r   r*   r*   r*   r+   r  S  sX    








	
















r  c                   @   rD   )PSAMPR_USER_INFO_BUFFERrF   N)r2   r3   r4   r  rG   r*   r*   r*   r+   r  o  rH   r  c                   @   ru   )PSAMPR_SERVER_NAME2))rF   z4s=b""N)r2   r3   r4   rG   r*   r*   r*   r+   r  t  rB   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  rC  Nr   r*   r*   r*   r+   r  z      r  c                   @   r>   )SAMPR_DOMAIN_DISPLAY_USER_ARRAYN)r2   r3   r4   r  rA   r*   r*   r*   r+   r    rB   r  c                   @   rD   ) PSAMPR_DOMAIN_DISPLAY_USER_ARRAYrF   N)r2   r3   r4   r  rG   r*   r*   r*   r+   r    rH   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                   @   r>   )"SAMPR_DOMAIN_DISPLAY_MACHINE_ARRAYN)r2   r3   r4   r  rA   r*   r*   r*   r+   r    rB   r  c                   @   rD   )#PSAMPR_DOMAIN_DISPLAY_MACHINE_ARRAYrF   N)r2   r3   r4   r  rG   r*   r*   r*   r+   r    rH   r  c                   @   r  )SAMPR_DOMAIN_DISPLAY_GROUPr  r  r  r  r  Nr   r*   r*   r*   r+   r    r   r  c                   @   r>   ) SAMPR_DOMAIN_DISPLAY_GROUP_ARRAYN)r2   r3   r4   r  rA   r*   r*   r*   r+   r    rB   r  c                   @   rD   )!PSAMPR_DOMAIN_DISPLAY_GROUP_ARRAYrF   N)r2   r3   r4   r  rG   r*   r*   r*   r+   r    rH   r  c                   @   rZ   )SAMPR_DOMAIN_DISPLAY_OEM_USERr  OemAccountNameNr2   r3   r4   r   rI   r^   r*   r*   r*   r+   r    r_   r  c                   @   r>   )#SAMPR_DOMAIN_DISPLAY_OEM_USER_ARRAYN)r2   r3   r4   r  rA   r*   r*   r*   r+   r    rB   r  c                   @   rD   )$PSAMPR_DOMAIN_DISPLAY_OEM_USER_ARRAYrF   N)r2   r3   r4   r  rG   r*   r*   r*   r+   r    rH   r  c                   @   rZ   )SAMPR_DOMAIN_DISPLAY_OEM_GROUPr  r  Nr  r*   r*   r*   r+   r    r_   r  c                   @   r>   )$SAMPR_DOMAIN_DISPLAY_OEM_GROUP_ARRAYN)r2   r3   r4   r  rA   r*   r*   r*   r+   r    rB   r  c                   @   rD   )%PSAMPR_DOMAIN_DISPLAY_OEM_GROUP_ARRAYrF   N)r2   r3   r4   r  rG   r*   r*   r*   r+   r    rH   r  c                   @   rZ   ) SAMPR_DOMAIN_DISPLAY_USER_BUFFERr   r{   N)r2   r3   r4   r   r  r^   r*   r*   r*   r+   r    r_   r  c                   @   rZ   )#SAMPR_DOMAIN_DISPLAY_MACHINE_BUFFERr   r{   N)r2   r3   r4   r   r  r^   r*   r*   r*   r+   r    r_   r  c                   @   rZ   )!SAMPR_DOMAIN_DISPLAY_GROUP_BUFFERr   r{   N)r2   r3   r4   r   r  r^   r*   r*   r*   r+   r    r_   r  c                   @   rZ   )$SAMPR_DOMAIN_DISPLAY_OEM_USER_BUFFERr   r{   N)r2   r3   r4   r   r  r^   r*   r*   r*   r+   r    r_   r  c                   @   rZ   )%SAMPR_DOMAIN_DISPLAY_OEM_GROUP_BUFFERr   r{   N)r2   r3   r4   r   r  r^   r*   r*   r*   r+   r    r_   r  c                   @   r`   )DOMAIN_DISPLAY_INFORMATIONc                   @   r  )z$DOMAIN_DISPLAY_INFORMATION.enumItemsr,   r5   rb   r6   rc   N)r2   r3   r4   DomainDisplayUserDomainDisplayMachineDomainDisplayGroupDomainDisplayOemUserDomainDisplayOemGroupr*   r*   r*   r+   rr     r  rr   Nrs   r*   r*   r*   r+   r    rt   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)r2   r3   r4   r  r  r  r  r  r  r  r  r  r  r  r   r*   r*   r*   r+   r    r  r  c                   @   rZ   )SAM_VALIDATE_PASSWORD_HASHrL   HashN)r2   r3   r4   r   r   r^   r*   r*   r*   r+   r    r_   r  c                   @   rD   )PSAM_VALIDATE_PASSWORD_HASHrF   N)r2   r3   r4   r  rG   r*   r*   r*   r+   r    rH   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PresentFieldsr?  BadPasswordTimeLockoutTimerP  r   PasswordHistoryN)r2   r3   r4   r   r   r  r^   r*   r*   r*   r+   r    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   r,   r5   rb   r6   rc   rd   re   r7   rf   rg   N)r2   r3   r4   SamValidateSuccessSamValidatePasswordMustChangeSamValidateAccountLockedOutSamValidatePasswordExpiredSamValidatePasswordIncorrectSamValidatePasswordIsInHistorySamValidatePasswordTooShortSamValidatePasswordTooLong#SamValidatePasswordNotComplexEnoughSamValidatePasswordTooRecentSamValidatePasswordFilterErrorr*   r*   r*   r+   rr     s    rr   Nrs   r*   r*   r*   r+   r    rt   r  c                   @   rZ   ) SAM_VALIDATE_STANDARD_OUTPUT_ARGChangedPersistedFieldsValidationStatusN)r2   r3   r4   r  r  r^   r*   r*   r*   r+   r  ,  r_   r  c                   @   rD   )!PSAM_VALIDATE_STANDARD_OUTPUT_ARGrF   N)r2   r3   r4   r  rG   r*   r*   r*   r+   r  2  rH   r  c                   @   rZ   )%SAM_VALIDATE_AUTHENTICATION_INPUT_ARGInputPersistedFieldsPasswordMatchedN)r2   r3   r4   r  r   r^   r*   r*   r*   r+   r  8  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r2   r3   r4   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  I  r  r  c                   @   r`   )PASSWORD_POLICY_VALIDATION_TYPEc                   @   r%  )z)PASSWORD_POLICY_VALIDATION_TYPE.enumItemsr,   r5   rb   N)r2   r3   r4   SamValidateAuthenticationSamValidatePasswordChangeSamValidatePasswordResetr*   r*   r*   r+   rr   U  r)  rr   Nrs   r*   r*   r*   r+   r  T  rt   r  c                   @   r*  )SAM_VALIDATE_INPUT_ARGValidateAuthenticationInputValidatePasswordChangeInputValidatePasswordResetInputN)r2   r3   r4   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)	r2   r3   r4   r  r  r  r  r  r   r*   r*   r*   r+   r  c  r,  r  c                   @   rD   )PSAM_VALIDATE_OUTPUT_ARGrF   N)r2   r3   r4   r  rG   r*   r*   r*   r+   r  j  rH   r  c                   @   ru   )USER_PROPERTIES))rZ  <L=0)rL   r	  	Reserved2<H=0	Reserved3r  )	Reserved4z96s="")PropertySignaturez<H=0x50Nr2   r3   r4   r^   r*   r*   r*   r+   r  r  rB   r  c                 C   s   t | }t|}d|d  }||k rtdt| |kr"td||kr9d|d< | ||d  |d< |dd	fS t| |d
 k rFtdtd| ||d
  d }||d< | ||d  |d< ||| |d
 | fS )Nr   rL   z4USER_PROPERTIES length shorter than the fixed headerz!USER_PROPERTIES missing Reserved5r   PropertyCountr,   	Reserved5    r5   z%USER_PROPERTIES missing PropertyCountrw   )r  r9  structerrorunpack)datauser_propertiesproperty_count_offsetproperties_endproperty_countr*   r*   r+   unpack_user_properties}  s"   



r  c                   @   ru   )USER_PROPERTY))
NameLengthr  )ValueLengthr  )Reservedr  )_PropertyNamez_-PropertyNamezself['NameLength'])PropertyName:)_PropertyValuez_-PropertyValuezself['ValueLength'])PropertyValuer$  Nr  r*   r*   r*   r+   r    rB   r  c                   @   ru   )WDIGEST_CREDENTIALS)")rZ  B=0)r  r(  )VersionzB=1)NumberOfHasheszB=29)r  z12s="")Hash116s="")Hash2r,  )Hash3r,  )Hash4r,  )Hash5r,  )Hash6r,  )Hash7r,  )Hash8r,  )Hash9r,  )Hash10r,  )Hash11r,  )Hash12r,  )Hash13r,  )Hash14r,  )Hash15r,  )Hash16r,  )Hash17r,  )Hash18r,  )Hash19r,  )Hash20r,  )Hash21r,  )Hash22r,  )Hash23r,  )Hash24r,  )Hash25r,  )Hash26r,  )Hash27r,  )Hash28r,  )Hash29r,  Nr  r*   r*   r*   r+   r'    rB   r'  c                   @   ru   )KERB_KEY_DATA)rZ  r  r
  r  KeyTyper	  	KeyLengthr	  	KeyOffsetr	  Nr  r*   r*   r*   r+   rI    rB   rI  c                   @   ru   )KERB_STORED_CREDENTIAL))r   z<H=3Flagsr  CredentialCountr  OldCredentialCountr  DefaultSaltLengthr  DefaultSaltMaximumLengthr  DefaultSaltOffsetr	  r{   r$  Nr  r*   r*   r*   r+   rQ    rB   rQ  c                   @   ru   )KERB_KEY_DATA_NEW)rJ  r
  )r  r	  )IterationCountr	  rK  rM  rO  Nr  r*   r*   r*   r+   r_    rB   r_  c                   @   ru   )KERB_STORED_CREDENTIAL_NEW))r   z<H=4rR  rT  )ServiceCredentialCountr  rV  )OlderCredentialCountr  rX  rZ  r\  )DefaultIterationCountr	  r^  Nr  r*   r*   r*   r+   ra    rB   ra  c                   @       e Zd ZdZdefdeffZdS )SamrConnectr   
ServerNameDesiredAccessN)r2   r3   r4   opnumr  r   r^   r*   r*   r*   r+   rf    
    rf  c                   @   rZ   )SamrConnectResponseServerHandle	ErrorCodeNr2   r3   r4   r~   r   r^   r*   r*   r*   r+   rk    r_   rk  c                   @   re  )SamrCloseHandler,   	SamHandlerh  N)r2   r3   r4   ri  r~   r   r^   r*   r*   r*   r+   ro    rj  ro  c                   @   rZ   )SamrCloseHandleResponserp  rm  Nrn  r*   r*   r*   r+   rq  &  r_   rq  c                   @   &   e Zd ZdZdefdefdeffZdS )SamrSetSecurityObjectr5   ObjectHandleSecurityInformationr   N)r2   r3   r4   ri  r~   r   r   r^   r*   r*   r*   r+   rs  ,      rs  c                   @   rD   )SamrSetSecurityObjectResponserm  Nr   r*   r*   r*   r+   rw  4  rH   rw  c                   @   re  )SamrQuerySecurityObjectrb   rt  ru  N)r2   r3   r4   ri  r~   r   r^   r*   r*   r*   r+   rx  9  rj  rx  c                   @   rZ   )SamrQuerySecurityObjectResponser   rm  N)r2   r3   r4   r   r   r^   r*   r*   r*   r+   ry  @  r_   ry  c                   @   re  )SamrLookupDomainInSamServerrc   rl  r   N)r2   r3   r4   ri  r~   r   r^   r*   r*   r*   r+   rz  F  rj  rz  c                   @   rZ   )#SamrLookupDomainInSamServerResponseDomainIdrm  Nr2   r3   r4   r   r   r^   r*   r*   r*   r+   r{  M  r_   r{  c                   @   &   e Zd ZdZdefdefdeffZdS )SamrEnumerateDomainsInSamServerrd   rl  EnumerationContextPreferedMaximumLengthNr2   r3   r4   ri  r~   r   r^   r*   r*   r*   r+   r  S  rv  r  c                   @   (   e Zd ZdefdefdefdeffZdS )'SamrEnumerateDomainsInSamServerResponser  r{   CountReturnedrm  Nr2   r3   r4   r   r   r^   r*   r*   r*   r+   r  [  r   r  c                   @   rr  )SamrOpenDomainre   rl  rh  r|  N)r2   r3   r4   ri  r~   r   r   r^   r*   r*   r*   r+   r  c  rv  r  c                   @   rZ   )SamrOpenDomainResponseDomainHandlerm  Nrn  r*   r*   r*   r+   r  k  r_   r  c                   @   re  )SamrQueryInformationDomainr7   r  DomainInformationClassNr2   r3   r4   ri  r~   r   r^   r*   r*   r*   r+   r  q  rj  r  c                   @   rZ   )"SamrQueryInformationDomainResponser{   rm  Nr2   r3   r4   r  r   r^   r*   r*   r*   r+   r  x  r_   r  c                   @   rr  )SamrSetInformationDomainrf   r  r  DomainInformationN)r2   r3   r4   ri  r~   r   r  r^   r*   r*   r*   r+   r  ~  rv  r  c                   @   rD   ) SamrSetInformationDomainResponserm  Nr   r*   r*   r*   r+   r    rH   r  c                   @   rr  )SamrCreateGroupInDomainrg   r  r   rh  Nr2   r3   r4   ri  r~   r   r   r^   r*   r*   r*   r+   r    rv  r  c                   @   r   )SamrCreateGroupInDomainResponseGroupHandler   rm  Nrn  r*   r*   r*   r+   r    r|   r  c                   @   r~  )SamrEnumerateGroupsInDomainr   r  r  r  Nr  r*   r*   r*   r+   r    rv  r  c                   @   rr  )SamrCreateUserInDomainr   r  r   rh  Nr  r*   r*   r*   r+   r    rv  r  c                   @   r   )SamrCreateUserInDomainResponse
UserHandler   rm  Nrn  r*   r*   r*   r+   r    r|   r  c                   @   r  )#SamrEnumerateGroupsInDomainResponser  r{   r  rm  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  r1  r  Nr  r*   r*   r*   r+   r        r  c                   @   r  )"SamrEnumerateUsersInDomainResponser  r{   r  rm  Nr  r*   r*   r*   r+   r    r   r  c                   @   rr  )SamrCreateAliasInDomainrz  r  r  rh  Nr  r*   r*   r*   r+   r    rv  r  c                   @   r   )SamrCreateAliasInDomainResponseAliasHandler   rm  Nrn  r*   r*   r*   r+   r    r|   r  c                   @   r~  )SamrEnumerateAliasesInDomain   r  r  r  Nr  r*   r*   r*   r+   r    rv  r  c                   @   r  )$SamrEnumerateAliasesInDomainResponser  r{   r  rm  Nr  r*   r*   r*   r+   r    r   r  c                   @   re  )SamrGetAliasMembershipr8   r  SidArrayNr2   r3   r4   ri  r~   r   r^   r*   r*   r*   r+   r    rj  r  c                   @   rZ   )SamrGetAliasMembershipResponse
Membershiprm  Nr2   r3   r4   r   r   r^   r*   r*   r*   r+   r    r_   r  c                   @   rr  )SamrLookupNamesInDomainr{  r  r   NamesN)r2   r3   r4   ri  r~   r   r?   r^   r*   r*   r*   r+   r    rv  r  c                   @   ry   )SamrLookupNamesInDomainResponseRelativeIdsUserm  Nr  r*   r*   r*   r+   r    r|   r  c                   @   rr  )SamrLookupIdsInDomainr|  r  r   r  N)r2   r3   r4   ri  r~   r   r   r^   r*   r*   r*   r+   r    rv  r  c                   @   s"   e Zd ZdefdefdeffZdS )SamrLookupIdsInDomainResponser  r  rm  N)r2   r3   r4   r   r   r   r^   r*   r*   r*   r+   r    r|   r  c                   @   r~  )SamrOpenGroup   r  rh  GroupIdNr  r*   r*   r*   r+   r    rv  r  c                   @   rZ   )SamrOpenGroupResponser  rm  Nrn  r*   r*   r*   r+   r    r_   r  c                   @   re  )SamrQueryInformationGroupr}  r  GroupInformationClassN)r2   r3   r4   ri  r~   r  r^   r*   r*   r*   r+   r  #  rj  r  c                   @   rZ   )!SamrQueryInformationGroupResponser{   rm  N)r2   r3   r4   r   r   r^   r*   r*   r*   r+   r  *  r_   r  c                   @   rr  )SamrSetInformationGroupr~  r  r  r{   N)r2   r3   r4   ri  r~   r  r  r^   r*   r*   r*   r+   r  0  rv  r  c                   @   rD   )SamrSetInformationGroupResponserm  Nr   r*   r*   r*   r+   r  8  rH   r  c                   @   r~  )SamrAddMemberToGroup   r  MemberIdr   Nr  r*   r*   r*   r+   r  =  rv  r  c                   @   rD   )SamrAddMemberToGroupResponserm  Nr   r*   r*   r*   r+   r  E  rH   r  c                   @      e Zd ZdZdeffZdS )SamrDeleteGroupr  r  Nr2   r3   r4   ri  r~   r^   r*   r*   r*   r+   r  J      r  c                   @   rZ   )SamrDeleteGroupResponser  rm  Nrn  r*   r*   r*   r+   r  P  r_   r  c                   @   re  )SamrRemoveMemberFromGroupr  r  r  Nr  r*   r*   r*   r+   r  V  rj  r  c                   @   rD   )!SamrRemoveMemberFromGroupResponserm  Nr   r*   r*   r*   r+   r  ]  rH   r  c                   @   r  )SamrGetMembersInGroupr  r  Nr  r*   r*   r*   r+   r  b  r  r  c                   @   rZ   )SamrGetMembersInGroupResponser   rm  N)r2   r3   r4   r   r   r^   r*   r*   r*   r+   r  h  r_   r  c                   @   r~  )SamrSetMemberAttributesOfGroupr  r  r  r   Nr  r*   r*   r*   r+   r  n  rv  r  c                   @   rD   )&SamrSetMemberAttributesOfGroupResponserm  Nr   r*   r*   r*   r+   r  v  rH   r  c                   @   r~  )SamrOpenAlias   r  rh  AliasIdNr  r*   r*   r*   r+   r  {  rv  r  c                   @   rZ   )SamrOpenAliasResponser  rm  Nrn  r*   r*   r*   r+   r    r_   r  c                   @   re  )SamrQueryInformationAlias   r  AliasInformationClassN)r2   r3   r4   ri  r~   r$  r^   r*   r*   r*   r+   r    rj  r  c                   @   rZ   )!SamrQueryInformationAliasResponser{   rm  N)r2   r3   r4   r-  r   r^   r*   r*   r*   r+   r    r_   r  c                   @   rr  )SamrSetInformationAlias   r  r  r{   N)r2   r3   r4   ri  r~   r$  r+  r^   r*   r*   r*   r+   r    rv  r  c                   @   rD   )SamrSetInformationAliasResponserm  Nr   r*   r*   r*   r+   r    rH   r  c                   @   r  )SamrDeleteAliasr  r  Nr  r*   r*   r*   r+   r    r  r  c                   @   rZ   )SamrDeleteAliasResponser  rm  Nrn  r*   r*   r*   r+   r    r_   r  c                   @   re  )SamrAddMemberToAlias   r  r  Nr2   r3   r4   ri  r~   r   r^   r*   r*   r*   r+   r    rj  r  c                   @   rD   )SamrAddMemberToAliasResponserm  Nr   r*   r*   r*   r+   r    rH   r  c                   @   re  )SamrRemoveMemberFromAliasr9   r  r  Nr  r*   r*   r*   r+   r    rj  r  c                   @   rD   )!SamrRemoveMemberFromAliasResponserm  Nr   r*   r*   r*   r+   r    rH   r  c                   @   r  )SamrGetMembersInAlias!   r  Nr  r*   r*   r*   r+   r    r  r  c                   @   rZ   )SamrGetMembersInAliasResponser   rm  N)r2   r3   r4   r   r   r^   r*   r*   r*   r+   r    r_   r  c                   @   r~  )SamrOpenUser"   r  rh  rN  Nr  r*   r*   r*   r+   r    rv  r  c                   @   rZ   )SamrOpenUserResponser  rm  Nrn  r*   r*   r*   r+   r    r_   r  c                   @   r  )SamrDeleteUser#   r  Nr  r*   r*   r*   r+   r    r  r  c                   @   rZ   )SamrDeleteUserResponser  rm  Nrn  r*   r*   r*   r+   r    r_   r  c                   @   re  )SamrQueryInformationUser$   r  UserInformationClassNr2   r3   r4   ri  r~   ry  r^   r*   r*   r*   r+   r    rj  r  c                   @   rZ   ) SamrQueryInformationUserResponser{   rm  Nr2   r3   r4   r  r   r^   r*   r*   r*   r+   r    r_   r  c                   @   rr  )SamrSetInformationUser%   r  r  r{   Nr2   r3   r4   ri  r~   ry  r  r^   r*   r*   r*   r+   r    rv  r  c                   @   rD   )SamrSetInformationUserResponserm  Nr   r*   r*   r*   r+   r    rH   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)	r2   r3   r4   ri  r~   r   r   PENCRYPTED_NT_OWF_PASSWORDr^   r*   r*   r*   r+   r    s    r  c                   @   rD   )SamrChangePasswordUserResponserm  Nr   r*   r*   r*   r+   r    rH   r  c                   @   r  )SamrGetGroupsForUser'   r  Nr  r*   r*   r*   r+   r    r  r  c                   @   rZ   )SamrGetGroupsForUserResponser   rm  N)r2   r3   r4   r   r   r^   r*   r*   r*   r+   r  "  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r2   r3   r4   ri  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 )#SamrQueryDisplayInformationResponseTotalAvailableTotalReturnedr{   rm  Nr2   r3   r4   r   r  r^   r*   r*   r*   r+   r	  2  r   r	  c                   @   rr  )SamrGetDisplayEnumerationIndex)   r  r  PrefixNr2   r3   r4   ri  r~   r  r   r^   r*   r*   r*   r+   r  :  rv  r  c                   @   r   )&SamrGetDisplayEnumerationIndexResponser  rm  Nr   r*   r*   r*   r+   r  B  r_   r  c                   @   r  )$SamrGetUserDomainPasswordInformation,   r  Nr  r*   r*   r*   r+   r  H  r  r  c                   @   rZ   ),SamrGetUserDomainPasswordInformationResponsePasswordInformationrm  Nr2   r3   r4   r   r   r^   r*   r*   r*   r+   r  N  r_   r  c                   @   re  )!SamrRemoveMemberFromForeignDomain-   r  	MemberSidNr  r*   r*   r*   r+   r  T  rj  r  c                   @   rD   ))SamrRemoveMemberFromForeignDomainResponserm  Nr   r*   r*   r*   r+   r  [  rH   r  c                   @   re  )SamrQueryInformationDomain2.   r  r  Nr  r*   r*   r*   r+   r  `  rj  r  c                   @   rZ   )#SamrQueryInformationDomain2Responser{   rm  Nr  r*   r*   r*   r+   r  g  r_   r  c                   @   re  )SamrQueryInformationUser2/   r  r  Nr  r*   r*   r*   r+   r  m  rj  r  c                   @   rZ   )!SamrQueryInformationUser2Responser{   rm  Nr  r*   r*   r*   r+   r   t  r_   r   c                   @   r   )SamrQueryDisplayInformation20   r  r  r  r  r  Nr  r*   r*   r*   r+   r!  z  r  r!  c                   @   r  )$SamrQueryDisplayInformation2Responser
  r  r{   rm  Nr  r*   r*   r*   r+   r#    r   r#  c                   @   rr  )SamrGetDisplayEnumerationIndex21   r  r  r  Nr  r*   r*   r*   r+   r$    rv  r$  c                   @   r   )'SamrGetDisplayEnumerationIndex2Responser  rm  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 )SamrCreateUser2InDomain2   r  r   AccountTyperh  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 )SamrCreateUser2InDomainResponser  GrantedAccessr   rm  Nrn  r*   r*   r*   r+   r*    r   r*  c                   @   r   )SamrQueryDisplayInformation33   r  r  r  r  r  Nr  r*   r*   r*   r+   r,    r  r,  c                   @   r  )$SamrQueryDisplayInformation3Responser
  r  r{   rm  Nr  r*   r*   r*   r+   r.    r   r.  c                   @   re  )SamrAddMultipleMembersToAlias4   r  MembersBufferNr  r*   r*   r*   r+   r/    rj  r/  c                   @   rD   )%SamrAddMultipleMembersToAliasResponserm  Nr   r*   r*   r*   r+   r2    rH   r2  c                   @   re  )"SamrRemoveMultipleMembersFromAlias5   r  r1  Nr  r*   r*   r*   r+   r3    rj  r3  c                   @   rD   )*SamrRemoveMultipleMembersFromAliasResponserm  Nr   r*   r*   r*   r+   r5    rH   r5  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   rg  rB  NewPasswordEncryptedWithOldLm"OldLmOwfPasswordEncryptedWithNewLmN)	r2   r3   r4   ri  rY   rI   rk  r   r^   r*   r*   r*   r+   r6    r  r6  c                   @   rD   )"SamrOemChangePasswordUser2Responserm  Nr   r*   r*   r*   r+   r:    rH   r:  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   rg  rB  NewPasswordEncryptedWithOldNt"OldNtOwfPasswordEncryptedWithNewNtr  r8  "OldLmOwfPasswordEncryptedWithNewNtN)r2   r3   r4   ri  r   r   rk  r  r   r   r^   r*   r*   r*   r+   r;    s    r;  c                   @   rD   )&SamrUnicodeChangePasswordUser2Responserm  Nr   r*   r*   r*   r+   r@    rH   r@  c                   @   r  ) SamrGetDomainPasswordInformation8   UnusedN)r2   r3   r4   ri  r   r^   r*   r*   r*   r+   rA    s    rA  c                   @   rZ   )(SamrGetDomainPasswordInformationResponser  rm  Nr  r*   r*   r*   r+   rD    r_   rD  c                   @   re  )SamrConnect29   rg  rh  Nr2   r3   r4   ri  PSAMPR_SERVER_NAMEr   r^   r*   r*   r*   r+   rE  	  rj  rE  c                   @   rZ   )SamrConnect2Responserl  rm  Nrn  r*   r*   r*   r+   rI  	  r_   rI  c                   @   rr  )SamrSetInformationUser2:   r  r  r{   Nr  r*   r*   r*   r+   rJ  	  rv  rJ  c                   @   rD   )SamrSetInformationUser2Responserm  Nr   r*   r*   r*   r+   rL  	  rH   rL  c                   @   r~  )SamrConnect4>   rg  ClientRevisionrh  NrG  r*   r*   r*   r+   rM  	  rv  rM  c                   @   rZ   )SamrConnect4Responserl  rm  Nrn  r*   r*   r*   r+   rP  #	  r_   rP  c                   @   s,   e Zd ZdZdefdefdefdeffZdS )SamrConnect5r:   rg  rh  	InVersionInRevisionInfoN)r2   r3   r4   ri  rH  r   r   r^   r*   r*   r*   r+   rQ  )	  r  rQ  c                   @   s(   e Zd ZdefdefdefdeffZdS )SamrConnect5Response
OutVersionOutRevisionInforl  rm  N)r2   r3   r4   r   r   r~   r^   r*   r*   r*   r+   rT  2	  r   rT  c                   @   re  )SamrRidToSidA   rt  r  Nr  r*   r*   r*   r+   rW  :	  rj  rW  c                   @   rZ   )SamrRidToSidResponseSidrm  Nr}  r*   r*   r*   r+   rY  A	  r_   rY  c                   @   rr  )SamrSetDSRMPasswordB   rC  rN  rn  N)r2   r3   r4   ri  r   r   r  r^   r*   r*   r*   r+   r[  G	  rv  r[  c                   @   rD   )SamrSetDSRMPasswordResponserm  Nr   r*   r*   r*   r+   r]  O	  rH   r]  c                   @   re  )SamrValidatePasswordC   ValidationTypeInputArgN)r2   r3   r4   ri  r  r  r^   r*   r*   r*   r+   r^  T	  rj  r^  c                   @   rZ   )SamrValidatePasswordResponse	OutputArgrm  N)r2   r3   r4   r  r   r^   r*   r*   r*   r+   rb  [	  r_   rb  rb   rc   rd   re   rf   rg   r   r   r   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-  r0  r4  )
r7  r<  rB  rF  rK  rN  r:   rX  r\  r_   c                 C   sD   t  }||d< ||d< ||d< ||d d< ||d d d< | |S )Nrg  rh  rR  rS  r   r   r   )rQ  request)dce
serverNamedesiredAccess	inVersionrevisionre  r*   r*   r+   hSamrConnect5	  s   
rk  c                 C   (   t  }||d< ||d< ||d< | |S )Nrg  rh  rO  )rM  re  )rf  rg  rh  clientRevisionre  r*   r*   r+   hSamrConnect4	  
   
rn  c                 C       t  }||d< ||d< | |S Nrg  rh  )rE  re  rf  rg  rh  re  r*   r*   r+   hSamrConnect2	     
rs  c                 C   rp  rq  )rf  re  rr  r*   r*   r+   hSamrConnect	  rt  ru  c                 C   rl  )Nrl  rh  r|  )r  re  )rf  serverHandlerh  domainIdre  r*   r*   r+   hSamrOpenDomain	  ro  rx  c                 C   rl  )Nr  rh  r  )r  re  )rf  domainHandlerh  groupIdre  r*   r*   r+   hSamrOpenGroup	  ro  r{  c                 C   rl  )Nr  rh  r  )r  re  )rf  ry  rh  aliasIdre  r*   r*   r+   hSamrOpenAlias	  ro  r}  c                 C   rl  )Nr  rh  rN  )r  re  )rf  ry  rh  userIdre  r*   r*   r+   hSamrOpenUser	  ro  r      c                 C   rl  )Nrl  r  r  )r  re  )rf  rv  enumerationContextpreferedMaximumLengthre  r*   r*   r+    hSamrEnumerateDomainsInSamServer	  ro  r  c                 C   rl  Nr  r  r  )r  re  rf  ry  r  r  re  r*   r*   r+   hSamrEnumerateGroupsInDomain	  ro  r  c                 C   rl  r  )r  re  r  r*   r*   r+   hSamrEnumerateAliasesInDomain	  ro  r  c                 C   s0   t  }||d< ||d< ||d< ||d< | |S )Nr  r1  r  r  )r  re  )rf  ry  userAccountControlr  r  re  r*   r*   r+   hSamrEnumerateUsersInDomain	  s   
r  c                 C   8   t  }||d< ||d< ||d< ||d< ||d< | |S Nr  r  r  r  r  )r,  re  rf  ry  displayInformationClassindex
entryCountr  re  r*   r*   r+   hSamrQueryDisplayInformation3	     
r  c                 C   r  r  )r!  re  r  r*   r*   r+   hSamrQueryDisplayInformation2
  r  r  c                 C   r  r  )r  re  r  r*   r*   r+   hSamrQueryDisplayInformation
  r  r  rO   c                 C   rl  Nr  r  r  )r$  re  rf  ry  r  prefixre  r*   r*   r+    hSamrGetDisplayEnumerationIndex2
  ro  r  c                 C   rl  r  )r  re  r  r*   r*   r+   hSamrGetDisplayEnumerationIndex
  ro  r  c                 C   rl  Nr  r   rh  )r  re  rf  ry  namerh  re  r*   r*   r+   hSamrCreateGroupInDomain&
  ro  r  c                 C   rl  )Nr  r  rh  )r  re  )rf  ry  accountNamerh  re  r*   r*   r+   hSamrCreateAliasInDomain-
  ro  r  c              
   C   s   t  }||d< ||d< ||d< ||d< z| |W S  tyB } z|jdkr*td|jdkr3td|jd	kr<td
|d }~ww )Nr  r   r)  rh  l   "    zNAuthenticating account doesn't have the right to create a new machine account!l      z8Authenticating account's machine account quota exceeded!l   b    z?Account name not accepted, maybe the '$' at the end is missing?)r'  re  r$   r(   	Exception)rf  ry  r  accountTyperh  re  er*   r*   r+   hSamrCreateUser2InDomain4
  s"   


r  c                 C   rl  r  )r  re  r  r*   r*   r+   hSamrCreateUserInDomainG
  ro  r  c                 C   rp  Nr  r  )r  re  rf  ry  domainInformationClassre  r*   r*   r+   hSamrQueryInformationDomainN
  rt  r  c                 C   rp  r  )r  re  r  r*   r*   r+   hSamrQueryInformationDomain2T
  rt  r  c                 C   rp  )Nr  r  )r  re  )rf  groupHandlegroupInformationClassre  r*   r*   r+   hSamrQueryInformationGroupZ
  rt  r  c                 C   rp  )Nr  r  )r  re  )rf  aliasHandlealiasInformationClassre  r*   r*   r+   hSamrQueryInformationAlias`
  rt  r  c                 C   rp  Nr  r  )r  re  rf  
userHandleuserInformationClassre  r*   r*   r+   hSamrQueryInformationUser2f
  rt  r  c                 C   rp  r  )r  re  r  r*   r*   r+   hSamrQueryInformationUserl
  rt  r  c                 C   ,   t  }||d< |d |d< ||d< | |S )Nr  r   r  r  )r  re  )rf  ry  domainInformationre  r*   r*   r+   hSamrSetInformationDomainr
  
   
r  c                 C   r  )Nr  r   r  r{   )r  re  )rf  r  bufferre  r*   r*   r+   hSamrSetInformationGroupy
  r  r  c                 C   r  )Nr  r   r  r{   )r  re  )rf  r  r  re  r*   r*   r+   hSamrSetInformationAlias
  r  r  c                 C   r  Nr  r   r  r{   )rJ  re  rf  r  r  re  r*   r*   r+   hSamrSetInformationUser2
  r  r  c                 C   r  r  )r  re  r  r*   r*   r+   hSamrSetInformationUser
  r  r  c                 C      t  }||d< | |S Nr  )r  re  rf  r  re  r*   r*   r+   hSamrDeleteGroup
     
r  c                 C   r  Nr  )r  re  rf  r  re  r*   r*   r+   hSamrDeleteAlias
  r  r  c                 C   r  Nr  )r  re  rf  r  re  r*   r*   r+   hSamrDeleteUser
  r  r  c                 C   rl  Nr  r  r   )r  re  rf  r  memberId
attributesre  r*   r*   r+   hSamrAddMemberToGroup
  ro  r  c                 C   rp  )Nr  r  )r  re  )rf  r  r  re  r*   r*   r+   hSamrRemoveMemberFromGroup
  rt  r  c                 C   r  r  )r  re  r  r*   r*   r+   hSamrGetMembersInGroup
  r  r  c                 C   rp  Nr  r  )r  re  rf  r  r  re  r*   r*   r+   hSamrAddMemberToAlias
  rt  r  c                 C   rp  r  )r  re  r  r*   r*   r+   hSamrRemoveMemberFromAlias
  rt  r  c                 C   r  r  )r  re  r  r*   r*   r+   hSamrGetMembersInAlias
  r  r  c                 C   rp  )Nr  r  )r  re  )rf  ry  	memberSidre  r*   r*   r+   "hSamrRemoveMemberFromForeignDomain
  rt  r  c                 C   4   t  }||d< ||d< t|d |d d< | |S Nr  r1  r   r   )r/  r9  re  rf  r  membersBufferre  r*   r*   r+   hSamrAddMultipleMembersToAlias
  
   
r  c                 C   r  r  )r3  r9  re  r  r*   r*   r+   #hSamrRemoveMultipleMembersFromAlias
  r  r  c                 C   r  r  )r  re  r  r*   r*   r+   hSamrGetGroupsForUser
  r  r  c                 C   r  )Nr  r  r   r   )r  r9  re  )rf  ry  sidArrayre  r*   r*   r+   hSamrGetAliasMembership
  r  r  c           
      C   s  t  }||d< ddlm}m}	 |dkr|	|}nzt|}W n   Y |dkr.|	|}nzt|}W n   Y |dkrC|	|}nzt|}W n   Y d|d< t|d< t|d< d|d	< ||||d
< ||||d< d|d< t|d< d|d< ||||d< | 	|S )Nr  r   cryptontlmrO   r  r  r  r,   r  r  r  r  r  r  r  )
r  impacketr  r  NTOWFv1r   LMOWFv1r   SamEncryptNTLMHashre  )
rf  r  oldPasswordnewPasswordoldPwdHashNTnewPwdHashLMnewPwdHashNTre  r  r  r*   r*   r+   hSamrChangePasswordUser
  s@   
r  c                 C   s|  t  }||d< ||d< zddlm} W n ty&   td td Y nw ddlm}	m}
 |dkrB|dkrB|
	|}|

|}nzt|}W n   Y zt|}W n   Y |

|}t }z|d	}W n ty~   dd l}|| d	}Y nw d
dt|  | |d< t||d< | }||}||}||d d< |	|||d< d|d< t|d< t|d< | |S )Nrg  rB  r   r"   zDWarning: You don't have any crypto installed. You need pycryptodomexz+See https://pypi.org/project/pycryptodomex/r  rO   utf-16le   Ar=   r{   rL   r=  r>  r  r8  r?  )r;  Cryptodome.Cipherr#   r  r   criticalr  r  r  r  r  r   ri  encodeUnicodeDecodeErrorsysdecodegetfilesystemencodingr9  r:  newencryptr  r   re  )rf  rg  userNamer  r  oldPwdHashLMr  re  r#   r  r  r  samUserencoded_passwordr  pwdBuffrc4encBufr*   r*   r+   hSamrUnicodeChangePasswordUser2  sP   





r  c                 C   rp  )Nrl  r   )rz  re  )rf  rv  r  re  r*   r*   r+   hSamrLookupDomainInSamServerG  rt  r  c                 C   rl  )Nrt  ru  r   )rs  re  )rf  objectHandlesecurityInformationsecurityDescriptorre  r*   r*   r+   hSamrSetSecurityObjectM  ro  r  c                 C   rp  )Nrt  ru  )rx  re  )rf  r  r  re  r*   r*   r+   hSamrQuerySecurityObjectT  rt  r  c                 C   r  )Nrp  )ro  re  )rf  	samHandlere  r*   r*   r+   hSamrCloseHandleZ  r  r
  c                 C   rl  r  )r  re  r  r*   r*   r+   hSamrSetMemberAttributesOfGroup_  ro  r  c                 C   r  r  )r  re  r  r*   r*   r+   %hSamrGetUserDomainPasswordInformationf  r  r  c                 C   s   t  }t|d< | |S )NrC  )rA  r   re  )rf  re  r*   r*   r+   !hSamrGetDomainPasswordInformationk  r  r  c                 C   rp  )Nrt  r  )rW  re  )rf  r  ridre  r*   r*   r+   hSamrRidToSidp  rt  r  c                 C   s$   t  }|d |d< ||d< | |S )Nr   r`  ra  )r^  re  )rf  inputArgre  r*   r*   r+   hSamrValidatePasswordv  s   
r  c                 C   Z   t  }||d< t||d< |D ]}t }||d< |d | qd|jd jd< | |S )Nr  r   rF   r    MaximumCount)r  r9  r   appendfieldsre  )rf  ry  namesre  r  entryr*   r*   r+   hSamrLookupNamesInDomain|     
r  c                 C   r  )Nr  r   rF   r  r  r  )r  r9  r   r  r  re  )rf  ry  idsre  dIdr  r*   r*   r+   hSamrLookupIdsInDomain  r  r  c                 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< | |S ) Nr  r  r{   r   i   	r  r   rO  rB  rC  rD  rE  rF  rG  r  rH  rI  rJ  rK  rL  rM  r   r8  r,   rV  r  r=       z<Ir8   rr  )rJ  ry  r  r   r  r9  rjustr  packosurandomget_rpc_transportget_smb_connectiongetSessionKeyr!   updatedigestr#   r  r  re  )rf  r  passwordre  pwdbuffbufflensaltsession_keykeymdr.   cipherbuffercryptr*   r*   r+   hSamrSetPasswordInternal4New  sF   






r0  c                 C   s   t  }||d< tj|d< tj|d d< ddlm}m} |dkr%||}nzt|}W n   Y |  	 
 }||||d d d	< t|d d d
< d|d d d< d|d d d< | |S )Nr  r  r{   r   r   r  rO   r  rn  ro  r,   rU  rT  )r  ry  r  r  r  r  r  r   r#  r$  r%  r  r   re  )rf  r  r(  hashNTre  r  r  r,  r*   r*   r+   hSamrSetNTInternal1  s"   

r2  )r   r  )rO   rO   rO   )rd  rO   rO   rO   rO   rO   )rO   (@  
__future__r   r   binasciir   impacket.dcerpc.v5.ndrr   r   r   r   r	   r
   r   r   impacket.dcerpc.v5.dtypesr   r   r   r   r   r   r   r   r   r   r   r   r   r   impacket.dcerpc.v5.rpcrtr   r  r   r   impacket.uuidr   impacket.dcerpc.v5.enumr   impacket.structurer    r  r!  hashlibr!   r  r#   MSRPC_UUID_SAMRr$   rH  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_HISTORYr?   rC   rE   rI   rY   r[   ra   rv   rx   rz   r~   r   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.  r0  r2  r4  r5  r6  r<  rX  rY  r[  r\  r_  r`  ra  rb  rc  rd  re  rf  rg  rh  ri  rj  rk  rl  rm  rq  rs  rt  ru  rv  ry  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'  rI  rQ  r_  ra  rf  rk  ro  rq  rs  rw  rx  ry  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  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/  r2  r3  r5  r6  r:  r;  r@  rA  rD  rE  rI  rJ  rL  rM  rP  rQ  rT  rW  rY  r[  r]  r^  rb  OPNUMSrk  rn  rs  ru  rx  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  r*   r*   r*   r+   <module>   s  (@

				)
		

			

'	

	
				
 !"#$%&'()*+,-./0123
4








D	""	"		.2*