o
    j
?                  	   @   s  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 d dlmZmZ d dlmZmZmZmZmZ d dlmZ d dlmZ d dlmZ ed	ZG d
d deZdZG dd deZG dd deZ G dd deZ!G dd deZ"G dd deZ#G dd deZ$G dd deZ%G dd deZ&G dd deZ'G dd  d eZ(G d!d" d"eZ)G d#d$ d$eZ*G d%d& d&eZ+G d'd( d(eZ,G d)d* d*eZ-G d+d, d,eZ.G d-d. d.eZ/G d/d0 d0eZ0G d1d2 d2eZ1G d3d4 d4eZ2G d5d6 d6eZ3G d7d8 d8eZ4G d9d: d:eZ5G d;d< d<eZ6G d=d> d>eZ7G d?d@ d@eZ8G dAdB dBeZ9G dCdD dDeZ:G dEdF dFeZ;G dGdH dHeZ<G dIdJ dJeZ=G dKdL dLeZ>G dMdN dNeZ?G dOdP dPeZ@G dQdR dReZAG dSdT dTeZBG dUdV dVeZCG dWdX dXeZDG dYdZ dZeZEG d[d\ d\eZFG d]d^ d^eZGG d_d` d`eZHG dadb dbeZIG dcdd ddeZJeCeDfeIeJfe;e<feGeHfeAeBfe?e@feEeFfe=e>fdeZKe
e
fdfdgZLe%jMd dhfdidjZNe%jMd dhfdkdlZOe%jMd dhfdmdnZPe%jMfdodpZQe%jMd dhfdqdrZRe%jMfdsdtZSduS )v    )	nt_errors)ULONGLONGPRPC_SIDRPC_UNICODE_STRINGLPWSTRPRPC_UNICODE_STRINGNTSTATUSNULL)Enum)LSAPR_HANDLEPLSAPR_TRUST_INFORMATION_ARRAY)NDRCALL	NDRSTRUCTNDRENUM
NDRPOINTERNDRUniConformantArray)DCERPCException)SID_NAME_USE)uuidtup_to_bin)z$12345778-1234-ABCD-EF00-0123456789ABz0.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/lsat.pyr   '   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'LSAT SessionError: code: 0x%x - %s - %sz+LSAT SessionError: unknown error code: 0x%x)r   r   ERROR_MESSAGES)r   keyerror_msg_shorterror_msg_verboser   r   r   __str__*   s   

zDCERPCSessionError.__str__)NNN)__name__
__module____qualname__r   r#   r   r   r   r   r   &   s    
r   i   c                   @   s"   e Zd ZdefdefdeffZdS )LSAPR_REFERENCED_DOMAIN_LISTEntriesDomains
MaxEntriesN)r$   r%   r&   r   r   	structurer   r   r   r   r'   =   
    r'   c                   @      e Zd ZdeffZdS )PLSAPR_REFERENCED_DOMAIN_LISTDataN)r$   r%   r&   r'   referentr   r   r   r   r.   D       r.   c                   @   "   e Zd ZdefdefdeffZdS )LSA_TRANSLATED_SIDUse
