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: //lib/python3/dist-packages/samba/tests/__pycache__/audit_log_dsdb.cpython-310.pyc
o

�/a�a�@s�dZddlZddlmZmZddlmZddlm	Z	ddl
mZddlZddl
Z
ddlmZddlmZdd	lmZddlZdd
lmZmZdZe�dd�ZGd
d�de�ZdS)z1Tests for the SamDb logging of password changes.
�N)�MSG_DSDB_LOG�DSDB_EVENT_NAME)�ERR_NO_SUCH_OBJECT)�SamDB)�system_session)�AuditLogTestBase)�delete_force)�Net)�security�lsa�auditlogtestuser� cs�eZdZ�fdd�Zdd�Z�fdd�Zdd�Zdd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Z�ZS)�AuditLogDsdbTestscst|_t|_tt|���tjd|_	dtjd}t
|t�|��|�
�d�|_tjd|_|j��|_|j��}|j�d�|�|jj|�|j��}|j�d�|j��|_|�|jj|�t|jdtd|j�|j�dtd|jd	ttd
��dS)N�	SERVER_IPz	ldap://%s�SERVER)�url�session_info�credentials�lp�	000000001�0�cn=�
,cn=users,�user)�dn�objectclass�sAMAccountName�userPassword)r�message_typer�
event_type�superr�setUp�os�environ�	server_iprr�get_credentials�get_loadparm�ldb�server�	domain_dn�base_dn�get_dsheuristics�set_dsheuristics�
addCleanup�
get_minPwdAge�
set_minPwdAger�	USER_NAME�add�	USER_PASS)�self�host�dsheuristics�	minPwdAge��	__class__��</usr/lib/python3/dist-packages/samba/tests/audit_log_dsdb.pyr!(s4�

�zAuditLogDsdbTests.setUpcCs|jd|d�|��dS)N��r)�waitForMessages�discardMessages)r3rr9r9r:�discardSetupMessagesYsz&AuditLogDsdbTests.discardSetupMessagescs|��tt|���dS�N)r>r r�tearDown)r3r7r9r:rA]szAuditLogDsdbTests.tearDowncCs0|jddur|jdd}|d|krdSdS)N�
txnMessage�dsdbTransaction�
transactionIdTF)�context)r3�expected�txnr9r9r:�haveExpectedTxnas
z!AuditLogDsdbTests.haveExpectedTxnNcCsX||_t��}|�|�s$|j�d�t��|dkrd|_dS|�|�rd|_|jdS)z�Wait for a transaction message to arrive
        The connection is passed through to keep the connection alive
        until all the logging messages have been received.
        g�������?�N�rB)�
connection�timerH�msg_ctx�	loop_oncerE)r3rFrK�
start_timer9r9r:�waitForTransactionhs

�
z$AuditLogDsdbTests.waitForTransactioncCshdtd|j}|�|�|j|��d�}|��}t|||jd�}d}|j|tt	d�|j
d||d�}td	t|��|�
dt|�d
�|dd}|�
d
|d�|�|d�|�|��|d���|�|d|j�|��}|�
||d�|�|�|d��|d}	|�
dt|	��|	dd}
|�
dt|
��|�|
dd�|�
d|
dd�dS)N�CN=�
,CN=Users,��template�r(�newPassword!!42)�newpassword�username�oldpasswordrIr<�Received %d messages�/Did not receive the expected number of messagesr�
dsdbChange�Modify�	operation�performedAsSystemr�
remoteAddress�	sessionIdrD�
attributes�clearTextPassword�actions�redacted�replace�action)r0r*r?�insta_credsr%r&r	r(�change_passwordr2r=�print�len�assertEqual�assertFalse�
assertTrue�lower�assertRegexpMatchesr`�get_session�is_guid)r3r�credsr�net�password�messages�audit�
session_idrbrdr9r9r:�test_net_change_passwordzs@
��
�z*AuditLogDsdbTests.test_net_change_passwordcCsjdtd|j}|�|�|j|��d�}|��}t|||jd�}d}|�d�}|j	|t|d�|j
d||d	�}td
t|��|�
dt|�d�|dd
}|�
d|d�|�|d�|�
||d�|�|d|j�|��}	|�
|	|d�|�|�|d��|d}
|�
dt|
��|
dd}|�
dt|��|�|dd�|�
d|dd�dS)NrQrRrSrUrV�	workgroup)rW�account_name�domain_namerIr<rZr[rr\r]r^r_rr`rarDrbrcrdrerfrg)r0r*r?rhr%r&r	r(�get�set_passwordr=rjrkrlrmrpr`rqrnrr)r3rrsrrtru�domainrvrwrxrbrdr9r9r:�test_net_set_password�sB

��
�z'AuditLogDsdbTests.test_net_set_passwordc	Cs�dtd|j}|�|�t�dd�}dtd|j}|j�d|ddddtdd	d|d�|�d
�}t	dt
|��|�d
t
|�d�|d
d}|�d|d�|�|d�|�||d�|�
|d|j�|�|�|d��|��}|�||d�|��}|�|d�|d}|�d
t
|��|dd}|�dt
|��|�|d
d�|�d|d
d�|�|d
d�|�d|d
d�dS)Nrrr
�dn: �
�changetype: modify
zdelete: userPassword
�userPassword: zadd: userPassword
rIrZr[rr\r]r^r_rr`ra�LDAPrbrrdr;re�deletergr1)r0r*r?�samba�generate_random_passwordr'�modify_ldifr2r=rjrkrlrmrpr`rnrrrq�get_service_description�	r3r�new_passwordrvrwrx�service_descriptionrbrdr9r9r:�test_ldap_change_password�sf

