o
    js                    @   s  d dl Z d dlmZ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mZ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)m*Z* d dl+m,Z, d dl-m.Z. d dl m/Z/m0Z0m1Z1 d dl2Z2d dl3Z3zd dl4m5Z5m6Z6m7Z7 W n e8y   e19d e19d Y nw e$dZ:G dd de,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ZbdZcd Zdd*Zed)Zfd+Zgd,Zhd-Zid.Zjd/Zkd0Zld1Zmd2ZneZoeZpG d3d4 d4eZqeZrd d5l)msZs G d6d7 d7eZtG d8d9 d9eZueuZvevZwG d:d; d;eZxG d<d= d=eZyG d>d? d?eZzG d@dA dAeZ{G dBdC dCeZ|G dDdE dEeZ}G dFdG dGeZ~G dHdI dIeZG dJdK dKeZG dLdM dMeZG dNdG dGeZ~G dOdP dPeZG dQdR dRe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 dcd` d`e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ZG dvdw dwe
ZG dxdy dyeZG dzd{ d{eZG d|d} d}eZG d~d deZG dd deZG dd de
ZG dd de	ZG dd de
ZG dd; d;eZxG dd deZG dd deZG dd deZG dd deZG dd de
ZG dd deZG dd de
ZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd de	ZG dd de
ZG dd deZG dd deZG dd deZeuZG dd deZG dd deZG dd deZG dd deZG dd deZG ddĄ deZG ddƄ deZG ddȄ deZG ddʄ deZG dd̄ deZG dd΄ deZG ddЄ deZG dd҄ de	ZG ddԄ de
ZG ddք deZG dd؄ deZG ddڄ deZG dd܄ deZG ddބ deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZd dl'mZ eZG 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Z G 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ZG dVdW dWeZG dXdY dYeZG dZd[ d[eZ	G d\d] d]e
Z
G d^d_ d_eZG d`da daeZG dbdc dceZG ddde deeZG dfdg dge
ZG dhdi dieZdZdZdZd)Zd(Zd ZdZdjZdkZd2ZdlZdmZG dndo doe.ZG dpdq dqe.ZG drds dse.Zdtdu Z dvdw Z!ddxdyZ"ddz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dZ-dddZ.dddZ/dd Z0dddZ1G dd deZ2G dd deZ3G dd deZ4G dd deZ5G dd deZ6G dd deZ7G dd deZ8G dd deZ9G dd deZ:G dd deZ;G dd deZ<G dd deZ=G dd deZ>G dd deZ?G dd deZ@G dd deZAG dd deZBG dd deZCG dd deZDG dd deZEG ddÄ deZFG dĐdń deZGG dƐdǄ deZHG dȐdɄ deZIG dʐd˄ deZJG d̐d̈́ deZKG dΐdτ deZLG dАdф deZMG dҐdӄ deZNG dԐdՄ deZOG d֐dׄ deZPG dؐdل deZQG dڐdۄ deZRG dܐd݄ deZSG dސd߄ deZTG dd deZUG dd deZVG dd deZWG dd deZXG dd deZYG dd deZZG dd deZ[G dd deZ\G dd deZ]G dd deZ^G dd deZ_G dd deZ`G dd deZaG dd deZbG dd deZcG dd de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*d+ d+eZzG 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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Zi d eefdeefde^e_fde`eafdeHeIfdeNeOfd*ebecfd)efegfd-e8e9fd.eefdNe:e;fdOeefdPeLeMfd(edeefdQeheifdReefdkeneofi dSe6e7fdTeXeYfde~efdUevewfdVexeyfdeze{fdmeJeKfdWe4e5fde<e=fdXeVeWfdePeQfdYeReSfde|e}fdZe@eAfde2e3fd[eefdelemfeBeCfe>e?feZe[fejekfeDeEfeTeUferesfepeqfe\e]feteufd\
Zd]d^ Zd_d` Zdadb Zdcdd Zdedf Zdgdh Zdidj Zdkdl Zdmdn Zdodp Zdqdr Zdsdt Zdudv Zdwdx Zdydz Zdd{d|Zdd}d~Zdd ZdS (      N)packunpack)b)NDRCALL	NDRSTRUCTNDRENUMNDRUNION
NDRPOINTERNDRUniConformantArrayNDRUniFixedArrayNDRUniConformantVaryingArray)WSTRLPWSTRDWORDULONGUSHORTPGUIDNTSTATUSNULLLONGUCHARPRPC_SIDGUIDRPC_UNICODE_STRINGSECURITY_INFORMATIONLPULONG	ULONGLONG)system_errors	nt_errors)uuidtup_to_bin)Enum)OLD_LARGE_INTEGER)PLSA_FOREST_TRUST_INFORMATION)DCERPCException)	Structure)ntlmcryptoLOG)DESAESARC4zDWarning: You don't have any crypto installed. You need pycryptodomexz+See https://pypi.org/project/pycryptodomex/)z$12345678-1234-ABCD-EF00-01234567CFFBz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 r2   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/impacket/dcerpc/v5/nrpc.pyr-   4   s   zDCERPCSessionError.__init__c                 C   s|   | j }|tjv rtj| d }tj| d }d| j ||f S |tjv r9tj| d }tj| d }d| j ||f S d| j  S )Nr      z'NRPC SessionError: code: 0x%x - %s - %sz+NRPC SessionError: unknown error code: 0x%x)r0   r   ERROR_MESSAGESr   )r.   keyerror_msg_shorterror_msg_verboser2   r2   r3   __str__7   s   


zDCERPCSessionError.__str__)NNN)__name__
__module____qualname__r-   r9   r2   r2   r2   r3   r+   3       
r+                   "   $   r4                  i   i @     @         i             	   
         i  i    i  c                   @   s   e Zd ZdZdd ZdS )CYPHER_BLOCK))Dataz8s=b""c                 C      dS Nr4   r2   r.   r2   r2   r3   getAlignment      zCYPHER_BLOCK.getAlignmentN)r:   r;   r<   	structurer[   r2   r2   r2   r3   rV      s    rV   )STRINGc                   @      e Zd ZdddZdS )CYPHER_BLOCK_ARRAYr   c                 C   s   t t d S )NrE   lenrV   r.   dataoffsetr2   r2   r3   
