HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/samba/tests/__pycache__/py_credentials.cpython-310.pyc
o

�/aH;�@s�ddlmZmZddlZddlZddlmZddlmZm	Z	m
Z
mZddlm
Z
mZmZddlmZmZmZddlmZddlmZmZmZdd	lmZdd
lmZddlmZmZddl m!Z!ddl"Z"	d
Z#dZ$Gdd�de�Z%e	fdd�Z&dd�Z'dS)�)�TestCase�delete_forceN)�system_session)�Credentials�CLI_CRED_NTLMv2_AUTH�CLI_CRED_NTLM_AUTH�DONT_USE_KERBEROS)�netlogon�ntlmssp�srvsvc)�netr_Authenticator�netr_WorkstationInformation�MSV1_0_ALLOW_MSVCHAPV2)�SEC_CHAN_WKSTA)�UF_WORKSTATION_TRUST_ACCOUNT�UF_PASSWD_NOTREQD�UF_NORMAL_ACCOUNT)�ndr_pack)�SamDB)�
NTSTATUSError�ntstatus)�
get_string�PCTM�PCTUcs�eZdZ�fdd�Z�fdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Z�ZS)#�PyCredentialsTestscs�tt|���tjd|_tjd|_tjd|_|��|_	|�
�|_t�|_
td|j|j
|j|j	d�|_|��|��dS)N�SERVER�DOMAIN�	SERVER_IPz	ldap://%s)�url�session_info�credentials�lp)�superr�setUp�os�environ�server�domain�host�get_loadparmr!�get_credentialsr r�sessionr�ldb�create_machine_account�create_user_account��self��	__class__��</usr/lib/python3/dist-packages/samba/tests/py_credentials.pyr#8s


�zPyCredentialsTests.setUpcs.tt|���t|j|j�t|j|j�dS�N)r"r�tearDownrr,�
machine_dn�user_dnr/r1r3r4r6KszPyCredentialsTests.tearDowncCs|�t|jj�dSr5)�assertRaises�
ValueError�
machine_creds�new_client_authenticatorr/r3r3r4�test_no_netlogon_connectionSs�z.PyCredentialsTests.test_no_netlogon_connectioncCs |��}|j��}|�|�dSr5)�get_netlogon_connectionr;r<�assertIsNotNone)r0�c�ar3r3r4�test_have_netlogon_connectionZs
z0PyCredentialsTests.test_have_netlogon_connectioncCs||��}|�|�\}}|�|||�|�|�\}}|�|||�|�|�\}}|�|||�|�|�\}}|�|||�dSr5)r>�get_authenticator�do_NetrLogonSamLogonWithFlags�do_NetrLogonGetDomainInfo)r0r@�
authenticator�
subsequentr3r3r4�test_client_authenticatorasz,PyCredentialsTests.test_client_authenticatorc
Cs�|��}t|j|j|j�}tj}tj}d}z|�|j	|j�
�||||�WdStyN}zt�
|jd�j}|tjkrB|�d�n�WYd}~dSd}~ww)Nr�got wrong password error)r>�samlogon_logon_infor'�machine_name�
user_credsr	�$NetlogonNetworkTransitiveInformation�NetlogonValidationSamInfo4�netr_LogonSamLogonExr&�get_workstationr�ctypes�c_uint32�args�valuer�NT_STATUS_WRONG_PASSWORD�fail�r0r@�logon�logon_level�validation_level�
netr_flags�e�enumr3r3r4�test_SamLogonExls0�
�
���z"PyCredentialsTests.test_SamLogonExc
Cs�|��}|j�d�t|j|j|j�}tj}tj}d}z|�	|j
|j��||||�WdStyc}z+t
�|jd�j}|tjkrH|�d�n|�dt|��WYd}~dSWYd}~dSd}~ww)N�rrIzgot unexpected error)r>rL�
set_domainrJr'rKr	rMrNrOr&rPrrQrRrSrTrrUrV�strrWr3r3r4�test_SamLogonEx_no_domain�s2�
�
 ���z,PyCredentialsTests.test_SamLogonEx_no_domainc
