
    bl3                         d Z ddlZddlmZmZ ddlmZ ddlm	Z	 ddl
Z
ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZmZ dZ ej        dd          ZdZ ej        dd          Z G d de          ZdS )z1Tests for the SamDb logging of password changes.
    N)MSG_DSDB_PWD_LOGDSDB_PWD_EVENT_NAME)SamDB)system_session)AuditLogTestBase)delete_force)Net)ERR_INSUFFICIENT_ACCESS_RIGHTS)EVT_ID_PASSWORD_CHANGEEVT_ID_PASSWORD_RESETauditlogtestuser    auditlogtestuser02c                   R     e Zd Z fdZd Z fdZd Zd Zd Zd Z	d Z
d	 Z xZS )
AuditLogPassChangeTestsc                 x   t           | _        t          | _        t	          t
          |                                            t          j        d         | _	        dt          j        d         z  }t          |t                      |                                 |                                           | _        t          j        d         | _        | j                                        | _        | j                                        }| j                            d           |                     | j        j        |           | j                                        }| j                            d           | j                                        | _        |                     | j        j        |           t/          | j        dt0          z   dz   | j        z              t/          | j        dt2          z   dz   | j        z              | j                            dt0          z   dz   | j        z   d	t0          t6          d
           d S )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_ipr   r   get_credentialsget_loadparmldbserver	domain_dnbase_dnget_dsheuristicsset_dsheuristics
addCleanupget_minPwdAgeset_minPwdAger   	USER_NAMESECOND_USER_NAMEadd	USER_PASS)selfhostdsheuristics	minPwdAge	__class__s       C/usr/lib/python3/dist-packages/samba/tests/audit_log_pass_change.pyr%   zAuditLogPassChangeTests.setUp-   s   ,-%t,,22444K0RZ11T&4&6&6%)%9%9%;%; --//1 1 1 j* x))++ x0022 	!!+... 	1<@@@ H**,,	 	s###x))++ 	.	::: 	TXuy0<?$,NOOOH$$|3dlB	D 	D 	D 	)#l2T\A!'%	
 
 	 	 	 	 	    c                 \    |                      d|           |                                  d S )N   r   )waitForMessagesdiscardMessages)r8   r   s     r=   discardSetupMessagesz,AuditLogPassChangeTests.discardSetupMessagesa   s3    Q2&&&r>   c                 V    t          t          |                                            d S )N)r$   r   tearDown)r8   r<   s    r=   rF   z AuditLogPassChangeTests.tearDowne   s&    %t,,5577777r>   c                    dt           z   dz   | j        z   }|                     |           |                     |                                           }|                                 }t          ||| j                  }d}|                    |t           t                     | 
                    d||          }t          dt          |          z             |                     dt          |          d	           |d
         d         }|                     t          |d                    |                     d|d                    |                     ||d                    |                     |d         | j                   |                                 }|                     ||d                    |                                 }	|                     |	d           |                     |                     |d                              d S )NCN=
,CN=Users,templater,   newPassword!!42)newpasswordusernameoldpasswordr@   Received %d messages/Did not receive the expected number of messagesr   passwordChangeeventIdChangeactionr   remoteAddress	sessionIdDCE/RPCtransactionId)r4   r.   rD   insta_credsr)   r*   r	   r,   change_passwordr7   rB   printlenassertEqualr   assertRegexpMatchesrW   get_sessionget_service_description
assertTrueis_guid)
r8   r   credsr   netpasswordmessagesaudit
session_idservice_descriptions
             r=   test_net_change_passwordz0AuditLogPassChangeTests.test_net_change_passwordh   s   Y-<!!"%%%  $*>*>*@*@ AA  %DK000$%.(1 	 	3 	3 	3 ''333$s8}}4555h--K	M 	M 	M ,-/y1ABBB5?333U4[)))  !7!%!3	5 	5 	5%%''
U;%7888"::<<,i888U?%;<<=====r>   c                 *	   dt           z   dz   | j        z   }|                     |           | j                            t
          t                     dt
          z   dz   | j        z   }|                     d|          }t          dt          |          z             | 
                    dt          |          d           |d         d         }| 
                    t          |d	                    | 
                    d