getDataLen   s   zCYPHER_BLOCK_ARRAY.getDataLenNr   r:   r;   r<   rf   r2   r2   r2   r3   r`          r`   c                   @      e Zd ZdeffZdS )LM_OWF_PASSWORDrW   N)r:   r;   r<   r`   r]   r2   r2   r2   r3   rk          rk   c                   @   s   e Zd ZdZdddZdS )UCHAR_FIXED_ARRAYr4   r   c                 C   s
   t t S r,   ra   rc   r2   r2   r3   rf      s   
UCHAR_FIXED_ARRAY.getDataLenNrg   )r:   r;   r<   alignrf   r2   r2   r2   r3   rm      s    rm   c                   @   s   e Zd ZdeffZdd ZdS )NETLOGON_CREDENTIALrW   c                 C   rX   rY   r2   rZ   r2   r2   r3   r[      r\   z NETLOGON_CREDENTIAL.getAlignmentN)r:   r;   r<   rm   r]   r[   r2   r2   r2   r3   rp      s    rp   c                   @      e Zd ZdefdeffZdS )NETLOGON_AUTHENTICATOR
Credential	TimestampN)r:   r;   r<   rp   r   r]   r2   r2   r2   r3   rr          rr   c                   @   rj   )PNETLOGON_AUTHENTICATORrW   N)r:   r;   r<   rr   referentr2   r2   r2   r3   rv      rl   rv   c                
   @   sF   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f	Zd
S )DOMAIN_CONTROLLER_INFOWDomainControllerNameDomainControllerAddressDomainControllerAddressType
DomainGuid
DomainNameDnsForestNameFlags
DcSiteNameClientSiteNameN)r:   r;   r<   r   r   r   r]   r2   r2   r2   r3   rx          rx   c                   @   rj   )PDOMAIN_CONTROLLER_INFOWrW   N)r:   r;   r<   rx   rw   r2   r2   r2   r3   r      rl   r   c                   @      e Zd ZeZdS RPC_UNICODE_STRING_ARRAYNr:   r;   r<   r   itemr2   r2   r2   r3   r          r   c                   @   rj   )PRPC_UNICODE_STRING_ARRAYrW   N)r:   r;   r<   r   rw   r2   r2   r2   r3   r      rl   r   c                   @   rq   )NL_SITE_NAME_ARRAY
EntryCount	SiteNamesNr:   r;   r<   r   r   r]   r2   r2   r2   r3   r      ru   r   c                   @   rj   )PNL_SITE_NAME_ARRAYrW   N)r:   r;   r<   r   rw   r2   r2   r2   r3   r      rl   r   c                   @   r   r   r   r2   r2   r2   r3   r      r   c                   @   s"   e Zd ZdefdefdeffZdS )NL_SITE_NAME_EX_ARRAYr   r   SubnetNamesNr   r2   r2   r2   r3   r      
    r   c                   @   rj   )PNL_SITE_NAME_EX_ARRAYrW   N)r:   r;   r<   r   rw   r2   r2   r2   r3   r      rl   r   c                   @      e Zd ZdZdS )IPv4Address))AddressFamily<H=0)Portr   )Address<L=0)Paddingr   N)r:   r;   r<   r]   r2   r2   r2   r3   r      r   r   c                   @   r   )UCHAR_ARRAYcN)r:   r;   r<   r   r2   r2   r2   r3   r     r   r   c                   @   rj   )PUCHAR_ARRAYrW   N)r:   r;   r<   r   rw   r2   r2   r2   r3   r     rl   r   c                   @   rq   )NL_SOCKET_ADDRESS
lpSockaddriSockaddrLengthN)r:   r;   r<   r   r   r]   r2   r2   r2   r3   r     ru   r   c                   @   r   )NL_SOCKET_ADDRESS_ARRAYN)r:   r;   r<   r   r   r2   r2   r2   r3   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fZdS )	NL_DNS_NAME_INFOTypeDnsDomainInfoTypePriorityWeightr   RegisterStatusN)r:   r;   r<   r   r   r   r]   r2   r2   r2   r3   r         r   c                   @   r   )NL_DNS_NAME_INFO_ARRAYN)r:   r;   r<   r   r   r2   r2   r2   r3   r   #  r   r   c                   @   rj   )PNL_DNS_NAME_INFO_ARRAYrW   N)r:   r;   r<   r   rw   r2   r2   r2   r3   r   &  rl   r   c                   @   rq   )r   r   DnsNamesInfoN)r:   r;   r<   r   r   r]   r2   r2   r2   r3   r   +  ru   c                   @   rq   )NETLOGON_LSA_POLICY_INFOLsaPolicySize	LsaPolicyNr:   r;   r<   r   r   r]   r2   r2   r2   r3   r   5  ru   r   c                   @   rj   )PNETLOGON_LSA_POLICY_INFOrW   N)r:   r;   r<   r   rw   r2   r2   r2   r3   r   ;  rl   r   c                   @   sj   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fZdS )NETLOGON_WORKSTATION_INFOr   DnsHostNameSiteNameDummy1Dummy2Dummy3Dummy4	OsVersionOsNameDummyString3DummyString4WorkstationFlags KerberosSupportedEncryptionTypes
DummyLong3
DummyLong4N)r:   r;   r<   r   r   r   r   r]   r2   r2   r2   r3   r   A  "    r   c                   @   rj   )PNETLOGON_WORKSTATION_INFOrW   N)r:   r;   r<   r   rw   r2   r2   r2   r3   r   T  rl   r   c                   @   s   e Zd ZdddZdd ZdS )NL_TRUST_PASSWORD_FIXED_ARRAYr   c                 C   rX   )Ni  r2   rc   r2   r2   r3   rf   [  r\   z(NL_TRUST_PASSWORD_FIXED_ARRAY.getDataLenc                 C   rX   rY   r2   rZ   r2   r2   r3   r[   ^  r\   z*NL_TRUST_PASSWORD_FIXED_ARRAY.getAlignmentNrg   )r:   r;   r<   rf   r[   r2   r2   r2   r3   r   Z  r=   r   c                   @   r_   )WCHAR_ARRAYr   c                 C   rX   )NrL   r2   rc   r2   r2   r3   rf   b  r\   zWCHAR_ARRAY.getDataLenNrg   rh   r2   r2   r2   r3   r   a  ri   r   c                   @   rq   )NL_TRUST_PASSWORDBufferLengthN)r:   r;   r<   r   r   r]   r2   r2   r2   r3   r   e  ru   r   c                   @   rj   )PNL_TRUST_PASSWORDrW   N)r:   r;   r<   r   rw   r2   r2   r2   r3   r   k  rl   r   c                   @   s"   e Zd ZdefdefdeffZdS )NL_PASSWORD_VERSIONReservedFieldPasswordVersionNumberPasswordVersionPresentNr:   r;   r<   r   r]   r2   r2   r2   r3   r   q  r   r   c                   @   (   e Zd ZdeffZdefdefdZdS ) NETLOGON_WORKSTATION_INFORMATIONtagWorkstationInfoLsaPolicyInfor4   rE   N)r:   r;   r<   r   	commonHdrr   r   unionr2   r2   r2   r3   r   y      
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fZdS )NETLOGON_ONE_DOMAIN_INFOr}   DnsDomainNamer~   r|   	DomainSidTrustExtensionDummyString2r   r   
DummyLong1
DummyLong2r   r   N)r:   r;   r<   r   r   r   r   r]   r2   r2   r2   r3   r         r   c                   @   r   )NETLOGON_ONE_DOMAIN_INFO_ARRAYN)r:   r;   r<   r   r   r2   r2   r2   r3   r     r   r   c                   @   rj   )PNETLOGON_ONE_DOMAIN_INFO_ARRAYrW   N)r:   r;   r<   r   rw   r2   r2   r2   r3   r     rl   r   c                   @   sX   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fZdS )NETLOGON_DOMAIN_INFOPrimaryDomainTrustedDomainCountTrustedDomainsr   DnsHostNameInDsr   r   r   r   SupportedEncTypesr   r   N)	r:   r;   r<   r   r   r   r   r   r]   r2   r2   r2   r3   r     s    r   c                   @   rj   )PNETLOGON_DOMAIN_INFOrW   N)r:   r;   r<   r   rw   r2   r2   r2   r3   r     rl   r   c                   @   r   )NETLOGON_DOMAIN_INFORMATIONr   
DomainInfor   r   N)r:   r;   r<   r   r   r   r   r   r2   r2   r2   r3   r     r   r   c                   @      e Zd ZG dd deZdS )NETLOGON_SECURE_CHANNEL_TYPEc                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
d	S )
z&NETLOGON_SECURE_CHANNEL_TYPE.enumItemsr   r4   rE   rF   rG   rH   rI   rP   N)r:   r;   r<   NullSecureChannelMsvApSecureChannelWorkstationSecureChannelTrustedDnsDomainSecureChannelTrustedDomainSecureChannelUasServerSecureChannelServerSecureChannelCdcServerSecureChannelr2   r2   r2   r3   	enumItems  s    r   Nr:   r;   r<   r    r   r2   r2   r2   r3   r         r   c                   @   "   e Zd ZdeffZddefiZdS )NETLOGON_CAPABILITIESr   r4   ServerCapabilitiesNr:   r;   r<   r   r   r   r   r2   r2   r2   r3   r     
    r   c                   @   r_   )rm   r   c                 C   rX   )NrJ   r2   rc   r2   r2   r3   rf     r\   rn   Nrg   rh   r2   r2   r2   r3   rm     ri   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 )NL_OSVERSIONINFO_V1dwOSVersionInfoSizedwMajorVersiondwMinorVersiondwBuildNumberdwPlatformIdszCSDVersionwServicePackMajorwServicePackMinor
wSuiteMaskwProductType	wReservedN)r:   r;   r<   r   rm   r   r   r]   r2   r2   r2   r3   r     s    r   c                   @   rj   )PNL_OSVERSIONINFO_V1rW   N)r:   r;   r<   r   rw   r2   r2   r2   r3   r	    rl   r	  c                   @   rj   )PLPWSTRrW   N)r:   r;   r<   r   rw   r2   r2   r2   r3   r
    rl   r
  c                   @   s"   e Zd ZdefdefdeffZdS )$NL_IN_CHAIN_SET_CLIENT_ATTRIBUTES_V1ClientDnsHostNameOsVersionInfor   N)r:   r;   r<   r
  r	  r]   r2   r2   r2   r3   r    r   r  c                   @   r   )!NL_IN_CHAIN_SET_CLIENT_ATTRIBUTESr   r4   V1N)r:   r;   r<   r   r   r  r   r2   r2   r2   r3   r    r   r  c                   @   "   e Zd ZdefdefdeffZdS )%NL_OUT_CHAIN_SET_CLIENT_ATTRIBUTES_V1HubNameOldDnsHostNamer   N)r:   r;   r<   r
  r   r]   r2   r2   r2   r3   r    r   r  c                   @   r   )"NL_OUT_CHAIN_SET_CLIENT_ATTRIBUTESr   r4   r  N)r:   r;   r<   r   r   r  r   r2   r2   r2   r3   r    r   r  c                   @   r_   )CHAR_FIXED_8_ARRAYr   c                 C   rX   NrO   r2   rc   r2   r2   r3   rf     r\   zCHAR_FIXED_8_ARRAY.getDataLenNrg   rh   r2   r2   r2   r3   r    ri   r  c                   @   rj   )LM_CHALLENGErW   N)r:   r;   r<   r  r]   r2   r2   r2   r3   r    rl   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 )NETLOGON_LOGON_IDENTITY_INFOLogonDomainNameParameterControlReservedUserNameWorkstationN)r:   r;   r<   r   r   r!   r]   r2   r2   r2   r3   r  !      r  c                   @   rj   )PNETLOGON_LOGON_IDENTITY_INFOrW   N)r:   r;   r<   r  rw   r2   r2   r2   r3   r  *  rl   r  c                   @   (   e Zd ZdefdefdefdeffZdS )NETLOGON_GENERIC_INFOIdentityPackageName
DataLength	LogonDataN)r:   r;   r<   r  r   r   r   r]   r2   r2   r2   r3   r!  0      r!  c                   @   rj   )PNETLOGON_GENERIC_INFOrW   N)r:   r;   r<   r!  rw   r2   r2   r2   r3   r'  8  rl   r'  c                   @   "   e Zd ZdefdefdeffZdS )NETLOGON_INTERACTIVE_INFOr"  LmOwfPasswordNtOwfPasswordNr:   r;   r<   r  rk   NT_OWF_PASSWORDr]   r2   r2   r2   r3   r)  >  r   r)  c                   @   rj   )PNETLOGON_INTERACTIVE_INFOrW   N)r:   r;   r<   r)  rw   r2   r2   r2   r3   r.  E  rl   r.  c                   @   r(  )NETLOGON_SERVICE_INFOr"  r*  r+  Nr,  r2   r2   r2   r3   r/  K  r   r/  c                   @   rj   )PNETLOGON_SERVICE_INFOrW   N)r:   r;   r<   r/  rw   r2   r2   r2   r3   r0  R  rl   r0  c                   @   s(   e Zd ZdefdefdefdeffZdS )NETLOGON_NETWORK_INFOr"  LmChallengeNtChallengeResponseLmChallengeResponseN)r:   r;   r<   r  r  r^   r]   r2   r2   r2   r3   r1  X  r&  r1  c                   @   rj   )PNETLOGON_NETWORK_INFOrW   N)r:   r;   r<   r1  rw   r2   r2   r2   r3   r5  `  rl   r5  c                   @   r   )NETLOGON_LOGON_INFO_CLASSc                   @   s(   e Zd ZdZdZdZdZdZdZdZ	dS )	z#NETLOGON_LOGON_INFO_CLASS.enumItemsr4   rE   rF   rG   rH   rI   rP   N)
r:   r;   r<   NetlogonInteractiveInformationNetlogonNetworkInformationNetlogonServiceInformationNetlogonGenericInformation(NetlogonInteractiveTransitiveInformation$NetlogonNetworkTransitiveInformation$NetlogonServiceTransitiveInformationr2   r2   r2   r3   r   g  s    r   Nr   r2   r2   r2   r3   r6  f  r   r6  c                   @   sV   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iZdS )	NETLOGON_LEVELLogonInteractiveLogonInteractiveTransitiveLogonServiceLogonServiceTransitiveLogonNetworkLogonNetworkTransitiveLogonGenericN)r:   r;   r<   r6  r7  r.  r;  r9  r0  r=  r8  r5  r<  r:  r'  r   r2   r2   r2   r3   r>  q  s    