Cs�|��}t|j|j|jtd�}tj}tj}d}z|�	|j
|j��||||�WdStyP}zt
�|jd�j}|tjkrD|�d�n�WYd}~dSd}~ww�N)�flagsrrI)r>rJr'rKrLrr	rMrNrOr&rPrrQrRrSrTrrUrVrWr3r3r4�test_SamLogonExNTLM�s2�
�
���z&PyCredentialsTests.test_SamLogonExNTLMc
Cs�|��}t|j|j|jtd�}t|j_t	j
}t	j}d}z|�|j
|j��||||�WdStyT}zt�|jd�j}|tjkrH|�d�n�WYd}~dSd}~wwrc)r>rJr'rKrLrr�
identity_info�parameter_controlr	rMrNrOr&rPrrQrRrSrTrrUrVrWr3r3r4�test_SamLogonExMSCHAPv2�s4�
�
���z*PyCredentialsTests.test_SamLogonExMSCHAPv2cCs$|��t�d|j|j|j�dS)Nzncacn_np:%s)�do_Netr_ServerPasswordSet2rr&r!r;r/r3r3r4�test_encrypt_netr_password�s
�z-PyCredentialsTests.test_encrypt_netr_passwordcCs�|��}|�|�\}}d}d}t�||�}|�d�}t|�}dd�t�||�D�}	t�	�}
||
_
|	dd�|D�|
_|j�
|
�|�|j|j��t|j||
�||_|j�|�dS)N� i�	utf-16-lecS�"g|]
}t|t�r|nt|��qSr3��
isinstance�int�ord��.0�xr3r3r4�
<listcomp>��"zAPyCredentialsTests.do_Netr_ServerPasswordSet2.<locals>.<listcomp>cSrmr3rnrrr3r3r4ru�rv)r>rC�samba�generate_random_password�encode�lenr$�urandomr	�netr_CryptPassword�length�datar;�encrypt_netr_crypt_password�netr_ServerPasswordSet2r&rPrrK�machine_pass�set_password)r0r@rFrG�PWD_LEN�DATA_LEN�newpass�encoded�pwd_len�filler�pwdr3r3r4ri�s*
�z-PyCredentialsTests.do_Netr_ServerPasswordSet2cCst�d|j|j|j�S)Nzncacn_ip_tcp:%s[schannel,seal])r	r&r!r;r/r3r3r4r>�s�z*PyCredentialsTests.get_netlogon_connectioncCs�t�dd�|_t|_d|j|j��f|_t|j|j�dt	|j��
d�}|j�|jdd|jtt
tB�|d��t�|_|j�|���|j�t�|j�t�|j�|j�|j�|jd�|j�|j�dS)	Nrk�cn=%s,%s�"%s"rl�computerz%s$��dn�objectclass�sAMAccountName�userAccountControl�
unicodePwd�$)rwrxr��MACHINE_NAMErKr,�	domain_dnr7rrry�addrarrrr;�guessr)�set_secure_channel_typer�set_kerberos_staterr��set_username�set_workstation�r0�utf16pwr3r3r4r-s&
�z)PyCredentialsTests.create_machine_accountcCs�t�dd�|_t|_d|j|j��f|_t|j|j�dt	|j��
d�}|j�|jdd|jtt
�|d��t�|_|j�|���|j�|j�|j�|j�|j�|j�dS)Nrkr�r�rl�userz%sr�)rwrx�	user_pass�	USER_NAME�	user_namer,r�r8rrryr�rarrrLr�r)r�r�r�rKr�r3r3r4r.!s$�z&PyCredentialsTests.create_user_accountcCs>|j��}t�}dd�|dD�|j_|d|_t�}||fS)NcSrmr3rnrrr3r3r4ru>rvz8PyCredentialsTests.get_authenticator.<locals>.<listcomp>�
credential�	timestamp)r;r<r�credr~r�)r0r@�auth�currentrGr3r3r4rC;s

z$PyCredentialsTests.get_authenticatorc
CsFt|j|j|j�}tj}tj}d}|�|j|j�	�||||||�dS)Nr)
rJr'rKrLr	rMrN�netr_LogonSamLogonWithFlagsr&rP)r0r@r�rGrXrYrZr[r3r3r4rDDs ��z0PyCredentialsTests.do_NetrLogonSamLogonWithFlagscCs&t�}|�|j|j��||d|�dS)N�)r
�netr_LogonGetDomainInfor&rLrP)r0r@r�rG�queryr3r3r4rEUs�z,PyCredentialsTests.do_NetrLogonGetDomainInfo)�__name__�
__module__�__qualname__r#r6r=rBrHr^rbrerhrjrir>r-r.rCrDrE�
__classcell__r3r3r1r4r6s$ 	rc
Cs�t||�}d}|j|||d�}t��}dd�|D�|_t��|_t|d�|j_dd�|dD�|j_	t�
�|_|��\}}	|	|jj
_||jj_|��|jj_|S)Nsabcdefgh)rd�	challenge�target_infocSrmr3rnrrr3r3r4ruprvz'samlogon_logon_info.<locals>.<listcomp>�nt_responsecSrmr3rnrrr3r3r4rusrv)�samlogon_target�get_ntlm_responser	�netr_NetworkInfor��netr_ChallengeResponse�ntrzr}r~�netr_IdentityInforf�get_ntlm_username_domain�domain_name�string�account_namerP�workstation)
r��
computer_name�credsrd�target_info_blobr��responserX�usernamer'r3r3r4rJcs"
�



rJcCs^t��}d|_t��}tj|_||_t��}tj|_||_t��}tj|_|||g|_	t
|�S)N�)r
�AV_PAIR_LIST�count�AV_PAIR�MsvAvNbComputerName�AvId�Value�MsvAvNbDomainName�MsvAvEOL�pairr)r�r�r��computername�
domainname�eolr3r3r4r��sr�)(�samba.testsrrr$rw�
samba.authr�samba.credentialsrrrr�samba.dcerpcr	r
r�samba.dcerpc.netlogonrr
r�samba.dcerpc.miscr�
samba.dsdbrrr�	samba.ndrr�samba.samdbrrr�samba.commonrrQr�r�rrJr�r3r3r3r4�<module>s.0
