a
    a                    @   s   d dl mZ d dlZd dlmZmZ d dlZd dlm	Z
 d dlmZ d dlm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mZ d dlmZmZmZmZmZ d dlZG dd dejj j!Z"dS )    )print_functionN)srvsvc	dnsserver)libsmb_samba_internal)param)SamDB)DONT_USE_KERBEROSMUST_USE_KERBEROS)NTSTATUSError)call)LdbError)EVT_ID_SUCCESSFUL_LOGONEVT_ID_UNSUCCESSFUL_LOGONEVT_LOGON_NETWORKEVT_LOGON_INTERACTIVEEVT_LOGON_NETWORK_CLEAR_TEXTc                       s  e Zd Z fddZ fddZduddZd	d
 Zdd Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Zd=d> Z d?d@ Z!dAdB Z"dCdD Z#dEdF Z$dGdH Z%dIdJ Z&dKdL Z'dMdN Z(dOdP Z)dQdR Z*dSdT Z+dUdV Z,dWdX Z-dYdZ Z.d[d\ Z/d]d^ Z0d_d` Z1dadb Z2dcdd Z3dedf Z4dgdh Z5didj Z6dkdl Z7dmdn Z8dodp Z9dqdr Z:dsdt Z;  Z<S )vAuthLogTestsc                    s   t t|   tjd | _d S )NZ	CLIENT_IP)superr   setUposenvironZremoteAddressself	__class__ 6/usr/lib/python3/dist-packages/samba/tests/auth_log.pyr   ,   s    zAuthLogTests.setUpc                    s   t t|   d S N)r   r   tearDownr   r   r   r   r   0   s    zAuthLogTests.tearDownyesFc                 C   sJ   |   }t }||j |d| |d| tj| jd|||dS )Nzclient use spnegozclient ntlmv2 authZsysvol)lpcreds
force_smb1)	get_loadparms3paramZget_contextloadZ
configfilesetlibsmbZConnserver)r   r!   
use_spnegontlmv2_authr"   r    Zs3_lpr   r   r   smb_connection3   s    zAuthLogTests.smb_connectionc           
         s    fdd}|rd| }dkrBt  d| j|f |  |}n$dkrftd| j|f |  |}| ||}	||	 | d S )Nc                    sP   | d dkoN| d d dks,| d d koN| d d  d koN| d d kS NtypeAuthorizationserviceDescriptionDCE/RPCauthTyper   transportProtectionr   msg	authTypes
