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 )zºBuilds 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   