
    b                         d Z ddlZddlZddlmZ ddlZddlmZm	Z	m
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 dd
lmZmZ ddlmZ ddlmZmZ  G d dej        j        j                  Z dS )z5
    Tests auth logging tests that exercise SamLogon
    N)SamDB)CredentialsDONT_USE_KERBEROSCLI_CRED_NTLMv2_AUTH)ntlmsspnetlogon)AS_SYSTEM_MAGIC_PATH_TOKEN)ndr_pack)system_session)delete_force)UF_WORKSTATION_TRUST_ACCOUNTUF_PASSWD_NOTREQD)SEC_CHAN_WKSTAEVT_ID_SUCCESSFUL_LOGONEVT_LOGON_NETWORKc                   :     e Zd Z fdZ fdZd Zd Zd Z xZS )AuthLogTestsSamLogonc                    t          t          |                                            t          j                                        | _        t                      | _        t          | j        | j                  | _
        t          j        d         | _        d| _        d| _        t           | _        | j
                                        | _        d| j        d| j        | _        d S )N)session_infolpDOMAINSamLogonTest
abcdefghijzcn=z
,cn=users,)superr   setUpsambatestsenv_loadparmr   r   sessionr   ldbosenvirondomainnetbios_namemachinepassr	   remoteAddress	domain_dnbase_dnsamlogon_dnself	__class__s    ?/usr/lib/python3/dist-packages/samba/tests/auth_log_samlogon.pyr   zAuthLogTestsSamLogon.setUp.   s    "D))//111+**,,%''w   j**'7x))++ ---t||=    c                     t          t          |                                            t          | j        | j                   d S )N)r   r   tearDownr   r!   r*   r+   s    r.   r1   zAuthLogTestsSamLogon.tearDown>   s;    "D))22444TXt/00000r/   c           	          d }|rd|z  }nd}d| j         z   dz                       d          }| j                            | j        dd| j        z  t          t          t          z            |d           t                      }|
                    |                                            |                    t                     |                    | j                    |                    | j        d	z              t!          j        d
|z  |                                 |          }d}t#          j                    }	d|	_        t#          j                    }
t"          j        |
_        | j        |
_        t#          j                    }t"          j        |_        | j        |_        t#          j                    }t"          j        |_        |
||g|	_        t9          |	          }|                    t<          ||          }d}t           j        }t@          j!        j        "                                }d |D             |_#        t!          j$                    |_%        tM          |d                   |j%        _'        d |d         D             |j%        _(        t@          j!        j        )                                |_*        |+                                \  }}||j*        j,        _-        ||j*        j.        _-        |/                                |j*        j0        _-        t@          j!        j        j1        }|2                    tf          j4        d         |/                                ||||          }|\  }}}| 5                    ||          } ||           d S )Nc                     | d         dk    oc| d         d         dk    oQ| d         d         dk    o?| d         d         dk    o-| d         d	         t           k    o| d         d
         t          k    S )NtypeAuthenticationserviceDescriptionSamLogonauthDescriptionnetworkpasswordTypeNTLMv2eventId	logonTyper   )msgs    r.   isLastExpectedMessagezBAuthLogTestsSamLogon._test_samlogon.<locals>.isLastExpectedMessageD   s    F// J$%&:;zIJ$%&78IEJ $%n5AJ %&y1+,	J %&{37HHKr/   z[schannel,%s]z
[schannel]"z	utf-16-lecomputerz%s$)dnobjectclasssAMAccountNameuserAccountControl
unicodePwd$z
ncalrpc:%ss   abcdefgh   )flags	challengetarget_infor   c                 Z    g | ](}t          |t                    r|nt          |          )S  
isinstanceintord.0xs     r.   
<listcomp>z7AuthLogTestsSamLogon._test_samlogon.<locals>.<listcomp>   sD     D D D45As##/AAQD D Dr/   nt_responsec                 Z    g | ](}t          |t                    r|nt          |          )S rM   rN   rR   s     r.   rU   z7AuthLogTestsSamLogon._test_samlogon.<locals>.<listcomp>   sA     
 
 
 As##/AAQ
 
 