protectionservicer   r   isLastExpectedMessageC   s    z>AuthLogTests._test_rpc_ncacn_np.<locals>.isLastExpectedMessage[%s]r   zncacn_np:%s%sr   r   r(   r#   r   waitForMessages)
r   r6   r!   r8   bindingr7   checkFunctionr9   xmessagesr   r5   r   _test_rpc_ncacn_npA   s    zAuthLogTests._test_rpc_ncacn_npc                 C   s^   t tdd td|}d|v r4| |d n&d|v rJ| |d n| |ddg d S )Nc                 S   s   | S r   r   )r?   r   r   r   <lambda>`       zBAuthLogTests._assert_ncacn_np_serviceDescription.<locals>.<lambda>z[\[,\]]smb2SMB2Zsmb1SMB)listfilterrecompilesplitassertEqualassertIn)r   r=   r/   Zbinding_listr   r   r   #_assert_ncacn_np_serviceDescription[   s    z0AuthLogTests._assert_ncacn_np_serviceDescriptionc           	         s  t |}| |t |d |d }| d|d  | d|d d  | t|d d  | t|d d  | ||d d	  | |d
 |d d  |d
 }| d|d  | ||d d	  | |d |d d  | d|d d  | | |d d  |dkr fdd}|d }| d|d  | d|d d  | ||d d	  | |d |d d  | t|d d  | t|d d  d S )N/Did not receive the expected number of messagesr   Authenticationr-   NT_STATUS_OKstatuseventId	logonTyper/      authDescriptionr.      r1   rF   r2   	sessionId   c                    s   | dkp|  kS )Nr0   r   )Zdescr8   r   r   checkServiceDescription   s    zEAuthLogTests.rpc_ncacn_np_ntlm_check.<locals>.checkServiceDescription   lenrL   r   r   rN   
assertTrueis_guid)	r   r@   r6   r8   r=   r7   expected_messagesr4   r[   r   rZ   r   rpc_ncacn_np_ntlm_checkj   s^    





z$AuthLogTests.rpc_ncacn_np_ntlm_checkc                 C   s  t |}| |t |d |d }| d|d  | d|d d  | d|d d  | |d	 |d d
  | t|d d  | t|d d  |d	 }| d|d  | d|d d  | d|d d  | |d |d d
  | t|d d  | t|d d  |d }| d|d  | ||d d  | |d |d d  | d|d d  | | |d d  d S )NrO   r   rP   r-   rQ   rR   Kerberos KDCr/   rU   rV   rS   rT   rW   r.   r\   r1   rF   r2   rX   r]   r   r@   r6   r8   r=   r7   ra   r4   r   r   r   rpc_ncacn_np_krb5_check   sV    





z$AuthLogTests.rpc_ncacn_np_krb5_checkc                 C   s0   | j |  td}| g d|ddd| j d S )NtemplateZkerberos_stateNTLMSSPri   ri   ri   r   signSIGNinsta_credsget_credentialsr   rA   rb   r   r!   r   r   r   test_rpc_ncacn_np_ntlm_dns_sign   s    

z,AuthLogTests.test_rpc_ncacn_np_ntlm_dns_signc                 C   s0   | j |  td}| g d|ddd| j d S )Nrf   rh   r   rj   rk   rl   ro   r   r   r   test_rpc_ncacn_np_ntlm_srv_sign   s    

z,AuthLogTests.test_rpc_ncacn_np_ntlm_srv_signc                 C   s0   | j |  td}| g d|ddd| j d S )Nrf   ncacn_npri   ri   r    rF   rl   ro   r   r   r   test_rpc_ncacn_np_ntlm_dns   s    

z'AuthLogTests.test_rpc_ncacn_np_ntlm_dnsc                 C   s0   | j |  td}| g d|ddd| j d S )Nrf   rr   r   rt   rF   rl   ro   r   r   r   test_rpc_ncacn_np_ntlm_srv   s    

z'AuthLogTests.test_rpc_ncacn_np_ntlm_srvc                 C   s0   | j |  td}| g d|ddd| j d S )Nrf   krb5ENC-TS Pre-authenticationry   rx   r   rj   rk   rm   rn   r	   rA   re   ro   r   r   r   test_rpc_ncacn_np_krb_dns_sign   s    

z+AuthLogTests.test_rpc_ncacn_np_krb_dns_signc                 C   s0   | j |  td}| g d|ddd| j d S )Nrf   rw   r   rj   rk   rz   ro   r   r   r   test_rpc_ncacn_np_krb_srv_sign   s    

z+AuthLogTests.test_rpc_ncacn_np_krb_srv_signc                 C   s0   | j |  td}| g d|ddd| j d S )Nrf   rs   ry   ry   rx   r   rt   rF   rz   ro   r   r   r   test_rpc_ncacn_np_krb_dns
  s    

z&AuthLogTests.test_rpc_ncacn_np_krb_dnsc                 C   s0   | j |  td}| g d|ddd| j d S )Nrf   r}   r   rD   rF   rz   ro   r   r   r   test_rpc_ncacn_np_krb_dns_smb2  s    

z+AuthLogTests.test_rpc_ncacn_np_krb_dns_smb2c                 C   s0   | j |  td}| g d|ddd| j d S )Nrf   r}   r   rt   rF   rz   ro   r   r   r   test_rpc_ncacn_np_krb_srv  s    

z&AuthLogTests.test_rpc_ncacn_np_krb_srvc           
         s    fdd}|rd| }|dkr@t  d| j|f |  |}n$|dkrdtd| j|f |  |}| ||}	||	 || d S )Nc                    s@   | d dko>| d d dko>| d d  d ko>| d d kS r,   r   r3   r6   r7   r   r   r9   *  s    zBAuthLogTests._test_rpc_ncacn_ip_tcp.<locals>.isLastExpectedMessager:   r   zncacn_ip_tcp:%s%sr   r;   )
r   r6   r!   r8   r=   r7   r>   r9   Zconnr@   r   r   r   _test_rpc_ncacn_ip_tcp(  s     z#AuthLogTests._test_rpc_ncacn_ip_tcpc                 C   s  t |}| |t |d |d }| d|d  | d|d d  | |d |d d  | d	|d d
  | | |d d  |d }| d|d  | d|d d  | d|d d  | |d |d d  | t|d d  | t|d d  d S )NrO   r   r.   r-   r0   r/   rU   r1   NONEr2   rX   rP   rQ   rR   rW   rV   rS   rT   r^   rL   r_   r`   r   r   rd   r   r   r   rpc_ncacn_ip_tcp_ntlm_check@  s8    