r>  c                   @   rq   )NETLOGON_SID_AND_ATTRIBUTESSid
AttributesN)r:   r;   r<   r   r   r]   r2   r2   r2   r3   rF  }  ru   rF  c                   @   rq   )!NETLOGON_VALIDATION_GENERIC_INFO2r$  ValidationDataNr   r2   r2   r2   r3   rI    ru   rI  c                   @   rj   )"PNETLOGON_VALIDATION_GENERIC_INFO2rW   N)r:   r;   r<   rI  rw   r2   r2   r2   r3   rK    rl   rK  c                   @      e Zd ZdefdeffZdS )GROUP_MEMBERSHIP
RelativeIdrH  Nr   r2   r2   r2   r3   rM    ru   rM  c                   @   r   )GROUP_MEMBERSHIP_ARRAYN)r:   r;   r<   rM  r   r2   r2   r2   r3   rO    r   rO  c                   @   rj   )PGROUP_MEMBERSHIP_ARRAYrW   N)r:   r;   r<   rO  rw   r2   r2   r2   r3   rP    rl   rP  c                   @   r_   )
LONG_ARRAYr   c                 C   rX   )N(   r2   rc   r2   r2   r3   rf     r\   zLONG_ARRAY.getDataLenNrg   rh   r2   r2   r2   r3   rQ    ri   rQ  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defdefdefdefde	fde
ffZdS )NETLOGON_VALIDATION_SAM_INFO	LogonTime
LogoffTimeKickOffTimePasswordLastSetPasswordCanChangePasswordMustChangeEffectiveNameFullNameLogonScriptProfilePathHomeDirectoryHomeDirectoryDrive
LogonCountBadPasswordCountUserIdPrimaryGroupId
GroupCountGroupIds	UserFlagsUserSessionKeyLogonServerr  LogonDomainIdExpansionRoomN)r:   r;   r<   r!   r   r   r   rP  USER_SESSION_KEYr   rQ  r]   r2   r2   r2   r3   rS    s4    rS  c                   @   rj   )PNETLOGON_VALIDATION_SAM_INFOrW   N)r:   r;   r<   rS  rw   r2   r2   r2   r3   rl    rl   rl  c                   @   r   )!NETLOGON_SID_AND_ATTRIBUTES_ARRAYN)r:   r;   r<   rF  r   r2   r2   r2   r3   rm    r   rm  c                   @   rj   )"PNETLOGON_SID_AND_ATTRIBUTES_ARRAYrW   N)r:   r;   r<   rm  rw   r2   r2   r2   r3   rn    rl   rn  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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 )NETLOGON_VALIDATION_SAM_INFO2rT  rU  rV  rW  rX  rY  rZ  r[  r\  r]  r^  r_  r`  ra  rb  rc  rd  re  rf  rg  rh  r  ri  rj  SidCount	ExtraSidsN)r:   r;   r<   r!   r   r   r   rP  rk  r   rQ  rn  r]   r2   r2   r2   r3   ro    s8    ro  c                   @   rj   )PNETLOGON_VALIDATION_SAM_INFO2rW   N)r:   r;   r<   ro  rw   r2   r2   r2   r3   rr    rl   rr  c                   @   sr  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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 ).NETLOGON_VALIDATION_SAM_INFO4rT  rU  rV  rW  rX  rY  rZ  r[  r\  r]  r^  r_  r`  ra  rb  rc  rd  re  rf  rg  rh  r  ri  LMKeyUserAccountControlSubAuthStatusLastSuccessfulILogonLastFailedILogonFailedILogonCount	Reserved4rp  rq  DnsLogonDomainNameUpnExpansionString1ExpansionString2ExpansionString3ExpansionString4ExpansionString5ExpansionString6ExpansionString7ExpansionString8ExpansionString9ExpansionString10N)r:   r;   r<   r!   r   r   r   rP  rk  r   r  rn  r]   r2   r2   r2   r3   rs    s    	
!"#$%&'()*+,-.
rs  c                   @   rj   )PNETLOGON_VALIDATION_SAM_INFO4rW   N)r:   r;   r<   rs  rw   r2   r2   r2   r3   r  &  rl   r  c                   @   r   )NETLOGON_VALIDATION_INFO_CLASSc                   @   s$   e Zd ZdZdZdZdZdZdZdS )z(NETLOGON_VALIDATION_INFO_CLASS.enumItemsr4   rE   rF   rG   rH   rI   N)	r:   r;   r<   NetlogonValidationUasInfoNetlogonValidationSamInfoNetlogonValidationSamInfo2NetlogonValidationGenericInfoNetlogonValidationGenericInfo2NetlogonValidationSamInfo4r2   r2   r2   r3   r   -  s    r   Nr   r2   r2   r2   r3   r  ,  r   r  c                	   @   s8   e Zd Zejdefejdefejde	fej
defiZdS )NETLOGON_VALIDATIONValidationSamValidationSam2ValidationGeneric2ValidationSam4N)r:   r;   r<   r  r  rl  r  rr  r  rK  r  r  r   r2   r2   r2   r3   r  6  s    



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 )NLPR_QUOTA_LIMITSPagedPoolLimitNonPagedPoolLimitMinimumWorkingSetSizeMaximumWorkingSetSizePagefileLimitr  N)r:   r;   r<   r   r!   r]   r2   r2   r2   r3   r  ?  s    r  c                   @   r   )ULONG_ARRAYN)r:   r;   r<   r   r   r2   r2   r2   r3   r  J  r   r  c                   @   rj   )PULONG_ARRAYrW   N)r:   r;   r<   r  rw   r2   r2   r2   r3   r  M  rl   r  c                   @   sv   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fZ
dS )NETLOGON_DELTA_ACCOUNTSPrivilegeEntriesPrivilegeControlPrivilegeAttributesPrivilegeNamesQuotaLimitsSystemAccessFlagsSecurityInformationSecuritySizeSecurityDescriptorDummyString1r   r   r   r   r   r   r   N)r:   r;   r<   r   r  r   r  r   r   r   r]   r2   r2   r2   r3   r  R  s&    r  c                   @   rj   )PNETLOGON_DELTA_ACCOUNTSrW   N)r:   r;   r<   r  rw   r2   r2   r2   r3   r  g  rl   r  c                   @   rj   )NLPR_SID_INFORMATION
SidPointerN)r:   r;   r<   r   r]   r2   r2   r2   r3   r  m  rl   r  c                   @   r   )NLPR_SID_INFORMATION_ARRAYN)r:   r;   r<   r  r   r2   r2   r2   r3   r  s  r   r  c                   @   rj   )PNLPR_SID_INFORMATION_ARRAYrW   N)r:   r;   r<   r  rw   r2   r2   r2   r3   r  v  rl   r  c                   @   rq   )NLPR_SID_ARRAYCountSidsN)r:   r;   r<   r   r  rw   r2   r2   r2   r3   r  {  ru   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 )NETLOGON_DELTA_ALIAS_MEMBERMembersr   r   r   r   N)r:   r;   r<   r  r   r]   r2   r2   r2   r3   r    r  r  c                   @   rj   )PNETLOGON_DELTA_ALIAS_MEMBERrW   N)r:   r;   r<   r  rw   r2   r2   r2   r3   r    rl   r  c                
   @   F   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f	Zd