RelativeIdDomainIndexNr$   r%   r&   r   r   r   r+   r   r   r   r   r3   J   r,   r3   c                   @      e Zd ZeZdS )LSA_TRANSLATED_SID_ARRAYN)r$   r%   r&   r3   itemr   r   r   r   r9   R       r9   c                   @   r-   )PLSA_TRANSLATED_SID_ARRAYr/   N)r$   r%   r&   r9   r0   r   r   r   r   r<   U   r1   r<   c                   @      e Zd ZdefdeffZdS )LSAPR_TRANSLATED_SIDSr(   SidsN)r$   r%   r&   r   r<   r+   r   r   r   r   r>   Z       r>   c                   @   s   e Zd ZG dd deZdS )LSAP_LOOKUP_LEVELc                   @   s(   e Zd ZdZdZdZdZdZdZdZ	dS )	zLSAP_LOOKUP_LEVEL.enumItemsr                     N)
r$   r%   r&   LsapLookupWkstaLsapLookupPDCLsapLookupTDLLsapLookupGCLsapLookupXForestReferralLsapLookupXForestResolveLsapLookupRODCReferralToFullDCr   r   r   r   	enumItemsb   s    rO   N)r$   r%   r&   r   rO   r   r   r   r   rA   a   s    rA   c                   @   r-   )LSAPR_SID_INFORMATIONSidN)r$   r%   r&   r   r+   r   r   r   r   rP   l   r1   rP   c                   @   r8   )LSAPR_SID_INFORMATION_ARRAYN)r$   r%   r&   rP   r:   r   r   r   r   rR   r   r;   rR   c                   @   r-   )PLSAPR_SID_INFORMATION_ARRAYr/   N)r$   r%   r&   rR   r0   r   r   r   r   rS   u   r1   rS   c                   @   r=   )LSAPR_SID_ENUM_BUFFERr(   SidInfoN)r$   r%   r&   r   rS   r+   r   r   r   r   rT   z   r@   rT   c                   @   r2   )LSAPR_TRANSLATED_NAMEr4   Namer6   N)r$   r%   r&   r   r   r   r+   r   r   r   r   rV      r,   rV   c                   @   r8   )LSAPR_TRANSLATED_NAME_ARRAYN)r$   r%   r&   rV   r:   r   r   r   r   rX      r;   rX   c                   @   r-   )PLSAPR_TRANSLATED_NAME_ARRAYr/   N)r$   r%   r&   rX   r0   r   r   r   r   rY      r1   rY   c                   @   r=   )LSAPR_TRANSLATED_NAMESr(   NamesN)r$   r%   r&   r   rY   r+   r   r   r   r   rZ      r@   rZ   c                   @   (   e Zd ZdefdefdefdeffZdS )LSAPR_TRANSLATED_NAME_EXr4   rW   r6   FlagsN)r$   r%   r&   r   r   r   r   r+   r   r   r   r   r]          r]   c                   @   r8   )LSAPR_TRANSLATED_NAME_EX_ARRAYN)r$   r%   r&   r]   r:   r   r   r   r   r`      r;   r`   c                   @   r-   )PLSAPR_TRANSLATED_NAME_EX_ARRAYr/   N)r$   r%   r&   r`   r0   r   r   r   r   ra      r1   ra   c                   @   r=   )LSAPR_TRANSLATED_NAMES_EXr(   r[   N)r$   r%   r&   r   ra   r+   r   r   r   r   rb      r@   rb   c                   @   s(   e Zd ZdefdefdefdeffZdS )LSAPR_TRANSLATED_SID_EXr4   r5   r6   r^   Nr7   r   r   r   r   rc      r_   rc   c                   @   r8   )LSAPR_TRANSLATED_SID_EX_ARRAYN)r$   r%   r&   rc   r:   r   r   r   r   rd      r;   rd   c                   @   r-   )PLSAPR_TRANSLATED_SID_EX_ARRAYr/   N)r$   r%   r&   rd   r0   r   r   r   r   re      r1   re   c                   @   r=   )LSAPR_TRANSLATED_SIDS_EXr(   r?   N)r$   r%   r&   r   re   r+   r   r   r   r   rf      r@   rf   c                   @   r\   )LSAPR_TRANSLATED_SID_EX2r4   rQ   r6   r^   N)r$   r%   r&   r   r   r   r   r+   r   r   r   r   rg      r_   rg   c                   @   r8   )LSAPR_TRANSLATED_SID_EX2_ARRAYN)r$   r%   r&   rg   r:   r   r   r   r   rh      r;   rh   c                   @   r-   )PLSAPR_TRANSLATED_SID_EX2_ARRAYr/   N)r$   r%   r&   rh   r0   r   r   r   r   ri      r1   ri   c                   @   r=   )LSAPR_TRANSLATED_SIDS_EX2r(   r?   N)r$   r%   r&   r   ri   r+   r   r   r   r   rj      r@   rj   c                   @   r8   )RPC_UNICODE_STRING_ARRAYN)r$   r%   r&   r   r:   r   r   r   r   rk      r;   rk   c                   @   s&   e Zd ZdZdefdefdeffZdS )LsarGetUserName-   
SystemNameUserName
DomainNameN)r$   r%   r&   opnumr   r   r+   r   r   r   r   rl      s    rl   c                   @   s"   e Zd ZdefdefdeffZdS )LsarGetUserNameResponsero   rp   	ErrorCodeN)r$   r%   r&   r   r	   r+   r   r   r   r   rr      r,   rr   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 )
LsarLookupNames4M   Countr[   TranslatedSidsLookupLevelMappedCountLookupOptionsClientRevisionN)	r$   r%   r&   rq   r   rk   rj   rA   r+   r   r   r   r   rt          rt   c                   @   r\   )LsarLookupNames4ResponseReferencedDomainsrw   ry   rs   Nr$   r%   r&   r.   rj   r   r	   r+   r   r   r   r   r}     r_   r}   c                	   @   D   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 )LsarLookupNames3D   PolicyHandlerv   r[   rw   rx   ry   rz   r{   N)
r$   r%   r&   rq   r   r   rk   rj   rA   r+   r   r   r   r   r         r   c                   @   r\   )LsarLookupNames3Responser~   rw   ry   rs   Nr   r   r   r   r   r     r_   r   c                	   @   r   )LsarLookupNames2:   r   rv   r[   rw   rx   ry   rz   r{   N)
r$   r%   r&   rq   r   r   rk   rf   rA   r+   r   r   r   r   r   !  r   r   c                   @   r\   )LsarLookupNames2Responser~   rw   ry   rs   N)r$   r%   r&   r.   rf   r   r	   r+   r   r   r   r   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 )	LsarLookupNames   r   rv   r[   rw   rx   ry   N)
r$   r%   r&   rq   r   r   rk   r>   rA   r+   r   r   r   r   r   7      r   c                   @   r\   )LsarLookupNamesResponser~   rw   ry   rs   N)r$   r%   r&   r.   r>   r   r	   r+   r   r   r   r   r   B  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 )	LsarLookupSids3L   SidEnumBufferTranslatedNamesrx   ry   rz   r{   N)	r$   r%   r&   rq   rT   rb   rA   r   r+   r   r   r   r   r   K  r   r   c                   @   r\   )LsarLookupSids3Responser~   r   ry   rs   Nr$   r%   r&   r.   rb   r   r	   r+   r   r   r   r   r   V  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 )
LsarLookupSids29   r   r   r   rx   ry   rz   r{   N)
r$   r%   r&   rq   r   rT   rb   rA   r   r+   r   r   r   r   r   _  r|   r   c                   @   r\   )LsarLookupSids2Responser~   r   ry   rs   Nr   r   r   r   r   r   k  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 )LsarLookupSids   r   r   r   rx   ry   N)
r$   r%   r&   rq   r   rT   rZ   rA   r   r+   r   r   r   r   r   t  s    r   c                   @   r\   )LsarLookupSidsResponser~   r   ry   rs   N)r$   r%   r&   r.   rZ   r   r	   r+   r   r   r   r   r   ~  r_   r   )r   r   rm   r   r   r   r   ru   c                 C   s(   t  }t|d< ||d< ||d< | |S )Nrn   ro   rp   )rl   r
   request)dceuserName
domainNamer   r   r   r   hLsarGetUserName  s
   
r   r   c                 C   sf   t  }t||d< |D ]}t }||d< |d | qt|d d< ||d< ||d< ||d< | |S )	Nrv   r/   r[   rw   r?   rx   rz   r{   )rt   lenr   appendr
   r   )r   nameslookupLevellookupOptionsclientRevisionr   nameitemnr   r   r   hLsarLookupNames4  s   
r   c           	      C   n   t  }||d< t||d< |D ]}t }||d< |d | qt|d d< ||d< ||d< ||d	< | |S 
Nr   rv   r/   r[   rw   r?   rx   rz   r{   )r   r   r   r   r
   r   	r   policyHandler   r   r   r   r   r   r   r   r   r   hLsarLookupNames3     
r   c           	      C   r   r   )r   r   r   r   r
   r   r   r   r   r   hLsarLookupNames2  r   r   c                 C   s^   t  }||d< t||d< |D ]}t }||d< |d | qt|d d< ||d< | |S )Nr   rv   r/   r[   rw   r?   rx   )r   r   r   r   r
   r   )r   r   r   r   r   r   r   r   r   r   hLsarLookupNames  s   
r   c           	      C   s|   t  }||d< t||d d< |D ]}t }|d | |d d | qt|d d< ||d< ||d	< ||d
< | |S )Nr   r   r(   rQ   rU   r   r[   rx   rz   r{   )r   r   rP   fromCanonicalr   r
   r   )	r   r   sidsr   r   r   r   sidr   r   r   r   hLsarLookupSids2  s   
r   c                 C   sl   t  }||d< t||d d< |D ]}t }|d | |d d | qt|d d< ||d< | |S )	Nr   r   r(   rQ   rU   r   r[   rx   )r   r   rP   r   r   r
   r   )r   r   r   r   r   r   r   r   r   r   hLsarLookupSids  s   
r   N)Timpacketr   impacket.dcerpc.v5.dtypesr   r   r   r   r   r   r	   r
   impacket.dcerpc.v5.enumr   impacket.dcerpc.v5.lsadr   r   impacket.dcerpc.v5.ndrr   r   r   r   r   impacket.dcerpc.v5.rpcrtr   impacket.dcerpc.v5.samrr   impacket.uuidr   MSRPC_UUID_LSATr   POLICY_LOOKUP_NAMESr'   r.   r3   r9   r<   r>   rA   rP   rR   rS   rT   rV   rX   rY   rZ   r]   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rr   rt   r}   r   r   r   r   r   r   r   r   r   r   r   r   OPNUMSr   rH   r   r   r   r   r   r   r   r   r   r   <module>   s   (									