r/   SERVER)6r&   encoder!   addr*   r%   strr   r   r   guessget_loadparmset_secure_channel_typer   set_passwordset_usernamer   r   AV_PAIR_LISTcountAV_PAIRMsvAvNbDomainNameAvIdr$   ValueMsvAvNbComputerNameMsvAvEOLpairr
   get_ntlm_responser   $NetlogonNetworkTransitiveInformationr   dcerpcnetr_NetworkInforJ   netr_ChallengeResponsentlenlengthdatanetr_IdentityInfoidentity_infoget_ntlm_username_domaindomain_namestringaccount_nameget_workstationworkstationNetlogonValidationSamInfo4netr_LogonSamLogonExr"   r#   waitForMessages)r,   bindingcredscheckFunctionr?   utf16pwmachine_credsnetlogon_connrJ   rK   
domainnamecomputernameeoltarget_info_blobresponse
netr_flagslogon_levellogonusernamer$   validation_levelresult
validationauthoritativenetr_flags_outmessagess                             r.   _test_samlogonz#AuthLogTestsSamLogon._test_samlogonB   so   	K 	K 	K  	#%/GG"G))C/77DD"%#d&7703DDEE!# # 	$ 	$ 	$ $D--//000--n===""4#3444""4#4s#:;;; ),*@*.*;*;*=*=*79 9  	*,,_&&
!3
;
((#7!.o#&c:#K00**1E5>7G + I I 
C%6688D D9BD D D244h}566
 
-(
 
 
 $l3EEGG";;==617'.2:(/161F1F1H1H'. <0K33Jx ))++j	* * 7=3]N''(=}MMhr/   c                    |                      |          }d}|                     |t          |          d           |d         }|                     d|d                    |                     d|d         d                    |                     d|d         d	                    |                     d
|d         d                    |                     |                     |d         d                              d S )N   z/Did not receive the expected number of messagesr   Authorizationr4   zDCE/RPCr6   ncalrpcauthTypeNONEtransportProtection	sessionId)remove_netlogon_messagesassertEqualrp   
assertTrueis_guid)r,   r   expected_messagesr>   s       r.   samlogon_checkz#AuthLogTestsSamLogon.samlogon_check   s   00::*h--K	M 	M 	M
 qk#f+666o./CD	F 	F 	FC$8$DEEE_!56K!LMMMS%9+%FGGHHHHHr/   c                    |                      |                                 t                    }	 |                     d|| j                   d S # t
          $ r0}|                     dt          |          z              Y d }~d S d }~ww xY w)N)templatekerberos_stateSEALzUnexpected exception: )insta_credsget_credentialsr   r   r   	Exceptionfailr[   )r,   r   es      r.   test_ncalrpc_samlogonz*AuthLogTestsSamLogon.test_ncalrpc_samlogon   s      $*>*>*@*@0A ! C C	9t/BCCCCC 	9 	9 	9II.Q7888888888	9s   A 
B%BB)	__name__
__module____qualname__r   r1   r   r   r   __classcell__)r-   s   @r.   r   r   ,   s        > > > > > 1 1 1 1 1Y  Y  Y vI I I"9 9 9 9 9 9 9r/   r   )!__doc__samba.testsr   r"   samba.samdbr   samba.tests.auth_log_basesamba.credentialsr   r   r   samba.dcerpcr   r   samba.dcerpc.dcerpcr	   	samba.ndrr
   
samba.authr   r   
samba.dsdbr   r   samba.dcerpc.miscr   samba.dcerpc.windows_event_idsr   r   r   auth_log_baseAuthLogTestBaser   rM   r/   r.   <module>r      sp  $      				                       
 + * * * * * * * : : : : : :       % % % % % % $ $ $ $ $ $ F F F F F F F F , , , , , ,       I9 I9 I9 I9 I95;4D I9 I9 I9 I9 I9r/   