|d                    | 
                    ||d                    |                     |d         | j                   |                                 }| 
                    ||d                    |                                 }| 
                    |d           |                     |                     |d                              | 
                    d|d                    | 
                    d|d                    |                                  |                     |                                 t
          t          d           }|                                 }t-          ||| j                  }d}	|                    d          }
	 |                    |	t           |
           |                     d           n# t6          $ r Y nw xY wdt           z   dz   | j        z   }|                     d||          }t          dt          |          z             | 
                    dt          |          d           |d         d         }| 
                    t          |d	                    | 
                    d
|d                    | 
                    ||d                    |                     |d         | j                   |                                 }| 
                    ||d                    |                                 }| 
                    |d           |                     |                     |d                              | 
                    t8          |d                    | 
                    d|d                    d S )NrH   rI   r@   rA   rQ   rR   r   rS   rT   ResetrV   r   rW   rX   LDAPrZ   
statusCodeSuccessstatus)rK   rO   userpasskerberos_staterL   rM   	workgrouprN   account_namedomain_namezExpected exception not thrownrY   zinsufficient access rights)r4   r.   rD   r+   newuserr5   SECOND_USER_PASSrB   r]   r^   r_   r   r`   rW   ra   rb   rc   rd   rC   r[   r)   r*   r	   r,   getset_passwordfail	Exceptionr
   )r8   r   rh   ri   rj   rk   re   r   rf   rg   domains              r=   -test_net_set_password_user_without_permissionzEAuditLogPassChangeTests.test_net_set_password_user_without_permission   s   Y-<!!"%%%)+;<<<
 %%4t|C''b'11$s8}}4555h--K	M 	M 	M ,-.i0@AAA%/222U4[)))  !7!%!3	5 	5 	5%%''
U;%7888"::<<,f555U?%;<<===E,/000E(O444  ))++%%	 ! ! !   %DK000$$$	*3)/  1 1 1 II56666 	 	 	D	 Y-<''32'66$s8}}4555h--K	M 	M 	M ,-.i0@AAA%/222U4[)))  !7!%!3	5 	5 	5%%''
U;%7888"::<<,i888U?%;<<===7|9LMMM5uXGGGGGs   2K 
KKc                    dt           z   dz   | j        z   }|                     |           |                     |                                           }|                                 }t          ||| j                  }d}|                    d          }|	                    |t           |           dt           z   dz   | j        z   }| 
                    d||          }t          d	t          |          z             |                     dt          |          d
           |d         d         }|                     t          |d                    |                     d|d                    |                     ||d                    |                     |d         | j                   |                                 }	|                     |	|d                    |                                 }
|                     |
d           |                                 }	|                     |	|d                    |                     |                     |d                              d S )NrH   rI   rJ   rL   rM   ru   rv   r@   rQ   rR   r   rS   rT   rn   rV   r   rW   rX   rY   rZ   )r4   r.   rD   r[   r)   r*   r	   r,   r{   r|   rB   r]   r^   r_   r   r`   rW   ra   rb   rc   rd   )r8   r   re   r   rf   rg   r   rh   ri   rj   rk   s              r=   test_net_set_passwordz-AuditLogPassChangeTests.test_net_set_password   sR   Y-<!!"%%%  $*>*>*@*@ AA  %DK000$$$X&/%+ 	 	- 	- 	- Y-<''333$s8}}4555h--K	M 	M 	M ,-.i0@AAA%/222U4[)))  !7!%!3	5 	5 	5%%''
U;%7888"::<<,i888%%''
U;%7888U?%;<<=====r>   c                 4   dt           z   dz   | j        z   }|                     |           t          j        dd          }| j                            d|z   dz   dz   dz   dz   t          z   dz   d	z   dz   |z   dz              |                     d
|          }t          dt          |          z             |                     d
t          |          d           |d         d         }|                     t          |d                    |                     d|d                    |                     ||d                    |                     |d         | j                   |                     |                     |d                              |                                 }|                     ||d                    |                                 }|                     |d           |                     |                     |d                              d S )Nr   r   r   dn: 
changetype: modify
zdelete: userPassword
userPassword: zadd: userPassword
r@   rA   rQ   rR   r   rS   rT   rU   rV   r   rW   rX   ro   rZ   )r4   r.   rD   sambagenerate_random_passwordr+   modify_ldifr7   rB   r]   r^   r_   r   r`   rW   rc   rd   ra   rb   r8   r   new_passwordrh   ri   rj   rk   s          r=   test_ldap_change_passwordz1AuditLogPassChangeTests.test_ldap_change_password   s>   Y-<!!"%%%5b"==RK$"#$%   )) ,00 "	"
 
  ,,
 /33	4 	4 	4 ''b'11$s8}}4555h--K	M 	M 	M ,-/y1ABBB5?333U4[)))  !7!%!3	5 	5 	5U;%788999%%''
U;%7888"::<<,f555U?%;<<=====r>   c                    dt           z   dz   | j        z   }|                     |           t          j        dd          }| j                            d|z   dz   dz   dz   dz   |z   dz              |                     d	|
          }t          dt          |          z             | 
                    d	t          |          d           |d         d         }| 
                    t          |d                    | 
                    d|d                    | 
                    ||d                    |                     |d         | j                   |                     |                     |d                              |                                 }| 
                    ||d                    |                                 }| 
                    |d           |                     |                     |d                              d S )Nr   r   r   r   r   r   zreplace: userPassword
r   r@   rA   rQ   rR   r   rS   rT   rn   rV   r   rW   rX   ro   rZ   )r4   r.   rD   r   r   r+   r   rB   r]   r^   r_   r   r`   rW   rc   rd   ra   rb   r   s          r=   test_ldap_replace_passwordz2AuditLogPassChangeTests.test_ldap_replace_password  s   Y-<!!"%%%5b"==RK$"#%&   ,, /33	4 	4 	4 ''b'11$s8}}4555h--K	M 	M 	M ,-.i0@AAA%/222U4[)))  !7!%!3	5 	5 	5U;%788999%%''
U;%7888"::<<,f555U?%;<<=====r>   c                 `   dt           z   dz   | j        z   }|                     d|          }t          dt	          |          z             |                     dt	          |          d           |d         d         }|                     t          |d	                    |                     d
|d                    |                     ||d                    |                     |d         | j                   | 	                                }|                     ||d                    | 
                                }|                     |d           |                     |                     |d                              |                     |                     |d                              d S )Nr   r   r@   rA   rQ   rR   r   rS   rT   rn   rV   r   rW   rX   ro   rZ   )r4   r.   rB   r]   r^   r_   r   r`   rW   ra   rb   rc   rd   )r8   r   rh   ri   rj   rk   s         r=   test_ldap_add_userz*AuditLogPassChangeTests.test_ldap_add_user5  s    Y-<''b'11$s8}}4555h--K	M 	M 	M ,-.i0@AAA%/222U4[)))  !7!%!3	5 	5 	5%%''
U;%7888"::<<,f555U;%788999U?%;<<=====r>   )__name__
__module____qualname__r%   rD   rF   rl   r   r   r   r   r   __classcell__)r<   s   @r=   r   r   +   s        / / / / /h  8 8 8 8 8> > >@FH FH FHP#> #> #>J> > >B> > >>> > > > > > >r>   r   )__doc__samba.testsr   samba.dcerpc.messagingr   r   samba.samdbr   
samba.authr   r&   samba.tests.audit_log_baser   r   	samba.netr	   r+   r
   samba.dcerpc.windows_event_idsr   r   r4   r   r7   r5   rz   r    r>   r=   <module>r      sG  $      H H H H H H H H       % % % % % % 				 7 7 7 7 7 7 $ $ $ $ $ $       . . . . . .        	*E*2r22	' 151"b99 c> c> c> c> c>. c> c> c> c> c>r>   