o
    Žõ±ji  ã                   @   sê   d dl Z d dlZd dlmZ d dlT d dlT d dlT G dd„ dƒZG dd„ dƒZG dd	„ d	ƒZ	i d
e
“de“de“de“de“de“de“de“de“de“de“de“de“de“de“de“de“eeeeee e!e"e#e$e%e&dœ¥Z'dS )é    N)ÚNTStatus)Ú*c                   @   ó6   e Zd Zd
dd„Zedd„ ƒZedd„ ƒZdd	„ ZdS )ÚSMB2CompressionNc                 C   ó   || _ || _d S ©N©ÚheaderÚdata©Úselfr	   r
   © r   ú�/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/aiosmb/protocol/smb2/message.pyÚ__init__
   ó   
zSMB2Compression.__init__c                 C   ó   t  t | ¡¡S r   )r   Úfrom_bufferÚioÚBytesIO©Úbbuffr   r   r   Ú
from_bytes   ó   zSMB2Compression.from_bytesc                 C   óT   t ƒ }|  ¡ }|  d¡}|  |d¡ |dkrt | ¡|_ntd| ƒ‚|  ¡ |_|S )Né   r   ó   üz+Unknown packet type for SMB2Compression! %s)	r   ÚtellÚreadÚseekÚ SMB2Header_COMPRESSION_TRANSFORMr   r	   Ú	Exceptionr
   ©ÚbuffÚmsgÚposÚtr   r   r   r      ó   

zSMB2Compression.from_bufferc                 C   ó   | j  ¡ }|| j7 }|S r   ©r	   Úto_bytesr
   ©r   r%   r   r   r   r)       ó   

zSMB2Compression.to_bytes©NN©Ú__name__Ú
__module__Ú__qualname__r   Ústaticmethodr   r   r)   r   r   r   r   r   	   ó    


r   c                   @   r   )ÚSMB2TransformNc                 C   r   r   r   r   r   r   r   r   &   r   zSMB2Transform.__init__c                 C   r   r   )r3   r   r   r   r   r   r   r   r   *   r   zSMB2Transform.from_bytesc                 C   r   )Nr   r   ó   ýz)Unknown packet type for SMB2Transform! %s)	r3   r   r   r   ÚSMB2Header_TRANSFORMr   r	   r    r
   r!   r   r   r   r   .   r&   zSMB2Transform.from_bufferc                 C   r'   r   r(   r*   r   r   r   r)   <   r+   zSMB2Transform.to_bytesr,   r-   r   r   r   r   r3   %   r2   r3   c                   @   sR   e Zd Zddefdd„Zedd„ ƒZeddd„ƒZed	d
„ ƒZdd„ Z	dd„ Z
dS )ÚSMB2MessageNr	   c                 C   r   r   )r	   Úcommand)r   r	   r7   r   r   r   r   B   r   zSMB2Message.__init__c                 C   s   t  t | ¡| ¡S r   )r6   r   r   r   r   r   r   r   r   F   s   zSMB2Message.from_bytesc              
   C   sh  t ƒ }t | ¡|_tj|jjv r|  dd¡ t | ¡|_|jj	t
jkrXtj|jjv rX|jj	t
jkr8|jjjdksX|  ¡ }tj|  d¡dd�}|  |d¡ |dkrXt | ¡|_|S tj|jjv rr|jjtjkrrt |dd … ¡|_|S |jjj}ztj|jjv r„|d7 }n|d	7 }t|  | ¡|_W |S  ty³ } zdd l}| ¡  t | ¡|_W Y d }~|S d }~ww )
Nr   ÚSESSION_SETUPé   Úlittle)Ú	byteorderé	   é@   Ú_REPLYÚ_REQ)r6   ÚSMB2Header_SYNCr   r	   ÚSMB2HeaderFlagÚSMB2_FLAGS_ASYNC_COMMANDÚFlagsr   ÚSMB2Header_ASYNCÚStatusr   ÚSUCCESSÚSMB2_FLAGS_SERVER_TO_REDIRÚMORE_PROCESSING_REQUIREDÚCommandÚnamer   Úintr   r   ÚERROR_REPLYr7   ÚSMB2CommandÚREADÚ
READ_REPLYÚcommand2objectr    Ú	tracebackÚ	print_excÚSMB2NotImplementedCommand)r"   r   r#   r$   Ústructure_sizeÚ	classnameÚerQ   r   r   r   r   J   s<   
ò
ù€ùzSMB2Message.from_bufferc                 C   sB   |   ¡ }|  dtj¡ ttj|  d¡ddd�ƒ}|  |tj¡ dS )zL
		jumping to the header flags and check if the AYSNC command flag is set
		é   é   r:   F)r;   ÚsignedN)r   r   r   ÚSEEK_SETrA   rK   r   r   )r"   r$   Úflagsr   r   r   ÚisAsynct   s
   zSMB2Message.isAsyncc                 C   s   | j  ¡ }|| j ¡ 7 }|S r   )r	   r)   r7   r*   r   r   r   r)      s   
zSMB2Message.to_bytesc                 C   s$   d}|t | jƒ7 }|t | jƒ7 }|S )Nz== SMBv2 Message ==)Úreprr	   r7   r*   r   r   r   Ú__repr__„   s   zSMB2Message.__repr__r,   r   )r.   r/   r0   r@   r   r1   r   r   r\   r)   r^   r   r   r   r   r6   A   s    
)

r6   ÚNEGOTIATE_REQÚNEGOTIATE_REPLYÚSESSION_SETUP_REQÚSESSION_SETUP_REPLYÚTREE_CONNECT_REQÚTREE_CONNECT_REPLYÚ
CREATE_REQÚCREATE_REPLYÚREAD_REQrO   ÚQUERY_INFO_REPLYÚQUERY_INFO_REQÚQUERY_DIRECTORY_REQÚQUERY_DIRECTORY_REPLYÚTREE_DISCONNECT_REPLYÚTREE_DISCONNECT_REQÚECHO_REQ)Ú
ECHO_REPLYÚ
LOGOFF_REQÚLOGOFF_REPLYrL   Ú	CLOSE_REQÚCLOSE_REPLYÚWRITE_REPLYÚ	WRITE_REQÚFLUSH_REPLYÚ	FLUSH_REQÚ	IOCTL_REQÚIOCTL_REPLY)(Úenumr   Úaiosmb.wintypes.ntstatusr   Úaiosmb.protocol.smb2.headersÚaiosmb.protocol.smb2.commandsÚ"aiosmb.protocol.smb2.command_codesr   r3   r6   r_   r`   ra   rb   rc   rd   re   rf   rg   rO   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rL   rr   rs   rt   ru   rv   rw   rx   ry   rP   r   r   r   r   Ú<module>   sr    Jÿþýüûúùø	÷
öõôóòñðïã