o
    j
                     @   sJ   d dl mZ d dlZd dlmZ d dlmZ d dlmZ G dd dZ	dS )    )ListN)SPNEGOCredential)UniCredential)asyauthSecretc                   @   sx   e Zd Zdd Zedd Zedddddddg dddf
d	ed
edededededededee dedefddZ	dS )
DCERPCAuthc                 C   s   d | _ d | _d | _d | _d S )N)ntlmkerberosgssapinetlogon)self r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/aiosmb/dcerpc/v5/common/connection/authentication.py__init__   s   
zDCERPCAuth.__init__c                 C   sD   t  }|  |_d|  v r| d|_d|  v r | d|_|S )NzMS KRB5 - Microsoft Kerberos 5z2NTLMSSP - Microsoft NTLM Security Support Provider)r   get_copyr	   list_original_conextsget_original_contextr   r   )r	   authr   r   r   from_smb_gssapi   s   
zDCERPCAuth.from_smb_gssapipasswordNr            usernamesecret
secrettypedomaindcip	authprotoaltname	altdomainetypecertdatakeydatac                 C   s   ddl }| ddkr| d\}} |dur| }|du r d}| }t| }|dkr<ddlm} ||| ||}n!|dkrWddlm} ||| ||t	||g d	|
|d

}nt
d| tt|g }t|S )zBuilds a new SMBConnectionFactory object from scratch.
		This doesn't support all features of the SMBTarget and SMBCredential objects, but it's a quick way to build a connection factory.r   N\   NTLM)NTLMCredentialKERBEROS)KerberosCredentialr   )targetr   r    r!   r"   r#   zUnknown authproto: %s)	ipaddresscountsplitupperr   asyauth.common.credentials.ntlmr'   #asyauth.common.credentials.kerberosr)   r*   	Exceptionr   copydeepcopybuild_contextr   r   )r   r   r   r   r   proxiesr   r   r    r!   r"   r#   r+   r'   
credentialr)   r	   r   r   r   from_components'   sD   
zDCERPCAuth.from_components)
__name__
__module____qualname__r   staticmethodr   strr   intr7   r   r   r   r   r      s2    

r   )
typingr   r2   !asyauth.common.credentials.spnegor   asyauth.common.credentialsr   asyauth.common.constantsr   r   r   r   r   r   <module>   s   