o
    �õ±j�  ã                   @   s´   d dl mZ d dlmZmZmZ d dlmZ d dlmZ d dl	m
Z
mZmZ d dlmZ d dlmZmZmZmZ ejejejejejejgZeeeeeeedœZG d	d
„ d
eƒZdS )é    )ÚUniCredential)ÚasyauthSecretÚasyauthProtocolÚasyauthSubProtocol)ÚSubProtocol)ÚSubProtocolNative)ÚVersionÚWindowsMajorVersionÚWindowsMinorVersion)ÚNegotiateFlags)Ústr_oneÚint_oneÚbool_oneÚint_list)Ú	ntlmnosigÚntlmworkstationÚ
ntlmdomainÚ	ntlmflagsÚntlmversionmajorÚntlmversionminorÚntlmversionbuildc                   @   sL   e Zd Zeƒ fdedefdd„Zedd„ ƒZedd„ ƒZ	d	d
„ Z
dd„ ZdS )ÚNTLMCredentialÚstypeÚsubprotocolc              	   K   s´  t j| ||||tj|d� | jtju rtj| _t| j	t
ƒr)| jtvr)td| j ƒ‚| d¡| _| d¡| _d| _d| _tjtjB tjB tjB tjB tjB tjB tjB tjB tjB | _| d¡d urktt| d¡ƒƒ| _| dd¡d	u r‰tjtjB tjB tjB tjB tjB tjB | _tj | _!t"j#| _$d
| _%| d¡d ur¥tt| d¡ƒƒ| _!| d¡d ur¶t"t| d¡ƒƒ| _!| d¡d urÃ| d¡| _%t&j'| j!| j$| j%d�| _(d | _)d | _*d | _+d S )N)ÚsecretÚusernameÚdomainr   Úprotocolr   z)Unsupported Secret Type for NTLM auth: %sr   r   é   Fr   r   Ti×:  r   r   r   )ÚminorÚbuild),r   Ú__init__r   ÚNTLMr   r   ÚRC4ÚNTÚ
isinstancer   r   Ú ASYAUTH_NTLMCRED_SUPPORTED_STYPEÚ	ExceptionÚgetÚnegotiate_workstationÚnegotiate_domainÚntlm_versionÚis_guestr   ÚNEGOTIATE_KEY_EXCHÚNEGOTIATE_128ÚNEGOTIATE_VERSIONÚ"NEGOTIATE_EXTENDED_SESSIONSECURITYÚNEGOTIATE_ALWAYS_SIGNÚNEGOTIATE_NTLMÚNEGOTIATE_SIGNÚNEGOTIATE_SEALÚREQUEST_TARGETÚNEGOTIATE_UNICODEÚflagsÚintr	   ÚWINDOWS_MAJOR_VERSION_10r   r
   ÚWINDOWS_MINOR_VERSION_0r   r   r   Ú	constructÚnegotiate_versionÚ	challengeÚ	timestampÚsession_key)Úselfr   r   r   r   r   Úkwargs© rB   ú’/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/asyauth/common/credentials/ntlm.pyr!   "   sŠ   ù
ÿþýüûúùø	÷ÿþýüûú	ý
zNTLMCredential.__init__c                   C   s   t d dd tjtƒ d�S )NÚGuest)r   r   r   r   r   )r   r   ÚPASSWORDr   rB   rB   rB   rC   Úcreate_guestf   s   ûzNTLMCredential.create_guestc                   C   s   t S )N)ÚNTLM_URL_PARAMSrB   rB   rB   rC   Úget_url_paramsp   s   zNTLMCredential.get_url_paramsc                 O   sÔ   | j jtjkrddlm} || ƒS | j jtjkr"ddlm} || ƒS | j jtj	kr3ddl
m} || ƒS | j jtjkrDddlm} || ƒS | j jtjkrUddlm} || ƒS | j jtjkrc| j j | ¡S td| j  ƒ‚)Nr   )ÚNTLMClientNative)ÚNTLMClientSSPI)ÚNTLMClientSSPIProxy)ÚNTLMClientWSNET)ÚNTLMClientWSNETDirectzUnsupported subprotocol "%s")r   Útyper   ÚNATIVEÚ$asyauth.protocols.ntlm.client.nativerI   ÚSSPIÚ"asyauth.protocols.ntlm.client.sspirJ   Ú	SSPIPROXYÚ'asyauth.protocols.ntlm.client.sspiproxyrK   ÚWSNETÚ#asyauth.protocols.ntlm.client.wsnetrL   ÚWSNETDIRECTÚ)asyauth.protocols.ntlm.client.wsnetdirectrM   ÚCUSTOMÚ
factoryobjÚbuild_contextr'   )r@   ÚargsrA   rI   rJ   rK   rL   rM   rB   rB   rC   r[   t   s$   zNTLMCredential.build_contextc                 C   s^   dd l }d}| jD ]#}| j| }t||jƒr|}n	t||jƒr"|j}|d|t|ƒf 7 }q	|S )Nr   z==== NTLMCredential ====
z%s: %s
)ÚenumÚ__dict__r%   ÚIntFlagÚEnumÚnameÚstr)r@   r]   ÚtÚkÚvalrB   rB   rC   Ú__str__Ž   s   

zNTLMCredential.__str__N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r!   ÚstaticmethodrF   rH   r[   rf   rB   rB   rB   rC   r   !   s    D
	
r   N)Úasyauth.common.credentialsr   Úasyauth.common.constantsr   r   r   Úasyauth.common.subprotocolsr   r   Ú)asyauth.protocols.ntlm.structures.versionr   r	   r
   Ú1asyauth.protocols.ntlm.structures.negotiate_flagsr   Úasyauth.utils.paramprocessorr   r   r   r   rE   ÚPASSÚPWÚPWHEXr$   r#   r&   rG   r   rB   rB   rB   rC   Ú<module>   s.   ú
ù