S )NETLOGON_DELTA_DELETE_GROUPAccountNamer  r   r   r   r   r   r   r   Nr:   r;   r<   r   r   r   r]   r2   r2   r2   r3   r    r   r  c                   @   rj   )PNETLOGON_DELTA_DELETE_GROUPrW   N)r:   r;   r<   r  rw   r2   r2   r2   r3   r    rl   r  c                
   @   r  )NETLOGON_DELTA_DELETE_USERr  r  r   r   r   r   r   r   r   Nr  r2   r2   r2   r3   r    r   r  c                   @   rj   )PNETLOGON_DELTA_DELETE_USERrW   N)r:   r;   r<   r  rw   r2   r2   r2   r3   r    rl   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defdeffZ	dS )NETLOGON_DELTA_DOMAINr}   OemInformationForceLogoffMinPasswordLengthPasswordHistoryLengthMaxPasswordAgeMinPasswordAgeDomainModifiedCountDomainCreationTimer  r  r  DomainLockoutInformationr   r   r   PasswordPropertiesr   r   r   N)
r:   r;   r<   r   r!   r   r   r   r   r]   r2   r2   r2   r3   r    s,    r  c                   @   rj   )PNETLOGON_DELTA_DOMAINrW   N)r:   r;   r<   r  rw   r2   r2   r2   r3   r    rl   r  c                   @   sj   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fZdS )NETLOGON_DELTA_GROUPNamerN  rH  AdminCommentr  r  r  r  r   r   r   r   r   r   r   N)r:   r;   r<   r   r   r   r   r]   r2   r2   r2   r3   r    r   r  c                   @   rj   )PNETLOGON_DELTA_GROUPrW   N)r:   r;   r<   r  rw   r2   r2   r2   r3   r    rl   r  c                   @   L   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f
ZdS )NETLOGON_RENAME_GROUPOldNameNewNamer  r   r   r   r   r   r   r   Nr:   r;   r<   r   r   r]   r2   r2   r2   r3   r        r  c                   @   rj   )PNETLOGON_DELTA_RENAME_GROUPrW   N)r:   r;   r<   r  rw   r2   r2   r2   r3   r    rl   r  )SAMPR_LOGON_HOURSc                   @   r(  )NLPR_USER_PRIVATE_INFOSensitiveDatar$  rW   N)r:   r;   r<   r   r   r   r]   r2   r2   r2   r3   r    r   r  c                   @   sB  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d"efd#efd$efd%efd&efR Zd'S )(NETLOGON_DELTA_USERr  r[  rb  rc  r^  r_  
ScriptPathr  WorkStations	LastLogon
LastLogoff
LogonHoursra  r`  rW  AccountExpiresru  EncryptedNtOwfPasswordEncryptedLmOwfPasswordNtPasswordPresentLmPasswordPresentPasswordExpiredUserComment
ParametersCountryCodeCodePagePrivateDatar  r  r  r]  r   r   r   r   r   r   r   N)r:   r;   r<   r   r   r!   NLPR_LOGON_HOURSr   r   r   r  r   r]   r2   r2   r2   r3   r    s    	
 !"#$%&
r  c                   @   rj   )PNETLOGON_DELTA_USERrW   N)r:   r;   r<   r  rw   r2   r2   r2   r3   r  8  rl   r  c                   @   r  )NETLOGON_RENAME_USERr  r  r  r   r   r   r   r   r   r   Nr  r2   r2   r2   r3   r  >  r  r  c                   @   rj   )PNETLOGON_DELTA_RENAME_USERrW   N)r:   r;   r<   r  rw   r2   r2   r2   r3   r  L  rl   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 )	NETLOGON_DELTA_GROUP_MEMBERr  rH  MemberCountr   r   r   r   N)r:   r;   r<   r  r   r]   r2   r2   r2   r3   r  R  r   r  c                   @   rj   )PNETLOGON_DELTA_GROUP_MEMBERrW   N)r:   r;   r<   r  rw   r2   r2   r2   r3   r  ]  rl   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fZdS )NETLOGON_DELTA_ALIASr  rN  r  r  r  Commentr   r   r   r   r   r   r   N)r:   r;   r<   r   r   r   r   r]   r2   r2   r2   r3   r  c  r   r  c                   @   rj   )PNETLOGON_DELTA_ALIASrW   N)r:   r;   r<   r  rw   r2   r2   r2   r3   r  t  rl   r  c                   @   r  )NETLOGON_RENAME_ALIASr  r  r  r   r   r   r   r   r   r   Nr  r2   r2   r2   r3   r  z  r  r  c                   @   rj   )PNETLOGON_DELTA_RENAME_ALIASrW   N)r:   r;   r<   r  rw   r2   r2   r2   r3   r    rl   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defdefdeffZdS )NETLOGON_DELTA_POLICYMaximumLogSizeAuditRetentionPeriodAuditingModeMaximumAuditEventCountEventAuditingOptionsPrimaryDomainNamePrimaryDomainSidr  
ModifiedIdDatabaseCreationTimer  r  r  r  r   r   r   r   r   r   r   N)r:   r;   r<   r   r!   r   r  r   r   r  r   r   r]   r2   r2   r2   r3   r    s.    r  c                   @   rj   )PNETLOGON_DELTA_POLICYrW   N)r:   r;   r<   r  rw   r2   r2   r2   r3   r    rl   r  c                   @   sd   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fZdS )NETLOGON_DELTA_TRUSTED_DOMAINSr}   NumControllerEntriesControllerNamesr  r  r  r  r   r   r   r   r   r   r   N)	r:   r;   r<   r   r   r   r   r   r]   r2   r2   r2   r3   r    s     r  c                   @   rj   )PNETLOGON_DELTA_TRUSTED_DOMAINSrW   N)r:   r;   r<   r  rw   r2   r2   r2   r3   r    rl   r  c                   @   r   )UCHAR_ARRAY2N)r:   r;   r<   r   r   r2   r2   r2   r3   r    r   r  c                   @   rj   )PUCHAR_ARRAY2rW   N)r:   r;   r<   r  rw   r2   r2   r2   r3   r     rl   r   c                   @   r  )NLPR_CR_CIPHER_VALUEr   MaximumLengthr   N)r:   r;   r<   r   r   r]   r2   r2   r2   r3   r    r   r  c                   @   sj   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fZ	dS )NETLOGON_DELTA_SECRETCurrentValueCurrentValueSetTimeOldValueOldValueSetTimer  r  r  r  r   r   r   r   r   r   r   N)
r:   r;   r<   r  r!   r   r   r   r   r]   r2   r2   r2   r3   r    r   r  c                   @   rj   )PNETLOGON_DELTA_SECRETrW   N)r:   r;   r<   r  rw   r2   r2   r2   r3   r    rl   r  c                   @   rj   )NLPR_MODIFIED_COUNTModifiedCountN)r:   r;   r<   r!   r]   r2   r2   r2   r3   r	    rl   r	  c                   @   rj   )PNLPR_MODIFIED_COUNTrW   N)r:   r;   r<   r	  rw   r2   r2   r2   r3   r    rl   r  c                   @   r   )NETLOGON_DELTA_TYPEc                   @   sd   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S )zNETLOGON_DELTA_TYPE.enumItemsr4   rE   rF   rG   rH   rI   rP   rO   rQ   rR   rS   rT            rN                  r>   N)r:   r;   r<   AddOrChangeDomainAddOrChangeGroupDeleteGroupRenameGroupAddOrChangeUser
DeleteUser
RenameUserChangeGroupMembershipAddOrChangeAliasDeleteAliasRenameAliasChangeAliasMembershipAddOrChangeLsaPolicyAddOrChangeLsaTDomainDeleteLsaTDomainAddOrChangeLsaAccountDeleteLsaAccountAddOrChangeLsaSecretDeleteLsaSecretDeleteGroupByNameDeleteUserByNameSerialNumberSkipr2   r2   r2   r3   r     s.    r   Nr   r2   r2   r2   r3   r    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Z$dS )NETLOGON_DELTA_UNIONDeltaDomain
DeltaGroupDeltaRenameGroup	DeltaUserDeltaRenameUserDeltaGroupMember
DeltaAliasDeltaRenameAliasDeltaAliasMemberDeltaPolicyDeltaTDomainsDeltaAccountsDeltaSecretDeltaDeleteGroupDeltaDeleteUserDeltaSerialNumberSkipN)%r:   r;   r<   r  r  r  r  r  r  r  r  r  r  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   r2   r2   r3   r+    sD    








	







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iZdS )NETLOGON_DELTA_ID_UNIONRidrG  r  N)r:   r;   r<   r  r  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   r2   r2   r3   r<  (  sR    








	













r<  c                   @   r(  )NETLOGON_DELTA_ENUM	DeltaTypeDeltaID
DeltaUnionN)r:   r;   r<   r  r<  r+  r]   r2   r2   r2   r3   r>  B  r   r>  c                   @   r   )NETLOGON_DELTA_ENUM_ARRAY_ARRAYN)r:   r;   r<   r>  r   r2   r2   r2   r3   rB  J  r   rB  c                   @   rj   ) PNETLOGON_DELTA_ENUM_ARRAY_ARRAYrW   N)r:   r;   r<   rB  rw   r2   r2   r2   r3   rC  M  rl   rC  c                   @   rq   )PNETLOGON_DELTA_ENUM_ARRAYCountReturnedDeltasN)r:   r;   r<   r   rC  r]   r2   r2   r2   r3   rD  R  ru   rD  c                   @   r   )
SYNC_STATEc                   @   s0   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
S )zSYNC_STATE.enumItemsr   r4   rE   rF   rG   rH   rI   rP   rO   N)r:   r;   r<   NormalStateDomainState
GroupStateUasBuiltInGroupState	UserStateGroupMemberState
AliasStateAliasMemberStateSamDoneStater2   r2   r2   r3   r   Z  s    r   Nr   r2   r2   r2   r3   rG  Y  r   rG  c                   @   rq   )DOMAIN_NAME_BUFFERDomainNameByteCountDomainNamesNr   r2   r2   r2   r3   rQ  f  ru   rQ  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fZd	S )
DS_DOMAIN_TRUSTSWNetbiosDomainNamer   r   ParentIndex	TrustTypeTrustAttributesr   r|   N)r:   r;   r<   r   r   r   r   r]   r2   r2   r2   r3   rT  m  s    rT  c                   @   r   )DS_DOMAIN_TRUSTSW_ARRAYN)r:   r;   r<   rT  r   r2   r2   r2   r3   rY  z  r   rY  c                   @   rj   )PDS_DOMAIN_TRUSTSW_ARRAYrW   N)r:   r;   r<   rY  rw   r2   r2   r2   r3   rZ  }  rl   rZ  c                   @   rq   )NETLOGON_TRUSTED_DOMAIN_ARRAYDomainCountDomainsN)r:   r;   r<   r   rZ  r]   r2   r2   r2   r3   r[    ru   r[  c                   @   s(   e Zd ZdefdefdefdeffZdS )NL_GENERIC_RPC_DATAUlongEntryCount	UlongDataUnicodeStringEntryCountUnicodeStringDataN)r:   r;   r<   r   r  r   r]   r2   r2   r2   r3   r^    r&  r^  c                   @   rj   )PNL_GENERIC_RPC_DATArW   N)r:   r;   r<   r^  rw   r2   r2   r2   r3   rc    rl   rc  c                   @   s@   e Zd ZdeffZdefdefdefdefdefdefdZdS )!NETLOGON_CONTROL_DATA_INFORMATIONr   TrustedDomainName	DebugFlagr  )rH   rI   rQ   rR   rU   rO   N)r:   r;   r<   r   r   r   r   r2   r2   r2   r3   rd    s    
rd  c                   @   rq   )NETLOGON_INFO_1netlog1_flagsnetlog1_pdc_connection_statusN)r:   r;   r<   r   NET_API_STATUSr]   r2   r2   r2   r3   rg    ru   rg  c                   @   rj   )PNETLOGON_INFO_1rW   N)r:   r;   r<   rg  rw   r2   r2   r2   r3   rk    rl   rk  c                   @   s(   e Zd ZdefdefdefdeffZdS )NETLOGON_INFO_2netlog2_flagsnetlog2_pdc_connection_statusnetlog2_trusted_dc_namenetlog2_tc_connection_statusN)r:   r;   r<   r   rj  r   r]   r2   r2   r2   r3   rl    r&  rl  c                   @   rj   )PNETLOGON_INFO_2rW   N)r:   r;   r<   rl  rw   r2   r2   r2   r3   rq    rl   rq  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 )	NETLOGON_INFO_3netlog3_flagsnetlog3_logon_attemptsnetlog3_reserved1netlog3_reserved2netlog3_reserved3netlog3_reserved4netlog3_reserved5N)r:   r;   r<   r   r]   r2   r2   r2   r3   rr    r   rr  c                   @   rj   )PNETLOGON_INFO_3rW   N)r:   r;   r<   rr  rw   r2   r2   r2   r3   rz    rl   rz  c                   @   rL  )NETLOGON_INFO_4netlog4_trusted_dc_namenetlog4_trusted_domain_nameN)r:   r;   r<   r   r]   r2   r2   r2   r3   r{    ru   r{  c                   @   rj   )PNETLOGON_INFO_4rW   N)r:   r;   r<   r{  rw   r2   r2   r2   r3   r~    rl   r~  c                   @   s4   e Zd ZdeffZdefdefdefdefdZ	dS )"NETLOGON_CONTROL_QUERY_INFORMATIONr   NetlogonInfo1NetlogonInfo2NetlogonInfo3NetlogonInfo4)r4   rE   rF   rG   N)
r:   r;   r<   r   r   rk  rq  rz  r~  r   r2   r2   r2   r3   r    s    
r  c                   @   sp   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fZdS )NETLOGON_VALIDATION_UAS_INFOusrlog1_eff_nameusrlog1_privusrlog1_auth_flagsusrlog1_num_logonsusrlog1_bad_pw_countusrlog1_last_logonusrlog1_last_logoffusrlog1_logoff_timeusrlog1_kickoff_timeusrlog1_password_ageusrlog1_pw_can_changeusrlog1_pw_must_changeusrlog1_computerusrlog1_domainusrlog1_script_pathusrlog1_reserved1N)r:   r;   r<   r   r   r]   r2   r2   r2   r3   r    s$    r  c                   @   rj   )PNETLOGON_VALIDATION_UAS_INFOrW   N)r:   r;   r<   r  rw   r2   r2   r2   r3   r    rl   r  c                   @   rq   )NETLOGON_LOGOFF_UAS_INFODurationr`  N)r:   r;   r<   r   r   r]   r2   r2   r2   r3   r    ru   r  c                   @   s&   e Zd ZddefdeffZdd ZdS )
UAS_INFO_0)ComputerNamez16s=""TimeCreatedSerialNumberc                 C   rX   )NrG   r2   rZ   r2   r2   r3   r[     r\   zUAS_INFO_0.getAlignmentN)r:   r;   r<   r   r]   r[   r2   r2   r2   r3   r    s    r  c                   @   r   )NETLOGON_DUMMY1r   r4   DummyNr   r2   r2   r2   r3   r    r   r  c                   @   r_   )CHAR_FIXED_16_ARRAYr   c                 C   rX   )NrN   r2   rc   r2   r2   r3   rf      r\   zCHAR_FIXED_16_ARRAY.getDataLenNrg   rh   r2   r2   r2   r3   r    ri   r  w   r  z      c                   @      e Zd ZdZdddZdS )NL_AUTH_MESSAGE))MessageTyper   )r   r   )r   :Nr   c                 C   &   t | || |d u rd| d< d S d S )N       r   r$   r-   r.   rd   	alignmentr2   r2   r3   r-   >     zNL_AUTH_MESSAGE.__init__Nr   r:   r;   r<   r]   r-   r2   r2   r2   r3   r  8  s    r  c                   @   r  )NL_AUTH_SIGNATURE)SignatureAlgorithmr   SealAlgorithmr   Padz	<H=0xffffr   r   SequenceNumber8s=""Checksumr  _Confounderz_-Confounder8
Confounderr  Nr   c                 C   r  N r  r  r  r2   r2   r3   r-   N  r  zNL_AUTH_SIGNATURE.__init__r  r  r2   r2   r2   r3   r  C  s    
r  c                   @   r  )NL_AUTH_SHA2_SIGNATURE)	r  r  r  r  r  r  r  r  )r  z24s=""Nr   c                 C   r  r  r  r  r2   r2   r3   r-   _  r  zNL_AUTH_SHA2_SIGNATURE.__init__r  r  r2   r2   r2   r3   r  S  s    r  c           	      C   s\   |d d }t |}|dd }t |}t|tj}t|tj}|| }||S )NrP   r  )r&   transformKeyr(   newMODE_ECBencrypt)		inputDataSkk1k3k2k4Crypt1Crypt2
cipherTextr2   r2   r3   ComputeNetlogonCredentiale  s   