z(AuthLogTests.rpc_ncacn_ip_tcp_ntlm_checkc                 C   s  t |}| |t |d |d }| d|d  | d|d d  | |d |d d  | d	|d d
  | | |d d  |d }| d|d  | d|d d  | d|d d  | |d |d d  | t|d d  | t|d d  |d }| d|d  | d|d d  | d|d d  | |d |d d  | t|d d  | t|d d  d S )NrO   r   r.   r-   r0   r/   rU   r1   r   r2   rX   rP   rQ   rR   rc   rW   rV   rS   rT   r   rd   r   r   r   rpc_ncacn_ip_tcp_krb5_check^  sV    






z(AuthLogTests.rpc_ncacn_ip_tcp_krb5_checkc                 C   s0   | j |  td}| g d|ddd| j d S )Nrf   ri   ncacn_ip_tcpri   r   rj   rk   rm   rn   r   r   r   ro   r   r   r   #test_rpc_ncacn_ip_tcp_ntlm_dns_sign  s    

z0AuthLogTests.test_rpc_ncacn_ip_tcp_ntlm_dns_signc                 C   s0   | j |  td}| g d|ddd| j d S )Nrf   rx   r   ry   ry   r   rj   rk   rm   rn   r	   r   r   ro   r   r   r   #test_rpc_ncacn_ip_tcp_krb5_dns_sign  s    

z0AuthLogTests.test_rpc_ncacn_ip_tcp_krb5_dns_signc                 C   s0   | j |  td}| g d|ddd| j d S )Nrf   r   r   rt   rk   r   ro   r   r   r   test_rpc_ncacn_ip_tcp_ntlm_dns  s    

z+AuthLogTests.test_rpc_ncacn_ip_tcp_ntlm_dnsc                 C   s0   | j |  td}| g d|ddd| j d S )Nrf   r   r   rt   rk   r   ro   r   r   r   test_rpc_ncacn_ip_tcp_krb5_dns  s    

z+AuthLogTests.test_rpc_ncacn_ip_tcp_krb5_dnsc                 C   s0   | j |  td}| g d|ddd| j d S )Nrf   r   r   connectr   r   ro   r   r   r   &test_rpc_ncacn_ip_tcp_ntlm_dns_connect  s    

z3AuthLogTests.test_rpc_ncacn_ip_tcp_ntlm_dns_connectc                 C   s0   | j |  td}| g d|ddd| j d S )Nrf   r   r   r   r   r   ro   r   r   r   &test_rpc_ncacn_ip_tcp_krb5_dns_connect  s    

z3AuthLogTests.test_rpc_ncacn_ip_tcp_krb5_dns_connectc                 C   s0   | j |  td}| g d|ddd| j d S )Nrf   r   r   sealSEALr   ro   r   r   r   #test_rpc_ncacn_ip_tcp_ntlm_dns_seal  s    

z0AuthLogTests.test_rpc_ncacn_ip_tcp_ntlm_dns_sealc                 C   s0   | j |  td}| g d|ddd| j d S )Nrf   r   r   r   r   r   ro   r   r   r   #test_rpc_ncacn_ip_tcp_krb5_dns_seal  s    

z0AuthLogTests.test_rpc_ncacn_ip_tcp_krb5_dns_sealc                 C   sn  dd }t dtjd  |  |  d| _| |}| dt|d |d }| d	|d
  | d|d	 d  | d|d	 d  | d|d	 d  | 	|d	 d dk | t
|d	 d  | t|d	 d  |d }| d	|d
  | d|d	 d  | d|d	 d  | d|d	 d  | 	|d	 d dk | t
|d	 d  | t|d	 d  d S )Nc                 S   s<   | d dko:| d d dko:| d d dko:| d d dkS )	Nr-   r.   r/   LDAPr2   rk   r1   rx   r   r3   r   r   r   r9     s    z5AuthLogTests.test_ldap.<locals>.isLastExpectedMessage	ldap://%sSERVERZurlr    Zcredentialsr\   rO   r   rP   r-   rQ   rR   rc   r/   ry   rV   durationrS   rT   rU   r   r   r   r#   rn   samdbr<   rL   r^   r_   r   r   r   r9   r@   r4   r   r   r   	test_ldap  sT    




zAuthLogTests.test_ldapc                 C   s   dd }t dtjd  |  |  d| _| |}| dt|d |d }| d	|d
  | d|d	 d  | d|d	 d  | d|d	 d  | 	|d	 d dk | t
|d	 d  | t|d	 d  d S )Nc                 S   s<   | d dko:| d d dko:| d d dko:| d d dkS )	Nr-   r.   r/   r   r2   r   r1   ri   r   r3   r   r   r   r9     s    z:AuthLogTests.test_ldap_ntlm.<locals>.isLastExpectedMessager   Z	SERVER_IPr   rW   rO   r   rP   r-   rQ   rR   r   r/   ri   rV   r   rS   rT   r   r   r   r   r   test_ldap_ntlm  s0    

