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   