r  c                 C   s   d}t |t j|}|| S )Ns                   r)   r  MODE_CFBr  )r  r  IVr  r2   r2   r3   ComputeNetlogonCredentialAESp  s   
r  c                 C   sP   |d u r
t | }n|}tj|tjd}|| || | }|d d S )Nr6   	digestmodrN   )r%   NTOWFv1hmacr  hashlibsha256updatedigest)sharedSecretclientChallengeserverChallengesharedSecretHashM4SShm
sessionKeyr2   r2   r3   ComputeSessionKeyAESv  s   

r  c                 C   sj   |d u r
t | }n|}td}|d || || | }tj|tjd}|| | S )Nmd5r  r  )r%   r  r  r  r  r  r  r  )r  r  r  r  r  r  finalMD5r  r2   r2   r3   ComputeSessionKeyStrongKey  s   




r  c                 C   s8   | d@ }| d? d@ }|dO }t d|}|t d|7 }|S )N    rB   l        z>L)r   )sequenceNumsequenceLowsequenceHighresr2   r2   r3   deriveSequenceNumber  s   
r  c                 C   sN   t j|tjd}||  d d  || |t| | d d S )Nr  rO   )r  r  r  r  r  getDatabytesr  )authSignaturemessage
confounderr  r  r2   r2   r3   ComputeNetlogonSignatureAES  s
   
r  c                 C   st   t d}|d ||  d d  || |t| | }tj|t jd}|| | d d S )Nr  r  rO   r  )r  r  r  r  r  r  r  r  )r  r  r  r  r  r  r  r2   r2   r3   ComputeNetlogonSignatureMD5  s   



r  c                 C   l   t t }t }||d< td| d d d | }|dkr"|dM }td|}t|| dd   ||d< |S Nrt   z<IrG   r   r  rs   )inttimerr   r   r   r  clientStoredCredentialr  	timestampauthenticator
credentialr2   r2   r3   ComputeNetlogonAuthenticatorAES     
r  c                 C   r  r  )r  r  rr   r   r   r  r  r2   r2   r3   ComputeNetlogonAuthenticator  r   r  c                 C   sT   t j|tjd}|d t j| tjd}|| | }t|}|| S )Nr  r  )r  r  r  r  r  r  r*   r  )r  checkSumr  r  hm2encryptionKeycipherr2   r2   r3   encryptSequenceNumberRC4  s   