zAuthLogTests.test_ldap_ntlmc                 C   s   dd }| j |  d}|d| | f  tdtjd  |  |d| _	| 
|}| dt|d	 |d
 }| d|d  | d|d d  | d|d d  | d|d d  | t|d d  | t|d d  d S )Nc                 S   s<   | d dko:| d d dko:| d d dko:| d d dkS )	Nr-   r.   r/   r   r2   TLSr1   simple bindr   r3   r   r   r   r9      s    zAAuthLogTests.test_ldap_simple_bind.<locals>.isLastExpectedMessagerg   %s\%s
ldaps://%sr   r   rW   rO   r   rP   r-   rQ   rR   r   r/   r   rV   rS   rT   )rm   rn   set_bind_dn
get_domainget_usernamer   r   r   r#   r   r<   rL   r^   r   r   r   r9   r!   r@   r4   r   r   r   test_ldap_simple_bind  s:    


z"AuthLogTests.test_ldap_simple_bindc                 C   s   dd }| j |  d}|d |d| | f  d}z"tdtjd  | 	 |d	| _
W n tyx   d
}Y n0 | |d
 | |}| dt|d d S )Nc                 S   s\   | d dkoZ| d d dkoZ| d d dkoZ| d d dkoZ| d d	 t koZ| d d
 tkS )Nr-   rP   r/   r   rR   NT_STATUS_WRONG_PASSWORDrV   r   rS   rT   r   r   r3   r   r   r   r9   A  s&    



zNAuthLogTests.test_ldap_simple_bind_bad_password.<locals>.isLastExpectedMessager   badPasswordr   Fr   r   r   TrU   rO   )rm   rn   set_passwordr   r   r   r   r   r   r#   r   r   rL   r<   r^   r   r9   r!   Zthrownr@   r   r   r   "test_ldap_simple_bind_bad_password@  s(    


z/AuthLogTests.test_ldap_simple_bind_bad_passwordc                 C   s   dd }| j |  d}|d| df  d}z"tdtjd  |  |d	| _W n t	yj   d
}Y n0 | 
|d
 | |}| 
dt|d d S )Nc                 S   s\   | d dkoZ| d d dkoZ| d d dkoZ| d d dkoZ| d d	 t koZ| d d
 tkS Nr-   rP   r/   r   rR   NT_STATUS_NO_SUCH_USERrV   r   rS   rT   r   r3   r   r   r   r9   a  s&    



zJAuthLogTests.test_ldap_simple_bind_bad_user.<locals>.isLastExpectedMessager   r   badUserFr   r   r   TrU   rO   rm   rn   r   r   r   r   r   r#   r   r   rL   r<   r^   r   r   r   r   test_ldap_simple_bind_bad_user`  s"    

z+AuthLogTests.test_ldap_simple_bind_bad_userc                 C   s   dd }| j |  d}|d| df  d}z"tdtjd  |  |d	| _W n t	yj   d
}Y n0 | 
|d
 | |}| 
dt|d d S )Nc                 S   s\   | d dkoZ| d d dkoZ| d d dkoZ| d d dkoZ| d d	 t koZ| d d
 tkS r   r   r3   r   r   r   r9     s&    



zRAuthLogTests.test_ldap_simple_bind_unparseable_user.<locals>.isLastExpectedMessager   r   ZabdcefFr   r   r   TrU   rO   r   r   r   r   r   &test_ldap_simple_bind_unparseable_user~  s"    

z3AuthLogTests.test_ldap_simple_bind_unparseable_userc                 C   s^   dd }| j |  d}|  tdtjd  |  |d| _| |}| 	dt
|d d S )	Nc                 S   s   dS )NTr   r3   r   r   r   r9     s    zPAuthLogTests.test_ldap_anonymous_access_bind_only.<locals>.isLastExpectedMessager   r   r   r   r   rO   )rm   rn   set_anonymousr   r   r   r#   r   r<   rL   r^   r   r9   r!   r@   r   r   r   $test_ldap_anonymous_access_bind_only  s    
z1AuthLogTests.test_ldap_anonymous_access_bind_onlyc                 C   s   dd }| j |  d}|  tdtjd  |  |d| _z"| jj| j	 d | 
d W n tyr   Y n0 | |}| d	t|d
 d S )Nc                 S   sL   | d dkoJ| d d dkoJ| d d dkoJ| d d dkoJ| d d	 d
