o
    Žõ±jN  ã                   @   sî   d dl mZmZmZmZmZmZ d dlmZm	Z	m
Z
 d dlmZ d dlmZ d dlmZmZ d dlmZ d dlmZ e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d eefiZdd„ Zddd„ZdS )é    )ÚDWORDÚLPWSTRÚULONGÚLPBYTEÚNULLÚ	DWORD_PTR)ÚNDRCALLÚ	NDRSTRUCTÚ
NDRPOINTER)ÚDCERPCException)Úuuidtup_to_bin)Úsystem_errorsÚhresult_errors)ÚSMBException)Ú	Structure)z$91ae6020-9e3c-11cf-8d7c-00aa00c091bez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/aiosmb/dcerpc/v5/icpr.pyr      s   zDCERPCSessionError.__init__c                 C   sˆ   | j }|tjv rtj| d }tj| d }d| j ||f S |d@ tjv r?tj|d@  d }tj|d@  d }d| j ||f S d| j  S )Nr   é   z'ICPR SessionError: code: 0x%x - %s - %siÿÿ  z+ICPR SessionError: unknown error code: 0x%x)r   r   ÚERROR_MESSAGESr   )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   c                   @   s   e Zd ZdefdeffZdS )ÚCERTTRANSBLOBÚcbDataÚpbDataN)r   r    r!   r   r   Ú	structurer   r   r   r   r"   3   s    þr"   c                   @   s   e Zd ZdeffZdS )ÚLPCERTTRANSBLOBÚDataN)r   r    r!   r"   Úreferentr   r   r   r   r&   9   s    ÿ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 )ÚCertServerRequestr   ÚdwFlagsÚpwszAuthorityÚpdwRequestIdÚpctbAttribsÚpctbRequestN)	r   r    r!   Úopnumr   r   r   r"   r%   r   r   r   r   r)   D   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 )ÚCertServerRequestResponser,   ÚpdwDispositionÚpctbCertÚpctbEncodedCertÚpctbDispositionMessageÚ	ErrorCodeN)r   r    r!   r   r"   r   r%   r   r   r   r   r0   O   s    úr0   c                 C   s(   | t kr| S | dd … dkr| d S | S )Néÿÿÿÿú )r   )Ústringr   r   r   ÚcheckNullStringd   s
   r9   r   Ú c           	      Ã   sŠ   �t ƒ }||d< t|ƒ|d< ||d< t|ƒ}| d¡}tƒ }t|ƒ|d< ||d< ||d< tƒ }t|ƒ|d< ||d< ||d< |  |¡I d H S )	Nr*   r+   r,   z	utf-16-ler#   r$   r-   r.   )r)   r9   Úencoder"   ÚlenÚrequest)	ÚdceÚserviceÚcsrr*   r,   r-   r=   ÚattribsblobÚcsr_requestr   r   r   ÚhCertServerRequestm   s    €
rC   N)r   r   r:   )Úaiosmb.dcerpc.v5.dtypesr   r   r   r   r   r   Úaiosmb.dcerpc.v5.ndrr   r	   r
   Úaiosmb.dcerpc.v5.rpcrtr   Úaiosmb.dcerpc.v5.uuidr   Úaiosmb.dcerpc.v5r   r   Úaiosmb.commons.exceptionsr   Úaiosmb.dcerpc.v5.structurer   ÚMSRPC_UUID_ICPRr   r"   r&   r)   r0   ÚOPNUMSr9   rC   r   r   r   r   Ú<module>   s"    ÿ	