r  c                 C   s   t | ||S r,   )r  )r  r  r  r2   r2   r3   decryptSequenceNumberRC4  s   r  c                 C   2   |d d |d d  }t |t j|}|| S r  r  r  r  r  r  Cipherr2   r2   r3   encryptSequenceNumberAES     
r  c                 C   r  r  )r)   r  r  decryptr	  r2   r2   r3   decryptSequenceNumberAES  r  r  Fc                 C   s   |du r/t  }t|d< |dkrt|d< nt|d< t|| |||d< tt||d ||d< |S t }t|d< |dkr?t|d< nt	|d< t
|| |||d< tt||d ||d< d|d< |S )	NFr      r  r  r  s                           r  )r  NL_SIGNATURE_HMAC_MD5NL_SEAL_NOT_ENCRYPTEDNL_SEAL_RC4r  r  r  r  NL_SIGNATURE_HMAC_SHA256NL_SEAL_AES128r  r  )rd   r  r  r6   aes	signaturer2   r2   r3   SIGN  s$   

r  c                 C   s  t | ||||}t|}t|}tt|D ]
}|| dA ||< qt|}|du retj|tj	d}|
d tj| tj	d}	|	
| |	 }
t|
}||}t|
}|| }||d< ||fS || }t|tj|}||}|| }||d< ||fS )N   Fr  r  r  )r  r  	bytearrayrangerb   r  r  r  r  r  r  r  r*   r  r)   r  )rd   r  r  r6   r  r  XorKeyir  r  r  r  cfounder	encryptedr  r2   r2   r3   SEAL  s0   







r  c                 C   s  t |}t|}tt|D ]
}|| dA ||< qt|}|du ret|d |d |}tj|tj	d}|
d tj| tj	d}|
| | }	t|	}
|
|d }t|	}
|
| }||fS t|d |d |}|| }t|tj|}
|
|d }|
| }||fS )Nr  Fr  r  r  r  r  )r  r  r  rb   r  r  r  r  r  r  r  r  r*   r  r  r)   r  r  )rd   	auth_datar6   r  r  r  r  r  r  r  r  r  plainr  r2   r2   r3   UNSEAL+  s.   





r"  c                 C   sv   | d u rt dd}t }| d}|D ]}|d}t||kr%t d|t| || q|d t|S )Nzdomain_name cannot be None?   .zutf-8z&Label exceeded max length of 63 bytes.r   )
ValueErrorr  splitencoderb   appendextendr  )domain_nameMAX_LABEL_LENGTHbuflabelslabellabel_bytesr2   r2   r3   CompressedUtf8StringI  s   


r0  r  c                 C   s&  t  }t|d< d|d< |dkrUd|v r3ttB |d< | dkr*t| d t| |d< n>dt| |d< n5ttB |d< | dkrLt|d t|  d |d< nt|d	 |d< n| dkrdd
t|  d |d< nd|d< |d  tO  < | dkr|d  tdt	| t|  d 7  < |S |d  d7  < |S )Nr  r   r   r  r$      r   s   MYHOST s    MYHOST s
   WORKGROUP s   WORKGROUP MYHOST z<Bs   MYHOST )
r  NL_AUTH_MESSAGE_REQUESTNL_AUTH_MESSAGE_NETBIOS_HOSTNL_AUTH_MESSAGE_DNS_DOMAINr   r0  NL_AUTH_MESSAGE_NETBIOS_DOMAIN!NL_AUTH_MESSAGE_NETBIOS_HOST_UTF8r   rb   )workstationdomainsigningRequiredauthr2   r2   r3   getSSPType1\  s,   &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 )
DsrGetDcNameEx2rC   r  r  AllowableAccountControlBitsr}   r|   r   r   N)	r:   r;   r<   opnumPLOGONSRV_HANDLEr   r   r   r]   r2   r2   r2   r3   r<        r<  c                   @   rq   )DsrGetDcNameEx2ResponseDomainControllerInfo	ErrorCodeNr:   r;   r<   r   rj  r]   r2   r2   r2   r3   rA    ru   rA  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 )DsrGetDcNameEx   r  r}   r|   r   r   N	r:   r;   r<   r>  r?  r   r   r   r]   r2   r2   r2   r3   rF        rF  c                   @   rq   )DsrGetDcNameExResponserB  rC  NrD  r2   r2   r2   r3   rJ    ru   rJ  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 )DsrGetDcNamer  r  r}   r|   SiteGuidr   NrH  r2   r2   r2   r3   rL    rI  rL  c                   @   rq   )DsrGetDcNameResponserB  rC  NrD  r2   r2   r2   r3   rN    ru   rN  c                   @       e Zd ZdZdefdeffZdS )NetrGetDCNamerS   
ServerNamer}   N)r:   r;   r<   r>  LOGONSRV_HANDLEr   r]   r2   r2   r2   r3   rP    
    rP  c                   @   rq   )NetrGetDCNameResponser   rC  Nr:   r;   r<   r   rj  r]   r2   r2   r2   r3   rT    ru   rT  c                   @   rO  )NetrGetAnyDCNamer  rQ  r}   Nr:   r;   r<   r>  r?  r   r]   r2   r2   r2   r3   rV    rS  rV  c                   @   rq   )NetrGetAnyDCNameResponser   rC  NrU  r2   r2   r2   r3   rX    ru   rX  c                   @      e Zd ZdZdeffZdS )DsrGetSiteNamer@   r  Nr:   r;   r<   r>  r?  r]   r2   r2   r2   r3   rZ        rZ  c                   @   rq   )DsrGetSiteNameResponser   rC  NrU  r2   r2   r2   r3   r]    ru   r]  c                   @   rY  )DsrGetDcSiteCoverageW&   rQ  Nr[  r2   r2   r2   r3   r^    r\  r^  c                   @   rq   )DsrGetDcSiteCoverageWResponser   rC  Nr:   r;   r<   r   rj  r]   r2   r2   r2   r3   r`    ru   r`  c                   @   &   e Zd ZdZdefdefdeffZdS )DsrAddressToSiteNamesW!   r  r   SocketAddressesNr:   r;   r<   r>  r?  r   r   r]   r2   r2   r2   r3   rc        rc  c                   @   rq   )DsrAddressToSiteNamesWResponser   rC  Nra  r2   r2   r2   r3   rh    ru   rh  c                   @   rb  )DsrAddressToSiteNamesExW%   r  r   re  Nrf  r2   r2   r2   r3   ri    rg  ri  c                   @   rq   ) DsrAddressToSiteNamesExWResponser   rC  N)r:   r;   r<   r   rj  r]   r2   r2   r2   r3   rk    ru   rk  c                   @   rK  )DsrDeregisterDnsHostRecords)   rQ  r   r|   DsaGuidr   N)	r:   r;   r<   r>  r?  r   r   r   r]   r2   r2   r2   r3   rl  
  rI  rl  c                   @   rj   )#DsrDeregisterDnsHostRecordsResponserC  N)r:   r;   r<   rj  r]   r2   r2   r2   r3   ro    rl   ro  c                   @   s8   e Zd 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 )	!DSRUpdateReadOnlyServerDnsRecords0   rQ  r  Authenticatorr   DnsTtlDnsNamesN)r:   r;   r<   r>  r?  r   rr   r   r   r   r]   r2   r2   r2   r3   rp        rp  c                   @   r(  ))DSRUpdateReadOnlyServerDnsRecordsResponseReturnAuthenticatorrt  rC  N)r:   r;   r<   rr   r   r   r]   r2   r2   r2   r3   rv  %  r   rv  c                   @   rb  )NetrServerReqChallengerG   PrimaryNamer  ClientChallengeN)r:   r;   r<   r>  r?  r   rp   r]   r2   r2   r2   r3   rx  -  rg  rx  c                   @   rq   )NetrServerReqChallengeResponseServerChallengerC  Nr:   r;   r<   rp   r   r]   r2   r2   r2   r3   r{  5  ru   r{  c                   @   8   e Zd 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 )	NetrServerAuthenticate3r  ry  r  SecureChannelTyper  ClientCredentialNegotiateFlagsN