kS )Nr-   r.   r/   r   r2   r   accountANONYMOUS LOGONr1   zno bindr   r3   r   r   r   r9     s    zFAuthLogTests.test_ldap_anonymous_access.<locals>.isLastExpectedMessager   r   r   r   )basezExpected an LdbError exceptionrU   rO   )rm   rn   r   r   r   r   r#   r   searchZ	domain_dnZfailr   r<   rL   r^   r   r   r   r   test_ldap_anonymous_access  s"    
z'AuthLogTests.test_ldap_anonymous_accessc                 C   s:  dd }| j |  d}| | | |}| dt|d |d }| d|d  | d	|d d
  | d|d d  | d|d d  | t|d d  | t|d d  |d }| d|d  | d	|d d
  | d|d d  | d|d d  | t|d d  | t|d d  d S )Nc                 S   s<   | d dko:d| d d v o:| d d dko:| d d dkS )Nr-   r.   rF   r/   r1   rx   r2   r   r3   r   r   r   r9     s    z4AuthLogTests.test_smb.<locals>.isLastExpectedMessager   r\   rO   r   rP   r-   rQ   rR   rc   r/   ry   rV   rS   rT   rU   )rm   rn   r+   r<   rL   r^   r   r   r   r   r   r   test_smb  sL    









zAuthLogTests.test_smbc                 C   s   dd }| j |  d}|t |d d}z| | W n tyT   d}Y n0 | |d | |}| dt	|d d S )	Nc                 S   s<   | d dko:| d d dko:| d d dko:| d d dkS )	Nr-   rP   r/   rc   rR   r   rV   ry   r   r3   r   r   r   r9     s    


zAAuthLogTests.test_smb_bad_password.<locals>.isLastExpectedMessager   r   FTrU   rO   )
rm   rn   set_kerberos_stater	   r   r+   r
   rL   r<   r^   r   r   r   r   test_smb_bad_password  s    	



z"AuthLogTests.test_smb_bad_passwordc                 C   s   dd }| j |  d}|t |d d}z| | W n tyT   d}Y n0 | |d | |}| dt	|d d S )	Nc                 S   s\   | d dkoZ| d d dkoZ| d d dkoZ| d d dkoZ| d d	 t koZ| d d
 tkS )Nr-   rP   r/   rc   rR   r   rV   ry   rS   rT   r   r   r3   r   r   r   r9     s*    



	
z=AuthLogTests.test_smb_bad_user.<locals>.isLastExpectedMessager   r   FTrU   rO   )
rm   rn   r   r	   set_usernamer+   r
   rL   r<   r^   r   r   r   r   test_smb_bad_user  s    



zAuthLogTests.test_smb_bad_userc                 C   s  dd }t jd }d| }d}td||ddg | |}| d	t|d
 |d }| d|d  | d|d d  | d|d d  | d|d d  | d|d d  | t|d d  | t|d d  |d }| d|d  | d|d d  | d|d d  | d|d d  | d|d d  | d|d d  | t|d d  | t|d d  d S )Nc                 S   sL   | d dkoJ| d d dkoJ| d d dkoJ| d d dkoJ| d d	 dkS )
Nr-   r.   r/   rF   r1   ri   r   r   r2   r   r3   r   r   r   r9   -  s    z?AuthLogTests.test_smb1_anonymous.<locals>.isLastExpectedMessager   	//%s/IPC$-Nbin/smbclientz-mNT1-c quitr\   rO   r   rP   r-   r   rR   rF   r/   ri   rV   No-PasswordpasswordTyperS   rT   rU   rQ   r   becameAccount	r   r   r   r<   rL   r^   r   r   r   r   r9   r(   pathZauthr@   r4   r   r   r   test_smb1_anonymous,  sj    














z AuthLogTests.test_smb1_anonymousc                 C   s  dd }t jd }d| }d}td||ddg | |}| d	t|d
 |d }| d|d  | d|d d  | d|d d  | d|d d  | d|d d  | t|d d  | t|d d  |d }| d|d  | d|d d  | d|d d  | d|d d  | d|d d  | d|d d  | t|d d  | t|d d  d S )Nc                 S   sL   | d dkoJ| d d dkoJ| d d dkoJ| d d dkoJ| d d	 d
kS )Nr-   r.   r/   rE   r1   ri   r   r   r2   rF   r   r3   r   r   r   r9   b  s    z?AuthLogTests.test_smb2_anonymous.<locals>.isLastExpectedMessager   r   r   r   z-mSMB3r   r\   rO   r   rP   r-   r   rR   rE   r/   ri   rV   r   r   rS   rT   rU   rQ   r   r   r   r   r   r   r   test_smb2_anonymousa  sj    














