o
    �õ±jü	  ã                   @   sB   d dl mZ d dlmZ d dlmZ d dlmZ G dd„ dƒZdS )é    )Úlogger)ÚNTLMClientNative)ÚWSNETSSPIProxy)ÚISC_REQc                   @   sn   e Zd Zdd„ Zdd„ Zedd„ ƒZddd	„Zdd
d„Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zddd„ZdS )ÚNTLMClientSSPIProxyc                 C   sL   || _ d| jj| jj| jjf }t|| jjƒ| _d| _d | _	t
| j ƒ| _d S )Nz
%s://%s:%sr   )Ú
credentialÚsettingsÚprotoÚhostÚportr   Úagent_idÚsspiÚ
iterationsÚsession_keyr   Úntlm_ctx)Úselfr   Úurl© r   úš/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/asyauth/protocols/ntlm/client/sspiproxy.pyÚ__init__   s   zNTLMClientSSPIProxy.__init__c                 C   s   d S ©Nr   ©r   r   r   r   Úsetup   s   zNTLMClientSSPIProxy.setupc                 C   s   | j jS r   )r   ÚntlmChallenger   r   r   r   r      s   z!NTLMClientSSPIProxy.ntlmChallengeÚClientc                 C   ó   | j j|d�S ©N)Úmode)r   Úget_sealkey©r   r   r   r   r   r      ó   zNTLMClientSSPIProxy.get_sealkeyc                 C   r   r   )r   Úget_signkeyr   r   r   r   r!      r    zNTLMClientSSPIProxy.get_signkeyc                 C   s   | j  ||||||¡S r   )r   ÚSEAL)r   Ú
signingKeyÚ
sealingKeyÚmessageToSignÚmessageToEncryptÚseqNumÚcipher_encryptr   r   r   r"      s   zNTLMClientSSPIProxy.SEALc                 C   s   | j  ||||¡S r   )r   ÚSIGN)r   r#   Úmessager'   r(   r   r   r   r)   !   s   zNTLMClientSSPIProxy.SIGNc                 C   s   | j S r   )r   r   r   r   r   Úget_session_key$   s   z#NTLMClientSSPIProxy.get_session_keyc                 C   ó
   | j  ¡ S r   )r   Úget_extra_infor   r   r   r   r-   '   ó   
z"NTLMClientSSPIProxy.get_extra_infoc                 C   r,   r   )r   Úis_extended_securityr   r   r   r   r/   *   r.   z(NTLMClientSSPIProxy.is_extended_securityó    Nr   Fc              
   Ë   sz  �z¤|du r|d u rt jt jB t jB t jB t jB t jB }n|d u r$t j}|d u rU| jjdddd|j	dd�I d H \}}}}	|	d urB|	‚|  j
d7  _
| j |¡ |dd fW S | j |¡ | jjdddd|j	|d�I d H \}}}}	|	d uru|	‚|	d u r˜| j |¡ | j ¡ I d H \| _}	|	d ur�|	‚| j |  ¡ ¡ | j ¡ I d H  |dd fW S  ty¼ }
 zd d |
fW  Y d }
~
S d }
~
ww )	NTÚNTLMÚ é   r0   )Úauthdataé   F)r   ÚREPLAY_DETECTÚCONFIDENTIALITYÚUSE_SESSION_KEYÚ	INTEGRITYÚSEQUENCE_DETECTÚ
CONNECTIONr   ÚauthenticateÚvaluer   r   Úload_negotiateÚload_challengeÚload_authenticateÚget_sessionkeyr   Úload_sessionkeyr+   Ú
disconnectÚ	Exception)r   ÚauthDataÚflagsÚ
seq_numberÚis_rpcÚkwargsÚstatusÚctxattrÚdataÚerrÚer   r   r   r<   -   s:   €&((€ÿz NTLMClientSSPIProxy.authenticate)r   )r0   Nr   F)Ú__name__Ú
__module__Ú__qualname__r   r   Úpropertyr   r   r!   r"   r)   r+   r-   r/   r<   r   r   r   r   r      s    	


r   N)	Úasyauthr   Ú$asyauth.protocols.ntlm.client.nativer   Úwsnet.operator.sspiproxyr   Úasyauth.common.winapi.constantsr   r   r   r   r   r   Ú<module>   s
    