
    b6                     ^    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	  G d de          Z
dS )    N)PopenPIPE)BlackboxProcessError)NTLMAuthTestCase)
get_stringc                   r     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Z xZS )NTLMAuthHelpersTestsc                    t          t          |                                            t          j        d         | _        t          j        d         | _        t          j        d         | _        t          | 	                    d| j        z                      }|
                    d          d         | _        |                     | j                            d                     | j        d d         | _        d S )	NDC_USERNAMEDC_PASSWORDDOMAINzwbinfo -n %s r   z	S-1-5-21-)superr	   setUposenvironusernamepassworddomainr   check_outputsplit	group_sid
assertTrue
startswithbad_group_sid)selfout	__class__s     7/usr/lib/python3/dist-packages/samba/tests/ntlm_auth.pyr   zNTLMAuthHelpersTests.setUp   s    "D))//111
=1
=1j***>DM+IJJKK3*11+>>???!^CRC0    c           	          d}d}d}|                      ||||||d          }|                     |           d}d}d}|                      ||||||d          }|                     |           dS )z! ntlm_auth with specified domain foosecretFOOF)client_usernameclient_passwordclient_domainserver_usernameserver_passwordserver_domainserver_use_winbindfOoN
run_helperr   r   r   r   r   rets        r    test_specified_domainz*NTLMAuthHelpersTests.test_specified_domain%   s     ooh.6,2.6.6,216  8 8 	ooh.6,2.6.6,216  8 8 	r!   c                     |                      | j        | j        | j        d          }|                     |           dS )z ntlm_auth against winbindd T)r&   r'   r(   r,   Nr/   r   r   r   r   r   r1   s     r    test_against_winbindz)NTLMAuthHelpersTests.test_against_winbindB   sG     oodm.2m,0K15  7 7 	r!   c                 x    d}d}d}|                      ||||||ddd	  	        }|                     |           dS )	z5 ntlm_auth with NTLMSSP client and gss-spnego server r#   r$   r-   ntlmssp-client-1
gss-spnegoF	r&   r'   r(   r)   r*   r+   client_helperserver_helperr,   Nr.   r0   s        r    test_ntlmssp_gss_spnegoz,NTLMAuthHelpersTests.test_ntlmssp_gss_spnegoK   s_     ooh.6,2.6.6,2,>,816  8 8 	r!   c                 x    d}d}d}|                      ||||||ddd	  	        }|                     |           dS )	z@ ntlm_auth with NTLMSSP gss-spnego-client and gss-spnego server r#   r$   r-   gss-spnego-clientr9   Fr:   Nr.   r0   s        r    test_gss_spnegoz$NTLMAuthHelpersTests.test_gss_spnego]   s_     ooh.6,2.6.6,2,?,816  8 8 	r!   c                     |                      | j        | j        | j        ddd          }|                     |           dS )zX ntlm_auth with NTLMSSP gss-spnego-client and gss-spnego server
        against winbind r?   r9   T)r&   r'   r(   r;   r<   r,   Nr4   r5   s     r    test_gss_spnego_winbindz,NTLMAuthHelpersTests.test_gss_spnego_winbindo   sM     oodm.2m,0K,?,815  7 7 	r!   c           	          d| j         | j        | j        d| j        }d|g}|                     |d           |                     | j        | j        | j         dddd          }|                     |           d	S )