z AuthLogTests.test_smb2_anonymousc                 C   s   dd }| j |  td}| | | |}| dt|d |d }| d|d  | d	|d d
  | |d d ddg | d|d d  | d|d d  | t|d d  | t	|d d  d S )Nc                 S   s<   | d dko:d| d d v o:| d d dko:| d d dkS )Nr-   r.   rF   r/   r1   ri   r2   r   r3   r   r   r   r9     s    zBAuthLogTests.test_smb_no_krb_spnego.<locals>.isLastExpectedMessagerf   rW   rO   r   rP   r-   rQ   rR   r/   rF   rE   ri   rV   NTLMv2r   rS   rT   )
rm   rn   r   r+   r<   rL   r^   rM   r   r   r   r   r   r   test_smb_no_krb_spnego  s8    






z#AuthLogTests.test_smb_no_krb_spnegoc                 C   sz   dd }| j |  td}|d d}z| | W n tyL   d}Y n0 | |d | |}| dt|d d S )	Nc                 S   sl   | d dkojd| d d v oj| d d dkoj| d d dkoj| d d	 d
koj| d d t koj| d d tkS )Nr-   rP   rF   r/   rV   ri   r   r   rR   r   rS   rT   r   r3   r   r   r   r9     s&    


zOAuthLogTests.test_smb_no_krb_spnego_bad_password.<locals>.isLastExpectedMessagerf   r   FTrU   rO   	rm   rn   r   r   r+   r
   rL   r<   r^   r   r   r   r   #test_smb_no_krb_spnego_bad_password  s     



z0AuthLogTests.test_smb_no_krb_spnego_bad_passwordc                 C   sz   dd }| j |  td}|d d}z| | W n tyL   d}Y n0 | |d | |}| dt|d d S )	Nc                 S   sl   | d dkojd| d d v oj| d d dkoj| d d dkoj| d d	 d
koj| d d t koj| d d tkS )Nr-   rP   rF   r/   rV   ri   r   r   rR   r   rS   rT   r   r3   r   r   r   r9     s&    


zKAuthLogTests.test_smb_no_krb_spnego_bad_user.<locals>.isLastExpectedMessagerf   r   FTrU   rO   	rm   rn   r   r   r+   r
   rL   r<   r^   r   r   r   r   test_smb_no_krb_spnego_bad_user  s     



z,AuthLogTests.test_smb_no_krb_spnego_bad_userc                 C   s   dd }| j |  td}| j|dddd | |}| dt|d |d	 }| d
|d  | d|d
 d  | d|d
 d  | d|d
 d  | d|d
 d  | t|d
 d  | t|d
 d  d S )Nc                 S   s<   | d dko:| d d dko:| d d dko:| d d dkS )Nr-   r.   r/   rF   r1   	bare-NTLMr2   r   r3   r   r   r   r9     s    zOAuthLogTests.test_smb_no_krb_no_spnego_no_ntlmv2.<locals>.isLastExpectedMessagerf   Tnor"   r*   r)   rW   rO   r   rP   r-   rQ   rR   rF   r/   r   rV   NTLMv1r   rS   rT   )	rm   rn   r   r+   r<   rL   r^   r   r   r   r   r   r   #test_smb_no_krb_no_spnego_no_ntlmv2  s@    






z0AuthLogTests.test_smb_no_krb_no_spnego_no_ntlmv2c                 C   s   dd }| j |  td}|d d}z| j|dddd W n tyT   d}Y n0 | |d | |}| d	t|d
 d S )Nc                 S   sl   | d dkoj| d d dkoj| d d dkoj| d d dkoj| d d	 d
koj| d d t koj| d d tkS )Nr-   rP   r/   rF   rV   r   r   r   rR   r   rS   rT   r   r3   r   r   r   r9     s&    


z\AuthLogTests.test_smb_no_krb_no_spnego_no_ntlmv2_bad_password.<locals>.isLastExpectedMessagerf   r   FTr   r   rU   rO   r   r   r   r   r   0test_smb_no_krb_no_spnego_no_ntlmv2_bad_password  s(    




z=AuthLogTests.test_smb_no_krb_no_spnego_no_ntlmv2_bad_passwordc                 C   s   dd }| j |  td}|d d}z| j|dddd W n tyT   d}Y n0 | |d | |}| d	t|d
 d S )Nc                 S   sl   | d dkoj| d d dkoj| d d dkoj| d d dkoj| d d	 d
koj| d d t koj| d d tkS )Nr-   rP   r/   rF   rV   r   r   r   rR   r   rS   rT   r   r3   r   r   r   r9   0  s&    