r:   r;   r<   r>  r?  r   r   rp   r   r]   r2   r2   r2   r3   r  <  ru  r  c                   @   (   e Zd ZdefdefdefdeffZdS )NetrServerAuthenticate3ResponseServerCredentialr  
AccountRidrC  Nr:   r;   r<   rp   r   r   r]   r2   r2   r2   r3   r  G  r&  r  c                   @   r~  )	NetrServerAuthenticate2r  ry  r  r  r  r  r  Nr  r2   r2   r2   r3   r  P  ru  r  c                   @   r(  )NetrServerAuthenticate2Responser  r  rC  Nr  r2   r2   r2   r3   r  [  r   r  c                   @   rE  )NetrServerAuthenticaterH   ry  r  r  r  r  N)	r:   r;   r<   r>  r?  r   r   rp   r]   r2   r2   r2   r3   r  c  rI  r  c                   @   rq   )NetrServerAuthenticateResponser  rC  Nr}  r2   r2   r2   r3   r  m  ru   r  c                   @   r~  )	NetrServerPasswordSet2rA   ry  r  r  r  rr  ClearNewPasswordN)
r:   r;   r<   r>  r?  r   r   rr   r   r]   r2   r2   r2   r3   r  t  s    r  c                   @   rq   )NetrServerPasswordSet2Responserw  rC  Nr:   r;   r<   rr   r   r]   r2   r2   r2   r3   r    ru   r  c                   @   rE  )NetrServerPasswordGet   ry  r  AccountTyper  rr  N	r:   r;   r<   r>  r?  r   r   rr   r]   r2   r2   r2   r3   r    rI  r  c                   @   r(  )NetrServerPasswordGetResponserw  r  rC  Nr:   r;   r<   rr   ENCRYPTED_NT_OWF_PASSWORDr   r]   r2   r2   r2   r3   r    r   r  c                   @   rE  )NetrServerTrustPasswordsGet*   TrustedDcNamer  r  r  rr  Nr  r2   r2   r2   r3   r    rI  r  c                   @   r  )#NetrServerTrustPasswordsGetResponserw  EncryptedNewOwfPasswordEncryptedOldOwfPasswordrC  Nr  r2   r2   r2   r3   r    r&  r  c                   @   8   e Zd 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 )	NetrLogonGetDomainInfo   rQ  r  rr  rw  LevelWkstaBufferN)
r:   r;   r<   r>  rR  r   rr   r   r   r]   r2   r2   r2   r3   r    ru  r  c                   @   r(  )NetrLogonGetDomainInfoResponserw  	DomBufferrC  N)r:   r;   r<   rr   r   r   r]   r2   r2   r2   r3   r    r   r  c                   @   rK  )NetrLogonGetCapabilitiesr  rQ  r  rr  rw  
QueryLevelN)	r:   r;   r<   r>  rR  r   rr   r   r]   r2   r2   r2   r3   r    rI  r  c                   @   r(  ) NetrLogonGetCapabilitiesResponserw  r   rC  N)r:   r;   r<   rr   r   r   r]   r2   r2   r2   r3   r    r   r  c                   @   s8   e Zd 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 )	NetrLogonSamLogonEx'   rh  r  
LogonLevelLogonInformationValidationLevel
ExtraFlagsN)
r:   r;   r<   r>  r   r6  r>  r  r   r]   r2   r2   r2   r3   r    ru  r  c                   @   r   )NetrLogonSamLogonExResponseValidationInformationAuthoritativer  rC  N)r:   r;   r<   r  r   r   r   r]   r2   r2   r2   r3   r    r&  r  c                	   @   sD   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fZ
d
S )NetrLogonSamLogonWithFlags-   rh  r  rr  rw  r  r  r  r  N)r:   r;   r<   r>  r   rv   r6  r>  r  r   r]   r2   r2   r2   r3   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 )"NetrLogonSamLogonWithFlagsResponserw  r  r  r  rC  N)	r:   r;   r<   rv   r  r   r   r   r]   r2   r2   r2   r3   r    r  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 )
NetrLogonSamLogonrE   rh  r  rr  rw  r  r  r  N)
r:   r;   r<   r>  r   rv   r6  r>  r  r]   r2   r2   r2   r3   r   	  r@  r  c                   @   r   )NetrLogonSamLogonResponserw  r  r  rC  N)r:   r;   r<   rv   r  r   r   r]   r2   r2   r2   r3   r  	  r&  r  c                   @   s8   e Zd 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 )	NetrLogonSamLogoffrF   rh  r  rr  rw  r  r  N)	r:   r;   r<   r>  r   rv   r6  r>  r]   r2   r2   r2   r3   r  	  ru  r  c                   @   rq   )NetrLogonSamLogoffResponserw  rC  N)r:   r;   r<   rv   r   r]   r2   r2   r2   r3   r   	  ru   r  c                   @   >   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 )
NetrDatabaseDeltasrP   ry  r  rr  rw  
DatabaseIDr  PreferredMaximumLengthN)
r:   r;   r<   r>  rR  r   rr   r   r	  r]   r2   r2   r2   r3   r  '	  r@  r  c                   @   r   )NetrDatabaseDeltasResponserw  r  
DeltaArrayrC  N)r:   r;   r<   rr   r	  rD  r   r]   r2   r2   r2   r3   r  3	  r&  r  c                	   @   sD   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fZ
d
S )NetrDatabaseSync2rN   ry  r  rr  rw  r  RestartStateSyncContextr  N)r:   r;   r<   r>  rR  r   rr   r   rG  r   r]   r2   r2   r2   r3   r  <	  r  r  c                   @   r   )NetrDatabaseSync2Responserw  r  r  rC  Nr:   r;   r<   rr   r   rD  r   r]   r2   r2   r2   r3   r  I	  r&  r  c                   @   r  )
NetrDatabaseSyncrO   ry  r  rr  rw  r  r  r  N)
r:   r;   r<   r>  rR  r   rr   r   r   r]   r2   r2   r2   r3   r  R	  r@  r  c                   @   r   )NetrDatabaseSyncResponserw  r  r  rC  Nr  r2   r2   r2   r3   r  ^	  r&  r  c                   @   r  )	NetrDatabaseRedor  ry  r  rr  rw  ChangeLogEntryChangeLogEntrySizeN)
r:   r;   r<   r>  rR  r   rr   r   r   r]   r2   r2   r2   r3   r  g	  ru  r  c                   @   r(  )NetrDatabaseRedoResponserw  r  rC  N)r:   r;   r<   rr   rD  r   r]   r2   r2   r2   r3   r  r	  r   r  c                   @   rO  )DsrEnumerateDomainTrustsrR  rQ  r   N)r:   r;   r<   r>  r?  r   r]   r2   r2   r2   r3   r  z	  rS  r  c                   @   rq   ) DsrEnumerateDomainTrustsResponser]  rC  Nr:   r;   r<   r[  r   r]   r2   r2   r2   r3   r  	  ru   r  c                   @   rY  )NetrEnumerateTrustedDomainsExrD   rQ  Nr[  r2   r2   r2   r3   r  	  r\  r  c                   @   rq   )%NetrEnumerateTrustedDomainsExResponser]  rC  Nr  r2   r2   r2   r3   r  	  ru   r  c                   @   rY  )NetrEnumerateTrustedDomainsr  rQ  Nr[  r2   r2   r2   r3   r  	  r\  r  c                   @   rq   )#NetrEnumerateTrustedDomainsResponseDomainNameBufferrC  N)r:   r;   r<   rQ  r   r]   r2   r2   r2   r3   r  	  ru   r  c                   @   rK  )NetrGetForestTrustInformation,   rQ  r  rr  rw  r   N)	r:   r;   r<   r>  r?  r   rr   r   r]   r2   r2   r2   r3   r  	  rI  r  c                   @   r(  )%NetrGetForestTrustInformationResponserw  ForestTrustInforC  N)r:   r;   r<   rr   r"   r   r]   r2   r2   r2   r3   r  	  r   r  c                   @   rb  )DsrGetForestTrustInformation+   rQ  re  r   N)r:   r;   r<   r>  r?  r   r   r]   r2   r2   r2   r3   r  	  rg  r  c                   @   rq   )$DsrGetForestTrustInformationResponser  rC  N)r:   r;   r<   r"   r   r]   r2   r2   r2   r3   r  	  ru   r  c                   @   rE  )NetrServerGetTrustInfo.   r  r  r  r  rr  Nr  r2   r2   r2   r3   r  	  rI  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 )NetrServerGetTrustInfoResponserw  r  r  	TrustInforC  N)r:   r;   r<   rr   r  rc  r   r]   r2   r2   r2   r3   r  	  r  r  c                   @   rO  )NetrLogonGetTrustRid   rQ  r}   NrW  r2   r2   r2   r3   r  	  rS  r  c                   @   rq   )NetrLogonGetTrustRidResponser=  rC  N)r:   r;   r<   r   r   r]   r2   r2   r2   r3   r  	  ru   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 )NetrLogonComputeServerDigest   rQ  r=  MessageMessageSizeN)r:   r;   r<   r>  r?  r   r   r]   r2   r2   r2   r3   r  	      r  c                   @   r  )$NetrLogonComputeServerDigestResponseNewMessageDigestOldMessageDigestrC  Nr:   r;   r<   r  r   r]   r2   r2   r2   r3   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 )NetrLogonComputeClientDigestr?   rQ  r}   r  r  N)	r:   r;   r<   r>  r?  r   r   r   r]   r2   r2   r2   r3   r  	  r  r  c                   @   r  )$NetrLogonComputeClientDigestResponser  r  rC  Nr  r2   r2   r2   r3   r  	  r   r  c                   @   s2   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 )NetrLogonSendToSamrB   ry  r  rr  OpaqueBufferOpaqueBufferSizeN)
r:   r;   r<   r>  r?  r   rr   r   r   r]   r2   r2   r2   r3   r  
  rI  r  c                   @   rq   )NetrLogonSendToSamResponserw  rC  Nr  r2   r2   r2   r3   r  
  ru   r  c                   @   &   e Zd ZdZdefdefdeffZdS )NetrLogonSetServiceBitsr>   rQ  ServiceBitsOfInterestServiceBitsN)r:   r;   r<   r>  r?  r   r]   r2   r2   r2   r3   r  
  rg  r  c                   @   rj   )NetrLogonSetServiceBitsResponserC  N)r:   r;   r<   r   r]   r2   r2   r2   r3   r   
  rl   r  c                   @   rY  )#NetrLogonGetTimeServiceParentDomain#   rQ  Nr[  r2   r2   r2   r3   r  &
  r\  r  c                   @   r(  )+NetrLogonGetTimeServiceParentDomainResponser}   PdcSameSiterC  N)r:   r;   r<   r   r   rj  r]   r2   r2   r2   r3   r  ,
  r   r  c                   @   ,   e Zd ZdZdefdefdefdeffZdS )NetrLogonControl2Exr  rQ  FunctionCoder  rW   Nr:   r;   r<   r>  r?  r   rd  r]   r2   r2   r2   r3   r  4
  r  r  c                   @   rq   )NetrLogonControl2ExResponser   rC  Nr:   r;   r<   r  rj  r]   r2   r2   r2   r3   r  =
  ru   r  c                   @   r  )NetrLogonControl2r  rQ  r  r  rW   Nr  r2   r2   r2   r3   r  D
  r  r  c                   @   rq   )NetrLogonControl2Responser   rC  Nr  r2   r2   r2   r3   r  M
  ru   r  c                   @   r  )NetrLogonControlrT   rQ  r  r  rW   Nr  r2   r2   r2   r3   r   T
  r  r   c                   @   rq   )NetrLogonControlResponser   rC  N)r:   r;   r<   rd  rj  r]   r2   r2   r2   r3   r  ]
  ru   r  c                   @   r  )NetrLogonUasLogonr   rQ  r  r  Nr:   r;   r<   r>  r?  r   r]   r2   r2   r2   r3   r  d
  rg  r  c                   @   rq   )NetrLogonUasLogonResponser  rC  N)r:   r;   r<   r  rj  r]   r2   r2   r2   r3   r  l
  ru   r  c                   @   r  )NetrLogonUasLogoffr4   rQ  r  r  Nr  r2   r2   r2   r3   r  s
  rg  r  c                   @   rq   )NetrLogonUasLogoffResponseLogoffInformationrC  N)r:   r;   r<   r  rj  r]   r2   r2   r2   r3   r  {
  ru   r  r  r  r  r  r  r  r  r  r  rG  r  r  rd  r  )