ze ntlm_auth with NTLMSSP client and gss-spnego server against
        winbind with cached credentials z--ccache-save=z%wbinfor   Tr8   r9   )r&   r'   r(   client_use_cached_credsr;   r<   r,   N)r   winbind_separatorr   r   check_exit_coder/   r   )r   param	cache_cmdr1   s       r    $test_ntlmssp_gss_spnego_cached_credsz9NTLMAuthHelpersTests.test_ntlmssp_gss_spnego_cached_creds{   s      /3kk.2.D.D.2mmm.2mm= 	Y***oodm.2m,0K6:,>,815  7 7 	r!   c                    |                      | j        | j        | j        | j        d          }|                     |           |                      | j        | j        | j        | j        d          }|                     |           dS )z7 ntlm_auth against winbindd with require-membership-of T)r&   r'   r(   require_membershipr,   Nr/   r   r   r   r   r   r   assertFalser5   s     r    test_require_membershipz,NTLMAuthHelpersTests.test_require_membership   s     oodm.2m,0K1515	  7 7
 	oodm.2m,0K151C15	  7 7
 	r!   c           	         |                      | j        | j        | j        | j        ddd          }|                     |           |                      | j        | j        | j        | j        ddd          }|                     |           dS )zs ntlm_auth with NTLMSSP gss-spnego-client and gss-spnego server
        against winbind with require-membership-of r?   r9   T)r&   r'   r(   rL   r;   r<   r,   NrM   r5   s     r    "test_require_membership_gss_spnegoz7NTLMAuthHelpersTests.test_require_membership_gss_spnego   s     oodm.2m,0K15,?,815  7 7 	oodm.2m,0K151C,?,815  7 7 	r!   c                    t          | j        d| j        ddgt          t          t                    }| j        | j        | j        d| j        d}|                    |	                    d                    \  }}| 
                    |j        d	           |                     |                    d
                     t          | j        d| j        ddgt          t          t                    }| j        | j        | j        d| j        d}|                    |	                    d                    \  }}| 
                    |j        d	           |                     |                    d                     dS )z? ntlm_auth plaintext authentication with require-membership-of --require-membership-of--helper-protocolzsquid-2.5-basicstdoutstdinstderrr   
utf-8inputr   s   OK
s   ERR
N)r   ntlm_auth_pathr   r   r   rF   r   r   communicateencodeassertEqual
returncoder   r   r   )r   proccredsr   errs        r    test_plaintext_with_membershipz3NTLMAuthHelpersTests.test_plaintext_with_membership   s    d)/)+<> "d< < < "&d.D.D!%!%0 %%ELL,A,A%BB
c!,,,w//000 d)/1C)+<> "d< < < "&!%!7!7!%!%0 %%ELL,A,A%BB
c!,,,x0011111r!   c                 0   g d}t          | j        ddddgt          t          t                    }d                    |          }|                    |                    d          	          \  }}|                     |j        d
           |                    d          }|                     t          |          d           |                     |d
         d           |                     |d         d           |                     |d         d           |                     |d         d           d|d
<   t          | j        ddddgt          t          t                    }d                    |          }|                    |                    d          	          \  }}|                     |j        d
           |                    d          }|                     t          |          d           |                     |d
         d           dS )z- ntlm_auth ntlm-server-1 with fixed password )"LANMAN-Challenge: 0123456789abcdef=NT-Response: 25a98c1c31e81847466b29b2df4680f39958fb8c213a9cc6zNT-Domain: TESTzUsername: testuserRequest-User-Session-Key: Yes.