zXAuthLogTests.test_smb_no_krb_no_spnego_no_ntlmv2_bad_user.<locals>.isLastExpectedMessagerf   r   FTr   r   rU   rO   r   r   r   r   r   ,test_smb_no_krb_no_spnego_no_ntlmv2_bad_user/  s(    




z9AuthLogTests.test_smb_no_krb_no_spnego_no_ntlmv2_bad_userc                    s   d  fdd}t jd }t jd }t jd }d|| df }td	d
|d|g | |}| |}t|}| d|dkp|dkd d S )Nr   c                    sp   | d dkon| d d dkon| d d dkon| d d dkon| d d	 d
  kon| d d t kon| d d tkS )Nr-   rP   r/   SamLogonrV   interactiverR   rQ   workstation\\%srS   rT   )r   r   r3   r   r   r   r9   S  s.    





zEAuthLogTests.test_samlogon_interactive.<locals>.isLastExpectedMessager   USERNAMEPASSWORDsamlogon %s %s %s %drU   bin/rpcclient-c-U%TrY      rO   r   r   r   r<   remove_netlogon_messagesr^   assertIsr   r9   r(   userpasswordsamlogonr@   receivedr   r   r   test_samlogon_interactiveO  s    




z&AuthLogTests.test_samlogon_interactivec                    s   d  fdd}t jd }t jd }d}d|| df }td	d
|d|g | |}| |}t|}| d|dkpz|dkd d S )Nr   c                    sp   | d dkon| d d dkon| d d dkon| d d dkon| d d	 d
  kon| d d t kon| d d tkS )Nr-   rP   r/   r   rV   r   rR   r   r   r   rS   rT   r   r   r3   r   r   r   r9   s  s2    



	

zRAuthLogTests.test_samlogon_interactive_bad_password.<locals>.isLastExpectedMessager   r   r   r   rU   r   r   r   TrY   r   rO   r   r   r   r   r   &test_samlogon_interactive_bad_passwordo  s    



z3AuthLogTests.test_samlogon_interactive_bad_passwordc                    s   d  fdd}t jd }d}t jd }d|| df }td	d
|d|g | |}| |}t|}| d|dkpz|dkd d S )Nr   c                    sp   | d dkon| d d dkon| d d dkon| d d dkon| d d	 d
  kon| d d t kon| d d tkS )Nr-   rP   r/   r   rV   r   rR   r   r   r   rS   rT   r   r3   r   r   r   r9     s2    



	

zNAuthLogTests.test_samlogon_interactive_bad_user.<locals>.isLastExpectedMessager   r   r   r   rU   r   r   r   TrY   r   rO   r   r   r   r   r   "test_samlogon_interactive_bad_user  s    



z/AuthLogTests.test_samlogon_interactive_bad_userc                    s   d  fdd}t jd }t jd }t jd }d|| df }td	d
|d|g | |}| |}t|}| d|dkp|dkd d S )Nr   c                    sp   | d dkon| d d dkon| d d dkon| d d dkon| d d	 d
  kon| d d t kon| d d tkS Nr-   rP   r/   r   rV   networkrR   rQ   r   r   rS   rT   r   r   r3   r   r   r   r9     s*    


	
zAAuthLogTests.test_samlogon_network.<locals>.isLastExpectedMessager   r   r   r   rW   r   r   r   TrY   r   rO   r   r   r   r   r   test_samlogon_network  s    




z"AuthLogTests.test_samlogon_networkc                    s   d  fdd}t jd }t jd }d}d|| df }td	d
|d|g | |}| |}t|}| d|dkpz|dkd d S )Nr   c                    sp   | d dkon| d d dkon| d d dkon| d d dkon| d d	 d
  kon| d d t kon| d d tkS )Nr-   rP   r/   r   rV   r   rR   r   r   r   rS   rT   r   r3   r   r   r   r9     s.    





zNAuthLogTests.test_samlogon_network_bad_password.<locals>.isLastExpectedMessager   r   r   r   rW   r   r   r   TrY   r   rO   r   r   r   r   r   "test_samlogon_network_bad_password  s    



z/AuthLogTests.test_samlogon_network_bad_passwordc                    s   d  fdd}t jd }d}t jd }d|| df }td	d
|d|g | |}| |}t|}| d|dkpz|dkd d S )Nr   c                    sp   | d dkon| d d dkon| d d dkon| d d dkon| d d	 d
  kon| d d t kon| d d tkS )Nr-   rP   r/   r   rV   r   rR   r   r   r   rS   rT   r   r3   r   r   r   r9     s.    





zJAuthLogTests.test_samlogon_network_bad_user.<locals>.isLastExpectedMessager   r   r   r   rW   r   r   r   TrY   r   rO   r   r   r   r   r   test_samlogon_network_bad_user  s    