rj  r_  r  rR  rm  r  r  r  r  r  c                 C   s(   | t kr| S | dd  dkr| d S | S )N )r   )stringr2   r2   r3   checkNullString
  s
   r  c                 C   s0   t  }t||d< t||d< ||d< | |S )Nry  r  rz  )rx  r  request)dceprimaryNamecomputerNamer  r  r2   r2   r3   hNetrServerReqChallenge
  s
   
r  c                 C   L   t  }t||d< t||d< ||d< ||d< t||d< ||d< | |S Nry  r  r  r  r  r  )r  r  r  r  r  accountNamesecureChannelTyper  clientCredentialnegotiateFlagsr  r2   r2   r3   hNetrServerAuthenticate3
     
r  c           	      C   sX   t  }t||d< t||d< ||d< t||d< ||d< t||d< ||d< | |S )Nr  r  r=  r}   r|   r   r   )r<  r  r  )	r  r  r  allowableAccountControlBits
domainName
domainGuidsiteNameflagsr  r2   r2   r3   hDsrGetDcNameEx2
  s   
r  c                 C   @   t  }t||d< t||d< ||d< ||d< ||d< | |S )Nr  r}   r|   r   r   )rF  r  r  )r  r  r  r  r  r  r  r2   r2   r3   hDsrGetDcNameEx
     
r!  c                 C   r   )Nr  r}   r|   rM  r   )rL  r  r  )r  r  r  r  siteGuidr  r  r2   r2   r3   hDsrGetDcName
  r"  r$  c                 C   (   t  }t||d< t||d< | |S NrQ  r}   )rV  r  r  r  
serverNamer  r  r2   r2   r3   hNetrGetAnyDCName
     
r)  c                 C   r%  r&  )rP  r  r  r'  r2   r2   r3   hNetrGetDCName
  r*  r+  c                 C      t  }t||d< | |S )Nr  )rZ  r  r  )r  r  r  r2   r2   r3   hDsrGetSiteName
     
r-  c                 C   r,  )NrQ  )r^  r  r  )r  r(  r  r2   r2   r3   hDsrGetDcSiteCoverageW  r.  r/  c                 C   r  r  )r  r  r  r  r2   r2   r3   hNetrServerAuthenticate2  r  r0  c                 C   sD   t  }t||d< t||d< ||d< ||d< t||d< | |S )Nry  r  r  r  r  )r  r  r  )r  r  r  r  r  r  r  r2   r2   r3   hNetrServerAuthenticate  s   
r1  c                 C   D   t  }t||d< t||d< ||d< t||d< ||d< | |S )Nry  r  r  r  rr  )r  r  r  )r  r  r  accountTyper  r  r  r2   r2   r3   hNetrServerPasswordGet     
r4  c                 C   r2  Nr  r  r  r  rr  )r  r  r  r  trustedDcNamer  r  r  r  r  r2   r2   r3   hNetrServerTrustPasswordsGet$  r5  r9  c                 C   sL   t  }t||d< t||d< ||d< t||d< ||d< ||d< | |S )Nry  r  r  r  rr  r  )r  r  r  )r  r  r  r  r  r  clearNewPasswordBlobr  r2   r2   r3   hNetrServerPasswordSet2-  s   
r;  c                 C   s  t  }t||d< t||d< ||d< |dkr$d|d d< d|d d< n||d< d	|d
< |d	krod	|d d< t|d d d< t|d d d< d|d d d< t|d d d< t|d d d< t|d d d< t|d d d< nd|d d< t|d d d< | |S )NrQ  r  rr  r              rw  rs   rt   r4   r  r  r   r   r   r   r  r   r   r   r   r   rE   r   r   )r  r  r   r  )r  r(  r  r  returnAuthenticatorlevelr  r2   r2   r3   hNetrLogonGetDomainInfo7  s*   
r?  c                 C   sb   t  }t||d< t||d< ||d< |dkr$d|d d< d|d d< n||d< ||d	< | |S )
NrQ  r  rr  r   r<  rw  rs   rt   r  )r  r  r  )r  r(  r  r  r=  
queryLevelr  r2   r2   r3   hNetrLogonGetCapabilitiesQ  s   
rA  c                 C   r2  r6  )r  r  r  r7  r2   r2   r3   hNetrServerGetTrustInfo^  r5  rB  r,   )F)r  r  F)r   r4   (  r  structr   r   sixr   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   r   r   impacketr   r   impacket.uuidr   impacket.dcerpc.v5.enumr    impacket.dcerpc.v5.samrr!   impacket.dcerpc.v5.lsadr"   impacket.dcerpc.v5.rpcrtr#   impacket.structurer$   r%   r&   r'   r  r  Cryptodome.Cipherr(   r)   r*   ImportErrorcriticalMSRPC_UUID_NRPCr+   NlDnsLdapAtSiteNlDnsGcAtSiteNlDnsDsaCnameNlDnsKdcAtSiteNlDnsDcAtSiteNlDnsRfc1510KdcAtSiteNlDnsGenericGcAtSiteNlDnsDomainNameNlDnsDomainNameAliasNlDnsForestNameNlDnsForestNameAliasNlDnsNdncDomainNameNlDnsRecordNameVER_SUITE_BACKOFFICEVER_SUITE_BLADEVER_SUITE_COMPUTE_SERVERVER_SUITE_DATACENTERVER_SUITE_ENTERPRISEVER_SUITE_EMBEDDEDNTVER_SUITE_PERSONALVER_SUITE_SINGLEUSERTSVER_SUITE_SMALLBUSINESS"VER_SUITE_SMALLBUSINESS_RESTRICTEDVER_SUITE_STORAGE_SERVERVER_SUITE_TERMINALVER_NT_DOMAIN_CONTROLLERVER_NT_SERVERVER_NT_WORKSTATIONNETLOGON_UAS_LOGON_ACCESSNETLOGON_UAS_LOGOFF_ACCESSNETLOGON_CONTROL_ACCESSNETLOGON_QUERY_ACCESSNETLOGON_SERVICE_ACCESSNETLOGON_FTINFO_ACCESSNETLOGON_WKSTA_RPC_ACCESSNETLOGON_CONTROL_QUERYNETLOGON_CONTROL_REPLICATENETLOGON_CONTROL_SYNCHRONIZENETLOGON_CONTROL_PDC_REPLICATENETLOGON_CONTROL_REDISCOVERNETLOGON_CONTROL_TC_QUERY!NETLOGON_CONTROL_TRANSPORT_NOTIFYNETLOGON_CONTROL_FIND_USER NETLOGON_CONTROL_CHANGE_PASSWORDNETLOGON_CONTROL_TC_VERIFYNETLOGON_CONTROL_FORCE_DNS_REGNETLOGON_CONTROL_QUERY_DNS_REG"NETLOGON_CONTROL_BACKUP_CHANGE_LOGNETLOGON_CONTROL_TRUNCATE_LOGNETLOGON_CONTROL_SET_DBFLAGNETLOGON_CONTROL_BREAKPOINTrR  r?  rV   rj  r^   r`   rk   r-  r  rm   rp   rr   rv   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/  r0  r1  r5  r6  r>  rF  rI  rK  rk  rM  rO  rP  rQ  rS  rl  rm  rn  ro  rr  rs  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  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  rC  rD  rG  rQ  rT  rY  rZ  r[  r^  rc  rd  rg  rk  rl  rq  rr  rz  r{  r~  r  r  r  r  r  r  r  r5  r3  r4  NL_AUTH_MESSAGE_DNS_HOSTr6  r2  NL_AUTH_MESSAGE_RESPONSEr  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<  rA  rF  rJ  rL  rN  rP  rT  rV  rX  rZ  r]  r^  r`  rc  rh  ri  rk  rl  ro  rp  rv  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  r  r  r   r  r  r  r  r  OPNUMSr  r  r  r  r!  r$  r)  r+  r-  r/  r0  r1  r4  r9  r;  r?  rA  rB  r2   r2   r2   r3   <module>   s  (H




	2
		*

			#%


	
	

	

	
				


		
					 !"#$%
&








7	
		
			
