o
    àý°j)  ã                   @   sN   d dl mZ d dlmZ d dlmZ d dlmZ dZdZ	G dd„ deeƒZ
dS )	é    )ÚLOG)ÚIMAPSocksRelay)ÚSSLServerMixin)ÚSSLÚIMAPSSocksRelayz
c                   @   s8   e Zd ZdZdZdd„ Zedd„ ƒZdd„ Zd	d
„ Z	dS )r   zIMAPS Socks PluginÚIMAPSc                 C   s   t  | ||||¡ d S )N)r   Ú__init__)ÚselfÚ
targetHostÚ
targetPortÚsocksSocketÚactiveRelays© r   úª/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/impacket/examples/ntlmrelayx/servers/socksplugins/imaps.pyr   !   s   zIMAPSSocksRelay.__init__c                   C   s   dS )Niá  r   r   r   r   r   ÚgetProtocolPort$   s   zIMAPSSocksRelay.getProtocolPortc              
   C   sx   t  d¡ |  ¡  zt | ¡s| j ¡  W dS W n ty4 } zt  dt|ƒ ¡ W Y d }~dS d }~ww | j	j
| _dS )Nz*Wrapping IMAP client connection in TLS/SSLFz	IMAPS: %sT)r   ÚdebugÚwrapClientConnectionr   ÚskipAuthenticationr   ÚshutdownÚ	ExceptionÚstrÚsessionÚsslobjÚrelaySocket)r	   Úer   r   r   r   (   s   


ý€þ
z"IMAPSSocksRelay.skipAuthenticationc                 C   sÈ   d}d}	 z	| j  | j¡}W n
 tjy   Y nw |  |||¡}|du r%n|\}}q|dkrbt|ƒ}| jdu rD| j 	dt
 ¡ | j ¡  | jrZ|d7 }| j 	d|t
f ¡ | j ¡  |d | j_d S d S )NÚ TFzDONE%sé   z
%s CLOSE%s)r   ÚrecvÚ
packetSizer   ÚZeroReturnErrorÚprocessTunnelDataÚintÚ	idleStater   ÚsendallÚEOLÚrelaySocketFileÚreadlineÚshouldCloser   Útagnum)r	   ÚkeywordÚtagÚdataÚresultr   r   r   ÚtunnelConnection7   s0   þõ


ôz IMAPSSocksRelay.tunnelConnectionN)
Ú__name__Ú
__module__Ú__qualname__ÚPLUGIN_NAMEÚPLUGIN_SCHEMEr   Ústaticmethodr   r   r-   r   r   r   r   r      s    
N)Úimpacketr   Ú6impacket.examples.ntlmrelayx.servers.socksplugins.imapr   Ú&impacket.examples.ntlmrelayx.utils.sslr   ÚOpenSSLr   ÚPLUGIN_CLASSr$   r   r   r   r   r   Ú<module>   s   