z+AuthLogTests.test_samlogon_network_bad_userc                    s   d  fdd}t jd }t jd }t jd }d|| df }td	d
|d|g | |}| |}t|}| d|dkp|dkd d S )Nr   c                    s   | d dko~| d d dko~| d d dko~| d d dko~| d d	 d
ko~| d d d  ko~| d d t ko~| d d tkS )Nr-   rP   r/   r   rV   r   rR   rQ   r   MSCHAPv2r   r   rS   rT   r   r3   r   r   r   r9     s.    




zHAuthLogTests.test_samlogon_network_mschap.<locals>.isLastExpectedMessager   r   r   samlogon %s %s %s %d 0x00010000rW   r   r   r   TrY   r   rO   r   r   r   r   r   test_samlogon_network_mschap  s     




z)AuthLogTests.test_samlogon_network_mschapc                    s   d  fdd}t jd }t jd }d}d|| df }td	d
|d|g | |}| |}t|}| d|dkpz|dkd d S )Nr   c                    s   | d dko~| d d dko~| d d dko~| d d dko~| d d	 d
ko~| d d d  ko~| d d t ko~| d d tkS )Nr-   rP   r/   r   rV   r   rR   r   r   r   r   r   rS   rT   r   r3   r   r   r   r9   5  s2    


	

zUAuthLogTests.test_samlogon_network_mschap_bad_password.<locals>.isLastExpectedMessager   r   r   r   rW   r   r   r   TrY   r   rO   r   r   r   r   r   )test_samlogon_network_mschap_bad_password1  s     



z6AuthLogTests.test_samlogon_network_mschap_bad_passwordc                    s   d  fdd}t jd }d}t jd }d|| df }td	d
|d|g | |}| |}t|}| d|dkpz|dkd d S )Nr   c                    s   | d dko~| d d dko~| d d dko~| d d dko~| d d	 d
ko~| d d d  ko~| d d t ko~| d d tkS )Nr-   rP   r/   r   rV   r   rR   r   r   r   r   r   rS   rT   r   r3   r   r   r   r9   W  s2    


	

zQAuthLogTests.test_samlogon_network_mschap_bad_user.<locals>.isLastExpectedMessager   r   r   r   rW   r   r   r   TrY   r   rO   r   r   r   r   r   %test_samlogon_network_mschap_bad_userS  s     



z2AuthLogTests.test_samlogon_network_mschap_bad_userc           	         s   d  fdd}t jd }t jd }t jd }d|| f }tdd	|d
|g | |}| |}t|}| d|dkp~|dkd |d }| d|d  | d|d d  | d|d d  | d|d d  | | 	|d d  d S )Nr   c                    sp   | d dkon| d d dkon| d d dkon| d d dkon| d d	 d
  kon| d d t kon| d d tkS r   r   r3   r   r   r   r9   y  s*    


	
zGAuthLogTests.test_samlogon_schannel_seal.<locals>.isLastExpectedMessager   r   r   zschannel;samlogon %s %s %sr   r   r   TrY   r   rO   r.   r-   r0   r/   schannelr1   r   r2   rX   
r   r   r   r<   r   r^   r   rL   r_   r`   	r   r9   r(   r   r   r   r@   r   r4   r   r   r   test_samlogon_schannel_sealu  s,    





z(AuthLogTests.test_samlogon_schannel_sealc           	         s   d  fdd}t jd }t jd }t jd }d|| f }tdd	|d
|g | |}| |}t|}| d|dkp~|dkd |d }| d|d  | d|d d  | d|d d  | d|d d  | | 	|d d  d S )Nr   c                    sp   | d dkon| d d dkon| d d dkon| d d dkon| d d	 d
  kon| d d t kon| d d tkS r   r   r3   r   r   r   r9     s*    


	
zGAuthLogTests.test_samlogon_schannel_sign.<locals>.isLastExpectedMessager   r   r   zschannelsign;samlogon %s %s %sr   r   r   TrY   r   rO   r  r.   r-   r0   r/   r  r1   r   r2   rX   r  r  r   r   r   test_samlogon_schannel_sign  s0    





z(AuthLogTests.test_samlogon_schannel_sign)r   r   F)=__name__
__module____qualname__r   r   r+   rA   rN   rb   re   rp   rq   ru   rv   r{   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  __classcell__r   r   r   r   r   *   sv     
24

		




+	
	
	
	
-! "(55!   !!  !""*r   )#Z
__future__r   Zsamba.testsZsambaZsamba.dcerpcr   r   r   Zsamba.samba3r   r'   r   r$   Zsamba.samdbr   Zsamba.tests.auth_log_baseZsamba.credentialsr   r	   r
   
subprocessr   Zldbr   Zsamba.dcerpc.windows_event_idsr   r   r   r   r   rI   ZtestsZauth_log_baseZAuthLogTestBaser   r   r   r   r   <module>   s   