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