--passwordSecREt01rT   ntlm-server-1rU   rY   rZ   r[   r      
      Authenticated: Yes   s2   User-Session-Key: 3F373EA8E4AF954F14FAA506F8EEBDC4      .   r!   z"LANMAN-Challenge: A123456789abcdef      Authenticated: NoN)
r   r]   r   joinr^   r_   r`   ra   r   lenr   	ntlm_cmdsrb   bufr   rd   liness          r    &test_ntlm_server_1_with_fixed_passwordz;NTLMAuthHelpersTests.test_ntlm_server_1_with_fixed_password   s     	 d)"J)?< "d< < < ii	""%%CJJw,?,?%@@
c!,,,		%  UQ'''q#8999!HK	M 	M 	Mq4(((q3''' <	!d)"J)?< "d< < < ii	""%%CJJw,?,?%@@
c!,,,		%  UQ'''q#788888r!   c                    d| j         z  d| j        z  d| j        z  ddg}t          | j        d| j        ddgt          t          t          	          }d
                    |          }|                    |	                    d                    \  }}| 
                    |j        d           |                    d          }| 
                    t          |          d           | 
                    |d         d           | 
                    |d         d           | 
                    |d         d           t          | j        d| j        ddgt          t          t          	          }d
                    |          }|                    |	                    d                    \  }}| 
                    |j        d           |                    d          }| 
                    t          |          d           | 
                    |d         d           | 
                    |d         d           | 
                    |d         d           dS )zA ntlm_auth ntlm-server-1 with plaintext password against winbind zPassword: %sNT-Domain: %sUsername: %sri   rj   rS   rT   rm   rU   rY   rZ   r[   r   rn   rt   rp   rq   rs   rr   r!   rv   N)r   r   r   r   r]   r   r   rw   r^   r_   r`   ra   r   rx   r   ry   s          r    )test_ntlm_server_1_with_plaintext_winbindz>NTLMAuthHelpersTests.test_ntlm_server_1_with_plaintext_winbind   s:    T]*dk)T]*+	 d)/)?< "d< < < ii	""%%CJJw,?,?%@@
c!,,,		%  UQ'''q#8999q4(((q3''' d)/1C)?< "d< < < ii	""%%CJJw,?,?%@@
c!,,,		%  UQ'''q#7888q4(((q3'''''r!   c                    ddd| j         z  d| j        z  ddg}t          | j        ddgt          t          t          	          }d
                    |          }|                    |                    d                    \  }}|                     |j	        d           |
                    d          }|                     t          |          d           |                     |d         d           dS )zO ntlm_auth ntlm-server-1 with incorrect fixed password against
        winbind rg   rh   r   r   ri   rj   rT   rm   rU   rY   rZ   r[   r   rn   ru   rv   N)r   r   r   r]   r   rw   r^   r_   r`   ra   r   rx   ry   s          r    2test_ntlm_server_1_with_incorrect_password_winbindzGNTLMAuthHelpersTests.test_ntlm_server_1_with_incorrect_password_winbind'  s    
 1Kdk)T]*+	 d))?<!d< < < ii	""%%CJJw,?,?%@@
c!,,,		%  UQ'''q#788888r!   c                     | j         d| j        d| j        d| j        dg}	 |                     |d           dS # t
          $ r }|                     |           Y d}~dS d}~ww xY w) ntlm_auth diagnostics 
--usernamerk   --domain--diagnosticsr   Nr]   r   r   r   rG   r   failr   cmd_linees      r    test_diagnosticsz%NTLMAuthHelpersTests.test_diagnostics?  s    ' $- $-#	%
	  1-----# 	 	 	IIaLLLLLLLLL	s   8 
A"AA"c           	          | j         d| j        d| j        d| j        ddg	}	 |                     |d           dS # t
          $ r }|                     |           Y d}~dS d}~ww xY w)r   r   rk   r   r   z--request-lm-keyr   Nr   r   s      r    test_diagnostics_lmz(NTLMAuthHelpersTests.test_diagnostics_lmK  s    ' $- $-#&(	  1-----# 	 	 	IIaLLLLLLLLL	s   9 
A#AA#)__name__
__module____qualname__r   r2   r6   r=   r@   rB   rJ   rO   rQ   re   r}   r   r   r   r   __classcell__)r   s   @r    r	   r	      s       1 1 1 1 1  :    $  $
 
 
  *  "  ,2 2 26)9 )9 )9V(( (( ((T9 9 90
 
 
      r!   r	   )r   
subprocessr   r   samba.testsr   samba.tests.ntlm_auth_baser   samba.commonr   r	    r!   r    <module>r      s   & 
			 " " " " " " " " , , , , , , 7 7 7 7 7 7 # # # # # #} } } } }+ } } } } }r!   