o
    Žõ±jH  ã                   @   s*   d dl mZ d dlmZ G dd„ dƒZdS )é    )ÚSMBFile)ÚMSRPCRespHeaderc                   @   s>   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zdd
d„Zdd„ ZdS )ÚDCERPCSMBTransportc                 C   s   || _ d | _d | _d| _d S )Nó    )ÚtargetÚsmbfileÚ_max_send_fragÚ_recv_buffer)Úselfr   © r   ú‘/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/aiosmb/dcerpc/v5/transport/smb.pyÚ__init__   s   
zDCERPCSMBTransport.__init__c                 C   s   | j j ¡ S ©N)r   Úsmb_connectionÚget_session_key)r
   r   r   r   r      s   z"DCERPCSMBTransport.get_session_keyc              
   Ã   s~   �z'd| j jj  ¡ d| j jf }t |¡| _| j | j jd¡I d H \}}d|fW S  ty> } z
d |fW  Y d }~S d }~ww )Nz	\\%s\%s%szIPC$ÚwpT)	r   r   Úget_hostname_or_ipÚpiper   Úfrom_uncpathr   ÚopenÚ	Exception)r
   Úunc_pathÚ_ÚerrÚer   r   r   Úconnect   s   €
€ÿzDCERPCSMBTransport.connectc              
   Ã   sF   �z| j  ¡ I d H  W d S  ty" } z
d |fW  Y d }~S d }~ww r   )r   Úcloser   )r
   r   r   r   r   Ú
disconnect   s   €€ÿzDCERPCSMBTransport.disconnectr   c           	   
   Ã   s²   �zA| j r/d}	 |||| j  … }|s	 W dS | j |¡I d H \}}|d ur(|‚|t|ƒ7 }q| j |¡I d H \}}|d ur@|‚W dS  tyX } z
d |fW  Y d }~S d }~ww )Nr   é   )TN)r   r   ÚwriteÚlenr   )	r
   ÚdataÚforceWriteAndxÚ	forceRecvÚoffsetÚtoSendÚtotal_writenr   r   r   r   r   Úsend    s,   €öù
€ÿzDCERPCSMBTransport.sendc           
   
   Ã   s  �zwt | jƒdkr| j}d| _|d fW S | j ¡ I d H \}}|d ur$|‚|| j7 }d| _t|ƒ}t |ƒ}|d |kr?|d fW S ||d krY||d d … | _|d |d … d fW S |d t |ƒ }| j |¡I d H \}}|d urr|‚|| d fW S  tyŽ }	 z
d |	fW  Y d }	~	S d }	~	ww )Né   r   Úfrag_len)r    r	   r   Úreadr   r   )
r
   ÚcountÚtbuffÚhdr_datar   Úresponse_headerÚdlenÚbody_lenÚmsg_datar   r   r   r   ÚrecvR   s6   €


€ÿzDCERPCSMBTransport.recvN)r   r   )	Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r'   r2   r   r   r   r   r      s    

2r   N)Úaiosmb.commons.interfaces.filer   Úaiosmb.dcerpc.v5.rpcrtr   r   r   r   r   r   Ú<module>   s   