����������
�
�z+AuditLogDsdbTests.test_ldap_change_passwordc	Cs�dtd|j}|�|�t�dd�}|j�d|dddd|d�|jd	|d
�}tdt	|��|�
d	t	|�d�|d
d}|�
d|d�|�|d�|�|�
�|d�
��|�|d|j�|�|�|d��|��}|�
||d�|��}|�
|d�|�|�|d��|d}|�
d	t	|��|dd}|�
d	t	|��|�|d
d�|�
d|d
d�dS)Nrrr
r�r�r�zreplace: userPassword
r�rIr<rZr[rr\r]r^r_rr`rar�rDrbrrdrerfrg)r0r*r?r�r�r'r�r=rjrkrlrmrnrorpr`rrrqr�r�r9r9r:�test_ldap_replace_password�sR

�������
�z,AuditLogDsdbTests.test_ldap_replace_passwordcCsdtd|j}|jd|d�}tdt|��|�dt|�d�|dd}|�d	|d
�|�|d�|�||d�|�|d
|j�|�	�}|�||d�|�
�}|�|d�|�|�|d��|�|�|d��|d}|�dt|��|dd}|�dt|��|�d|dd�|�dt|dd��|�d|dddd�|dd}|�dt|��|�d|dd�|�dt|dd��|�t|dddd�|dd}|�dt|��|�d|dd�|�|dd�dS)Nrrr;r<rZr[rIr\�Addr^r_rr`rar�rDrb�rrdr1rrg�valuesr�valuerrre)
r0r*r=rjrkrlrmrpr`rqr�rnrr)r3rrvrwrxr�rbrdr9r9r:�test_ldap_add_usersH�
�z$AuditLogDsdbTests.test_ldap_add_usercCs`dtd|j}|�|�|j�t�|jd|d�}tdt|��|�dt|�d�|dd}|�d	|d
�|�	|d�|�
|��|d���|�|d
|j
�|�
|�|d��|�d|d�|�d|d�|��}|�||d�|��}|�|d�|d}|�|�}|d}|�d|d�|�
|�|d��|�
|ddk�dS)NrrrIr<rZr[rr\�Deleter^r_rr`ra�
statusCode�Success�statusr�rDrC�commitrg�duration)r0r*r?r'�
deleteuserr=rjrkrlrmrnrorpr`rrrqr�rP)r3rrvrwrxr�rD�messager9r9r:�test_samdb_delete_userIs:
�
�
z(AuditLogDsdbTests.test_samdb_delete_userc	Cs�d}dtd|j}|�|�d|d|j}z
|j�|�|�d�Wn	ty/Ynw|�d�}tdt	|��|�
dt	|�d�|dd	}|�
d
|d�|�|d�|�|�
�|d
�
��|�|d|j�|�
t|d�|�
d|d�|�|�|d��|��}|�
||d�|��}|�
|d�|d}|�|�}|d}|�
d|d�|�|�|d��|�|ddk�dS)N�doesNotExistrrzException not thrownrIrZr[rr\r�r^r_rr`r�zNo such objectr�rar�rDrC�rollbackrgr�)r0r*r?r'r��fail�	Exceptionr=rjrkrlrmrnrorpr`rrrrqr�rP)	r3�DOES_NOT_EXISTrrvrwrxr�rDr�r9r9r:�!test_samdb_delete_non_existent_dnksH
�
�
�
z3AuditLogDsdbTests.test_samdb_delete_non_existent_dncCs�d|j}|�|�|j|��d�}t�d|j|��|�}|jdt�	�t
jd�}t��}d|_
|j||t
jd�|jd|d	�}td
t|��|�dt|�d�|dd
}|�d|d�|�|d�|�|��|d���|�|d|j�|�|�|d��|��}|�||d�|d}	|�dt|	��|	d}
|�dt|
d��|
dd}|�d|d�|d}|�dt|��|�d|dd�|	d}
|�dt|
d��|
dd}|�d|d�|d}|�dt|��|�d|dd�|��|j||t
jd�}|�|�|jd|d	�}td
t|��|�dt|�d�d|j}|dd
}|�d|d�|�|d�|�|��|d���|�|d|j�|�|�|d��|��}|�||d�dS) Nzcn=Test Secret,CN=System,rSzncacn_np:%s�\)�system_name�attr�access_maskzG$Test)�handle�namer�rIr<rZr[rr\r�r^r_rr`rarbr;�objectClassrdr1rgr��secretr��cnzTest Secretr�)r*r?rhr%r�lsarpcr(r&�OpenPolicy2�ObjectAttributer
�SEC_FLAG_MAXIMUM_ALLOWED�String�string�CreateSecretr=rjrkrlrnrorpr`rrrqr>�
OpenSecret�DeleteObject)r3rrs�lsa_conn�
lsa_handle�secret_namervrwrxrb�object_classrgr�r��hr9r9r:�&test_create_and_delete_secret_over_lsa�s�

����
��
�

�z8AuditLogDsdbTests.test_create_and_delete_secret_over_lsac	Csdtd|j}|�|�|j�d|dddd�|jd|d	�}td
t|��|�dt|�d�|dd
}|�d|d�|�	|d�|�||d�|�
|d|j�|�|�
|d��|��}|�||d�|��}|�|d�|d}|�dt|��|dd}|�dt|��|�d|dd�|dd}|�dt|��|�d|dd�|��|j�d|dddd�|jd|d	�}td
t|��|�dt|�d�|dd
d}|�dt|��|dd}|�dt|��|�d|dd�|dd}|�dt|��|�d|dd�|��|j�d|ddddd �|jd|d	�}td
t|��|�dt|�d�|dd
d}|�dt|��|dd}|�dt|��|�d|dd�|dd}|�d!t|��|�d"|dd�|�d#|dd�|��|j�d|dd$d%dd �|jd|d	�}td
t|��|�dt|�d�|dd
d}|�dt|��|dd}|�dt|��|�d&|dd�|dd}|�d!t|��|�d"|dd�|�d#|dd�|��|j�d|dd$d'd(d)�|jd|d	�}td
t|��|�dt|�d�|dd
d}|�dt|��|dd}|�dt|��|�d*|dd�|dd}|�d!t|��|�d+|dd�|�d,|dd�dS)-Nrrr�r�r�zadd: carLicense
zcarLicense: license-01
rIr<rZr[rr\r]r^r_rr`rar�rb�
carLicenserdr1rgr�z
license-01r�zcarLicense: license-02
z
license-02zcarLicense: license-03
zcarLicense: license-04
r;z
license-03z
license-04zchangetype: delete
zdelete: carLicense
r�zreplace: carLicense
zcarLicense: license-05
zcarLicense: license-06
rfz
license-05z
license-06)r0r*r?r'r�r=rjrkrlrmrpr`rnrrrqr�r>)	r3rrvrwrxr�rbrdr�r9r9r:�test_modify�s

�����
�
�����
������
������
������zAuditLogDsdbTests.test_modifyr@)�__name__�
__module__�__qualname__r!r?rArHrPryr�r�r�r�r�r�r�r��
__classcell__r9r9r7r:r&s1
*)*&,"(Zr)�__doc__�samba.testsr��samba.dcerpc.messagingrrr'r�samba.samdbr�
samba.authrr"rL�samba.tests.audit_log_baserr�	samba.netr	�samba.dcerpcr
rr0r�r2rr9r9r9r:�<module>s