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 rt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rtt|d| _!|dd urt"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.   
