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/dcerpc/__pycache__/raw_protocol.cpython-310.pyc
o

��a�~�@s�ddlZddlZddlZej�dd�dejd<ddlmmZddlmm	Z	ddl
mmZddlZ
ddlZ
ddlZ
ddlZ
ddlZddl
mZddlmZddlmZdZdZGd	d
�d
e�ZedkrwdZdZddlZe��dSdS)
�Nz
bin/python�1�PYTHONUNBUFFERED)�gensec)�
RawDCERPCTest)�NT_STATUS_SUCCESSFcs2	eZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Zd;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-dWe.j/fdXdY�Z0e.j/fdZd[�Z1d\d]�Z2d^d_�Z3d`da�Z4dbdc�Z5ddde�Z6dfdg�Z7dhdi�Z8djdk�Z9dldm�Z:dndo�Z;dpdq�Z<drds�Z=dtdu�Z>dvdw�Z?dxdy�Z@dzd{�ZAd|d}�ZBd~d�ZCd�d��ZDd�d��ZEd�d��ZFd�d��ZGd�d��ZHd�d��ZId�d��ZJd�d��ZKd�d��ZL	�	�	W	W	�	�	W	W	W	W	W	W�d�d�d��ZM	�	W	W	�	�	W	W	W	W	W	W�d�d�d��ZN	�	W	W	�	�	W	W	W	W	W	W�d�d�d��ZOd�d��ZPd�d��ZQd�d��ZRd�d��ZSd�d��ZTd�d��ZUd�d��ZVd�d��ZWd�d��ZXd�d��ZYd�d��ZZd�d��Z[d�d��Z\d�d��Z]	W	�	�	W	W	W	W	W�d�d�d��Z^d�d��Z_d�d��Z`d�d��Zad�d��Zbd�d��Zcd�dÄZdd�dńZed�dDŽZfd�dɄZgd�d˄Zhd�d̈́Zid�dτZj	W	W	W	W	W�d�d�dфZkd�dӄZld�dՄZmd�dׄZnd�dلZod�dۄZpd�d݄Zqd�d߄Zrd�d�Zsd�d�Ztd�d�Zu	W	W�d�d�d�Zvd�d�Zwd�d�Zxd�d�Zyd�d�Zzd�d�Z{�d�d�d�Z|d�d��Z}d�d��Z~d�d��Zd�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"�d#�Z��d$�d%�Z��d&�d'�Z��d(�d)�Z��d*�d+�Z��d,�d-�Z��d.�d/�Z��d0�d1�Z��d2�d3�Z��d4�d5�Z��d6�d7�Z��d8�d9�Z��d:�d;�Z��d<�d=�Z��d>�d?�Z��d@�dA�Z�e.j�d�dWf�dB�dC�Z�e.j�f�dD�dE�Z�e.j�dWdW�dFf�dG�dH�Z��dI�dJ�Z��dK�dL�Z��dM�dN�Z��dO�dP�Z��dQ�dR�Z��dS�dT�Z��dU�dV�Z��dW�dX�Z��dY�dZ�Z��d[�d\�Z��d]�d^�Z��d_�d`�Z��da�db�Z��dc�dd�Z��de�df�Z��dg�dh�Z��di�dj�Z��dǐdk�dl�Z��dm�dn�Z��do�dp�Z��dq�dr�Z��ds�dt�Z��du�dv�Z��dw�dx�Z��dy�dz�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��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�Z�S(��TestDCERPC_BINDcstt|���t|_t|_dS�N)�superr�setUp�global_ndr_print�do_ndr_print�global_hexdump�
do_hexdump��self��	__class__��A/usr/lib/python3/dist-packages/samba/tests/dcerpc/raw_protocol.pyr
.s
zTestDCERPC_BIND.setUpcCs�t��}|g}t��}d|_t|�|_tjj�	�|_	||_
|jd||gd�}|�|�|�
�}|j|tj|j|dd�|�|jj|jj�|�|jj|jj�|�|jj|jj�|�|jjd�|�|jjd|j�|�|jjd�|�|jjd�|�|jjdjtj�|�|jjdjtj �|�!|jjdj"|�|�|jj#d�|j$d|jddd	�}|�|�|�
�}|j|tj%|jdd
�|�|jj&d�|�|jj|jj�|�|jj'd�|�(t|jj)�|jj&�dS)N�r��call_id�	pfc_flags�ctx_list�r�auth_length��%d���r�
context_id�opnum�stub�r�*�base�transfer_syntax_ndr�dcerpcrr!�len�num_transfer_syntaxes�samba�mgmt�abstract_syntax�transfer_syntaxes�
generate_bind�send_pdu�recv_pdu�
verify_pdu�DCERPC_PKT_BIND_ACKr�assertEqual�u�
max_xmit_frag�
max_recv_frag�assertNotEqual�assoc_group_id�secondary_address_size�secondary_address�tcp_port�
assertPadding�_pad1�num_results�result�!DCERPC_BIND_ACK_RESULT_ACCEPTANCE�reason�$DCERPC_BIND_ACK_REASON_NOT_SPECIFIED�assertNDRSyntaxEquals�syntax�	auth_info�generate_request�DCERPC_PKT_RESPONSE�
alloc_hint�cancel_count�assertGreaterEqual�stub_and_verifier�r�
req_pfc_flags�
rep_pfc_flags�ndr32�	tsf1_list�ctx1�req�reprrr�$_test_no_auth_request_bind_pfc_flags3sT

����
�z4TestDCERPC_BIND._test_no_auth_request_bind_pfc_flagscCs�t��}|g}t��}d|_t|�|_tjj�	�|_	||_
|jd|gd�}|�|�|�
�}|j|tj|jdd�|�|jj|jj�|�|jj|jj�|�|jj|jj�|�|jjd�|�|jjd|j�|�|jjd�|�|jjd�|�|jjdjtj�|�|jjdjtj �|�!|jjdj"|�|�|jj#d�|j$d||gd	�}|�|�|�
�}|j|tj%|j|dd
�|�|jj|jj�|�|jj|jj�|�|jj|jj�|�|jjd�|�|jjd�|�|jjd�|�|jjd�|�|jjdjtj�|�|jjdjtj �|�!|jjdj"|�|�|jj#d�|j&d|jddd�}|�|�|�
�}|j|tj'|jdd�|�|jj(d�|�|jj|jj�|�|jj)d�|�*t|jj+�|jj(�dS)
Nrr�rrr$rrrrrr�r ),r&r'r(rr!r)r*r+r,r-r.r/r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErF�generate_alter�DCERPC_PKT_ALTER_RESPrGrHrIrJrKrLrMrrr�%_test_no_auth_request_alter_pfc_flags^s~

���
����
�z5TestDCERPC_BIND._test_no_auth_request_alter_pfc_flagscCs&|jdtjBtjBdtjBtjBd�S�Nr�rNrO�rUr(�DCERPC_PFC_FLAG_FIRST�DCERPC_PFC_FLAG_LASTrrrr�test_no_auth_request�s�����z$TestDCERPC_BIND.test_no_auth_requestcC�|jddtjBtjBd�Sr[r]rrrr� test_no_auth_request_bind_pfc_00�����z0TestDCERPC_BIND.test_no_auth_request_bind_pfc_00cC�$|jdtjBdBdtjBtjBd�Sr[r]rrrr�#test_no_auth_request_bind_pfc_FIRST�������z3TestDCERPC_BIND.test_no_auth_request_bind_pfc_FIRSTcC�$|jdtjBdBdtjBtjBd�Sr[)rUr(r_r^rrrr�"test_no_auth_request_bind_pfc_LAST�rfz2TestDCERPC_BIND.test_no_auth_request_bind_pfc_LASTcC�*|jdtjBdBdtjBtjBtjBd�Sr[)rUr(�#DCERPC_PFC_FLAG_SUPPORT_HEADER_SIGNr^r_rrrr�)test_no_auth_request_bind_pfc_HDR_SIGNING��������z9TestDCERPC_BIND.test_no_auth_request_bind_pfc_HDR_SIGNINGcC�|jddtjBtjBd�S�N�rr\r]rrrr� test_no_auth_request_bind_pfc_08�����z0TestDCERPC_BIND.test_no_auth_request_bind_pfc_08cCrir[)rUr(�DCERPC_PFC_FLAG_CONC_MPXr^r_rrrr�&test_no_auth_request_bind_pfc_CONC_MPX�rlz6TestDCERPC_BIND.test_no_auth_request_bind_pfc_CONC_MPXcC�$|jdtjBdBdtjBtjBd�Sr[)rUr(�DCERPC_PFC_FLAG_DID_NOT_EXECUTEr^r_rrrr�-test_no_auth_request_bind_pfc_DID_NOT_EXECUTE�rfz=TestDCERPC_BIND.test_no_auth_request_bind_pfc_DID_NOT_EXECUTEcCrtr[)rUr(�DCERPC_PFC_FLAG_MAYBEr^r_rrrr�#test_no_auth_request_bind_pfc_MAYBE�rfz3TestDCERPC_BIND.test_no_auth_request_bind_pfc_MAYBEcCrtr[)rUr(�DCERPC_PFC_FLAG_OBJECT_UUIDr^r_rrrr�)test_no_auth_request_bind_pfc_OBJECT_UUID�rfz9TestDCERPC_BIND.test_no_auth_request_bind_pfc_OBJECT_UUIDcCs&|jddtjBtjBtjBtjBd�S�N�rr\)rUr(r^r_rjrrrrrr�!_test_no_auth_request_bind_pfc_ff�s�����z1TestDCERPC_BIND._test_no_auth_request_bind_pfc_ffcCrar[�rZr(r^r_rrrr�!test_no_auth_request_alter_pfc_00rcz1TestDCERPC_BIND.test_no_auth_request_alter_pfc_00cCrdr[r~rrrr�$test_no_auth_request_alter_pfc_FIRSTrfz4TestDCERPC_BIND.test_no_auth_request_alter_pfc_FIRSTcCrgr[)rZr(r_r^rrrr�#test_no_auth_request_alter_pfc_LASTrfz3TestDCERPC_BIND.test_no_auth_request_alter_pfc_LASTcCrir[)rZr(rjr^r_rrrr�*test_no_auth_request_alter_pfc_HDR_SIGNING!rlz:TestDCERPC_BIND.test_no_auth_request_alter_pfc_HDR_SIGNINGcCrmrnr~rrrr�!test_no_auth_request_alter_pfc_08+rqz1TestDCERPC_BIND.test_no_auth_request_alter_pfc_08cCrtr[)rZr(rrr^r_rrrr�'test_no_auth_request_alter_pfc_CONC_MPX4rfz7TestDCERPC_BIND.test_no_auth_request_alter_pfc_CONC_MPXcCrtr[)rZr(rur^r_rrrr�.test_no_auth_request_alter_pfc_DID_NOT_EXECUTE=rfz>TestDCERPC_BIND.test_no_auth_request_alter_pfc_DID_NOT_EXECUTEcCrtr[)rZr(rwr^r_rrrr�$test_no_auth_request_alter_pfc_MAYBEFrfz4TestDCERPC_BIND.test_no_auth_request_alter_pfc_MAYBEcCrtr[)rZr(ryr^r_rrrr�*test_no_auth_request_alter_pfc_OBJECT_UUIDOrfz:TestDCERPC_BIND.test_no_auth_request_alter_pfc_OBJECT_UUIDcCs |jddtjBtjBtjBd�Sr{)rZr(r^r_rjrrrr�!test_no_auth_request_alter_pfc_ffXs����z1TestDCERPC_BIND.test_no_auth_request_alter_pfc_ffcCs�|jdd�}|�|�|��}|j|tj|jdd�|�|jj	tj
�|�|jjd�|�|jjdj
|j
�|�|jjdj|j�|�|jjd�dS�Nr�rr$r�)r/r0r1r2r(�DCERPC_PKT_BIND_NAKrr4r5�
reject_reason�$DCERPC_BIND_NAK_REASON_NOT_SPECIFIED�num_versions�versions�rpc_vers�rpc_vers_minorr=�_pad�rrSrTrrr�test_no_auth_no_ctxbs
�
�z#TestDCERPC_BIND.test_no_auth_no_ctxcCs�|jdd�}tj|_|�|�|��}|j|tj|jdd�|�	|j
jtj�|�	|j
j
d�|�	|j
jdj|j�|�	|j
jdj|j�|�|j
jd�dSr�)r/r(�DCERPC_AUTH_TRAILER_LENGTHrr0r1r2r�rr4r5r��5DCERPC_BIND_NAK_REASON_PROTOCOL_VERSION_NOT_SUPPORTEDr�r�r�r�r=r�r�rrr�test_invalid_auth_noctxps
�
�z'TestDCERPC_BIND.test_invalid_auth_noctxcCs4t��}|g}t��}d|_t|�|_tjj�	�|_	||_
|jd|gd�}|�|�|�
�}|j|tj|jdd�|�|jj|jj�|�|jj|jj�|�|jj|jj�|�|jjd�|�|jjd|j�|�|jjd�|�|jjd�|�|jjdjtj�|�|jjdjtj �|�!|jjdj"|�|�|jj#d�|g}t��}d|_t|�|_tjj�	�|_	||_
|jd|gd�}|�|�|�
�}|j|tj$|jdd�|�|jj%tj&�|�|jj'd�|�|jj(dj)|j)�|�|jj(dj*|j*�|�|jj+d	�|�
�}|�,|�|�-�dS)
NrrrVr$rrrrr�).r&r'r(rr!r)r*r+r,r-r.r/r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFr�r�r�r�r�r�r�r��assertIsNone�assertNotConnected)rrPrQrRrSrT�	tsf2_list�ctx2rrr� test_no_auth_valid_valid_request~sd

���

�
�
z0TestDCERPC_BIND.test_no_auth_valid_valid_requestcCs�|jdd�}|�|�|��}|j|tj|jdd�|�|jj	tj
�|�|jjd�|�|jjdj
|j
�|�|jjdj|j�|�|jjd�|��}|�|�|��dSr�)r/r0r1r2r(r�rr4r5r�r�r�r�r�r�r=r�r�r�r�rrr�"test_no_auth_invalid_valid_request�s 
�
�
z2TestDCERPC_BIND.test_no_auth_invalid_valid_requestcCst��}|g}t��}d|_t|�|_tjj�	�|_	||_
|jd|gd�}|�|�|�
�}|j|tj|jdd�|�|jj|jj�|�|jj|jj�|�|jj|jj�|�|jjd�|�|jjd|j�|�|jjd�|�|jjd�|�|jjdjtj�|�|jjdjtj �|�!|jjdj"|�|�|jj#d�|j$dgd�}|�|�|�
�}|j|tj%|j|j&tj'Bdd	�|�|jj(d�|�|jjd�|�|jj)d�|�|jj*d�|�|jj+tj,�|�|jj-d�|�t|jj.�d�|�
�}|�/|�|�0�dS�
NrrrVr$rrrrr)1r&r'r(rr!r)r*r+r,r-r.r/r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFrX�DCERPC_PKT_FAULTrrurIrJ�flags�status�DCERPC_NCA_S_PROTO_ERROR�reserved�error_and_verifierr�r�)rrPrQrRrSrTrrr�test_alter_no_auth_no_ctx�s^

���
��
z)TestDCERPC_BIND.test_alter_no_auth_no_ctxcCst��}t��}||g}t��}d|_t|�|_t	jj
��|_||_|j
d|gd�}|�|�|��}|j|tj|jdd�|�|jj|jj�|�|jj|jj�|�|jj|jj�|�|jjd�|�|jjd|j�|�|jjd�|�|jjd�|�|jjdjtj �|�|jjdj!tj"�|�#|jjdj$|�|�|jj%d�|j&d|gd�}|�|�|��}|j|tj'|jdd�|�|jj|jj�|�|jj|jj�|�|jj|jj�|�|jjd�|�|jjd�|�|jjd�|�|jjdjtj �|�|jjdj!tj"�|�#|jjdj$|�|�|jj%d�|j(d|jd	dd
�}|�|�|��}|j|tj)|j|j*tj+Bdd�|�|jj,d�|�|jj|j�|�|jj-d�|�|jj.d�|�|jj/tj0�|�|jj1d�|�t|jj2�d�dS�NrrrVr$rrrr�r r)3r&r'�misc�
ndr_syntax_idr(rr!r)r*r+r,r-r.r/r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFrXrYrGr�rrurIrJr�r��DCERPC_NCA_S_OP_RNG_ERRORr�r��rrP�zero_syntaxrQrRrSrTrrr�$test_no_auth_presentation_ctx_valid1�s�

���
����
��z4TestDCERPC_BIND.test_no_auth_presentation_ctx_valid1cCs�t��}t��}|g}t��}d|_t|�|_||_	||_
|jd|gd�}|�|�|�
�}|j|tj|jdd�|�|jj|jj�|�|jj|jj�|�|jj|jj�|�|jjd�|�|jjd|j�|�|jjd�|�|jjd�|�|jjdjtj�|�|jjdjtj �|�!|jjdj"|�|�|jj#d�|j$d|gd�}|�|�|�
�}|j|tj%|jdd�|�|jj|jj�|�|jj|jj�|�|jj|jj�|�|jjd�|�|jjd�|�|jjd�|�|jjdjtj�|�|jjdjtj �|�!|jjdj"|�|�|jj#d�|j&dd	ddd
�}|�|�|�
�}|j|tj'|j|j(tj)Bdd�|�|jj*d�|�|jjd�|�|jj+d�|�|jj,d�|�|jj-tj.�|�|jj/d�|�t|jj0�d�|j$d|gd�}|�|�|�
�}|j|tj%|jdd�|�|jj|jj�|�|jj|jj�|�|jj|jj�|�|jjd�|�|jjd�|�|jjd�|�|jjdjtj�|�|jjdjtj �|�!|jjdj"|�|�|jj#d�dS)
NrrrVr$rrrri90r rr�)1r&r'r�r�r(rr!r)r*r-r.r/r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@�)DCERPC_BIND_ACK_RESULT_PROVIDER_REJECTIONrB�4DCERPC_BIND_ACK_REASON_ABSTRACT_SYNTAX_NOT_SUPPORTEDrDrErFrXrYrGr�rrurIrJr�r��DCERPC_NCA_S_UNKNOWN_IFr�r�r�rrr�&test_no_auth_presentation_ctx_invalid1=s�

���
����
��
���z6TestDCERPC_BIND.test_no_auth_presentation_ctx_invalid1cCs�t��}t��}g}t��}d|_t|�|_t	jj
��|_||_|j
d|gd�}|�|�|��}|j|tj|jdd�|�|jjtj�|�|jjd�|�|jjdj|j�|�|jjdj|j�|�|jjd�|��}|�|�|��dS)NrrrVr$r�)r&r'r�r�r(rr!r)r*r+r,r-r.r/r0r1r2r�rr4r5r�r�r�r�r�r�r=r�r�r�)rrPr��
tsf1a_list�ctx1arSrTrrr�&test_no_auth_presentation_ctx_invalid2�s0

�
�
z6TestDCERPC_BIND.test_no_auth_presentation_ctx_invalid2c	Cs^t��}t��}||||g}t��}d|_t|�|_t	jj
��|_||_|j
d|gd�}|�|�|��}|j|tj|jdd�|�|jj|jj�|�|jj|jj�|�|jj|jj�|�|jjd�|�|jjd|j�|�|jjd�|�|jjd�|�|jjdjtj �|�|jjdj!tj"�|�#|jjdj$|�|�|jj%d�g}t��}d|_t|�|_t	jj
��|_||_|j&d|gd�}|�|�|��}|j|tj'|j|j(tj)Bdd	�|�|jj*d�|�|jjd�|�|jj+d�|�|jj,d�|�|jj-tj.�|�|jj/d�|�t|jj0�d�|��}|�1|�|�2�dSr�)3r&r'r�r�r(rr!r)r*r+r,r-r.r/r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFrXr�rrurIrJr�r�r�r�r�r�r��	rrPr�r�r�rSrT�
tsf1b_list�ctx1brrr�&test_no_auth_presentation_ctx_invalid3�sl

���

��
z6TestDCERPC_BIND.test_no_auth_presentation_ctx_invalid3c
Cstt��}t��}t��}||||g}t��}d|_t|�|_	t
jj��|_||_
|jd|gd�}|�|�|��}|j|tj|jdd�|�|jj|jj�|�|jj|jj�|�|jj|jj�|�|jjd�|�|jjd|j�|�|jjd�|�|jjd�|�|jjdj tj!�|�|jjdj"tj#�|�$|jjdj%|�|�|jj&d�|t
jj'��|g}t��}	d|	_t|�|	_	t
jj��|	_||	_
|j(d|	gd�}|�|�|��}|j|tj)|j|j*tj+Bdd	�|�|jj,d�|�|jjd�|�|jj-d�|�|jj.d�|�|jj/tj0�|�|jj1d�|�t|jj2�d�|��}|�3|�|�4�dSr�)5r&r'�transfer_syntax_ndr64r�r�r(rr!r)r*r+r,r-r.r/r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErF�epmapperrXr�rrurIrJr�r�r�r�r�r�r�)
rrP�ndr64r�r�r�rSrTr�r�rrr�&test_no_auth_presentation_ctx_invalid4�sn

���

��
z6TestDCERPC_BIND.test_no_auth_presentation_ctx_invalid4c	CsPt��}t��}||||g}t��}d|_t|�|_t	jj
��|_||_|j
d|gd�}|�|�|��}|j|tj|jdd�|�|jj|jj�|�|jj|jj�|�|jj|jj�|�|jjd�|�|jjd|j�|�|jjd�|�|jjd�|�|jjdjtj �|�|jjdj!tj"�|�#|jjdj$|�|�|jj%d�|t	jj&��g}t��}d|_t|�|_t	jj
��|_||_|j'd|gd�}|�|�|��}|j|tj(|jdd�|�|jj|jj�|�|jj|jj�|�|jj|jj�|�|jjd�|�|jjd�|�|jjd�|�|jjdjtj)�|�|jjdj!tj*�|�#|jjdj$|�|�|jj%d�|j+d|jd	dd
�}|�|�|��}|j|tj,|j|j-tj.Bdd�|�|jj/d�|�|jj|j�|�|jj0d�|�|jj1d�|�|jj2tj3�|�|jj4d�|�t|jj5�d�dSr�)6r&r'r�r�r(rr!r)r*r+r,r-r.r/r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFr�rXrYr��6DCERPC_BIND_ACK_REASON_TRANSFER_SYNTAXES_NOT_SUPPORTEDrGr�rrurIrJr�r�r�r�r�r�rrr�$test_no_auth_presentation_ctx_valid2*s�

���

����
��z4TestDCERPC_BIND.test_no_auth_presentation_ctx_valid2cCs8t��}t��}|g}t��}d|_t|�|_||_	||_
|jd|gd�}|�|�|�
�}|j|tj|jdd�|�|jj|jj�|�|jj|jj�|�|jj|jj�|�|jjd�|�|jjd|j�|�|jjd�|�|jjd�|�|jjdjtj�|�|jjdjtj �|�!|jjdj"|�|�|jj#d	�|g}t��}d|_t|�|_t$jj%�	�|_	||_
|j&d|gd�}|�|�|�
�}|j|tj'|jdd�|�|jj|jj�|�|jj|jj�|�|jj|jj�|�|jjd�|�|jjd�|�|jjd�|�|jjdjtj(�|�|jjdjtj)�|�!|jjdj"|�|�|jj#d	�|j*d|jdd	d
�}|�|�|�
�}|j|tj+|jdd�|�|jj,d�|�|jj|jj�|�|jj-d�|�.t|jj/�|jj,�||g}	t��}
d|
_t|	�|
_t$jj%�	�|
_	|	|
_
|j&d|
gd�}|�|�|�
�}|j|tj'|jdd�|�|jj|jj�|�|jj|jj�|�|jj|jj�|�|jjd�|�|jjd�|�|jjd�|�|jjdjtj(�|�|jjdjtj)�|�!|jjdj"|�|�|jj#d	�|j*d|
jdd	d
�}|�|�|�
�}|j|tj+|jdd�|�|jj,d�|�|jj|jj�|�|jj-d�|�.t|jj/�|jj,�||g}t��}d|_t|�|_t$jj%�	�|_	||_
|j&d|gd�}|�|�|�
�}|j|tj'|jdd�|�|jj|jj�|�|jj|jj�|�|jj|jj�|�|jjd�|�|jjd�|�|jjd�|�|jjdjtj(�|�|jjdjtj)�|�!|jjdj"|�|�|jj#d	�|j*d|jdd	d
�}|�|�|�
�}|j|tj+|jdd�|�|jj,d�|�|jj|jj�|�|jj-d�|�.t|jj/�|jj,�|g}
t��}d|_t|
�|_t$jj%�	�|_	|
|_
|g}t��}d|_t|�|_t$jj%�	�|_	||_
|j&d||gd�}|�|�|�
�}|j|tj'|jdd�|�|jj|jj�|�|jj|jj�|�|jj|jj�|�|jjd�|�|jjd�|�|jjd�|�|jjdjtj(�|�|jjdjtj)�|�!|jjdj"|�|�|jjdjtj�|�|jjdjtj0�|�!|jjdj"|�|�|jj#d	�|j*d|jdd	d
�}|�|�|�
�}|j|tj+|jdd�|�|jj,d�|�|jj|jj�|�|jj-d�|�.t|jj/�|jj,�|j&d
||gd�}|�|�|�
�}|j|tj'|jdd�|�|jj|jj�|�|jj|jj�|�|jj|jj�|�|jjd�|�|jjd�|�|jjd�|�|jjdjtj(�|�|jjdjtj)�|�!|jjdj"|�|�|jjdjtj�|�|jjdjtj0�|�!|jjdj"|�|�|jj#d	�|j*d|jdd	d
�}|�|�|�
�}|j|tj+|jdd�|�|jj,d�|�|jj|jj�|�|jj-d�|�.t|jj/�|jj,�|j*d|jdd	d
�}|�|�|�
�}|j|tj+|jdd�|�|jj,d�|�|jj|jj�|�|jj-d�|�.t|jj/�|jj,�|j&d||gd�}|�|�|�
�}|j|tj'|jdd�|�|jj|jj�|�|jj|jj�|�|jj|jj�|�|jjd�|�|jjd�|�|jjd�|�|jjdjtj(�|�|jjdjtj)�|�!|jjdj"|�|�|jjdjtj�|�|jjdjtj0�|�!|jjdj"|�|�|jj#d	�|j*d|jdd	d
�}|�|�|�
�}|j|tj+|jdd�|�|jj,d�|�|jj|jj�|�|jj-d�|�.t|jj/�|jj,�|j*d|jdd	d
�}|�|�|�
�}|j|tj+|jdd�|�|jj,d�|�|jj|jj�|�|jj-d�|�.t|jj/�|jj,�|g}t��}d|_t|�|_t$jj%�	�|_	||_
|g}t��}d|_t|�|_t$jj%�	�|_	||_
|j&d||gd�}|�|�|�
�}|j|tj'|jdd�|�|jj|jj�|�|jj|jj�|�|jj|jj�|�|jjd�|�|jjd�|�|jjd�|�|jjdjtj(�|�|jjdjtj)�|�!|jjdj"|�|�|jjdjtj�|�|jjdjtj0�|�!|jjdj"|�|�|jj#d	�|j*d|jdd	d
�}|�|�|�
�}|j|tj+|jdd�|�|jj,d�|�|jj|jj�|�|jj-d�|�.t|jj/�|jj,�|j&d||gd�}|�|�|�
�}|j|tj'|jdd�|�|jj|jj�|�|jj|jj�|�|jj|jj�|�|jjd�|�|jjd�|�|jjd�|�|jjdjtj(�|�|jjdjtj)�|�!|jjdj"|�|�|jjdjtj�|�|jjdjtj0�|�!|jjdj"|�|�|jj#d	�|j*d|jdd	d
�}|�|�|�
�}|j|tj+|jdd�|�|jj,d�|�|jj|jj�|�|jj-d�|�.t|jj/�|jj,�dS)Ni1�rrVr$rrrrrr r��"�+�,��7)1r&r'r�r�r(rr!r)r*r-r.r/r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@r�rBr�rDrErFr+r,rXrYrArCrGrHrIrJrKrLr�)rrPr��	tsfZ_list�ctxZrSrT�	tsf0_list�ctx0rQrRr�r��	tsf3_list�ctx3�	tsf4_list�ctx4�
tsf5mgmt_list�ctx5mgmt�tsf5epm_list�ctx5epmrrr�&test_no_auth_presentation_ctx_no_ndr64ws,

���

����
�

����
�

����
�


������
�
������
��
�
������
��
�


������
�
������
�z6TestDCERPC_BIND.test_no_auth_presentation_ctx_no_ndr64cCsRd}t�|�}t��}|g}t��}d|_t|�|_||_	||_
|jd|gd�}|�|�|�
�}|j|tj|jdd�|�|jj|jj�|�|jj|jj�|�|jj|jj�|�|jjd�|�|jjd|j�|�|jjd�|�|jjd�|�|jjdjtj�|�|jjdj|�|� |jjdj!|�|�|jj"d�dS�	NrrrVr$rrrr)#r&�bind_time_features_syntaxr�r�r(rr!r)r*r-r.r/r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@�$DCERPC_BIND_ACK_RESULT_NEGOTIATE_ACKrBrDrErF�r�features�btfr�rQrRrSrTrrr�"test_no_auth_bind_time_none_simple�s8


��z2TestDCERPC_BIND.test_no_auth_bind_time_none_simplecCsxd}t�|�}tj}|tjO}t�|�}t��}t��}|||g}t��}d|_	t
|�|_||_||_
|jd|gd�}	|�|	�|��}
|j|
tj|	jdd�|�|
jj|	jj�|�|
jj|	jj�|�|
jj|	jj�|�|
jjd�|�|
jjd|j�|�|
jjd�|�|
jjd�|�|
jjdj tj!�|�|
jjdj"|�|�#|
jjdj$|�|�|
jj%d�dSr�)&r&r�r(�*DCERPC_BIND_TIME_KEEP_CONNECTION_ON_ORPHAN�.DCERPC_BIND_TIME_SECURITY_CONTEXT_MULTIPLEXINGr�r�r�rr!r)r*r-r.r/r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@r�rBrDrErF�r�	features1�btf1�	features2�btf2r�r�rQrRrSrTrrr�-test_no_auth_bind_time_none_ignore_additionals@





��z=TestDCERPC_BIND.test_no_auth_bind_time_none_ignore_additionalc
Csltj}t�|�}tj}t�|�}t��}||||g}t��}d|_t	|�|_
||_||_|j
d|gd�}|�|�|��}	|j|	tj|jdd�|�|	jj|jj�|�|	jj|jj�|�|	jj|jj�|�|	jjd�|�|	jjd|j�|�|	jjd�|�|	jjd�|�|	jjdjtj �|�|	jjdj!tj"�|�#|	jjdj$|�|�|	jj%d�dS�	NrrrVr$rrrr)&r(r�r&r�r�r�r�rr!r)r*r-r.r/r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@r�rBr�rDrErF)
rr�r�r�r�r�rQrRrSrTrrr�!test_no_auth_bind_time_only_first4s@



���z1TestDCERPC_BIND.test_no_auth_bind_time_only_firstcCs6tj}t�|�}tj}t�|�}t��}|g}t��}d|_t	|�|_
||_||_|g}t��}	d|	_t	|�|	_
||	_||	_|j
d||	gd�}
|�|
�|��}|j|tj|
jdd�|�|jjtj�|�|jjd�|�|jjdj|
j�|�|jjdj|
j�|�|jjd�|��}|�|�|��dS)NrrrrVr$r�)r(r�r&r�r�r�r�rr!r)r*r-r.r/r0r1r2r�rr4r5r�r�r�r�r�r�r=r�r�r�)rr�r�r�r�r�rQrRr�r�rSrTrrr�test_no_auth_bind_time_twiceWsB




�
�
z,TestDCERPC_BIND.test_no_auth_bind_time_twicecCsTtj}t�|�}t��}|g}t��}d|_t|�|_	||_
||_|jd|gd�}|�
|�|��}|j|tj|jdd�|�|jj|jj�|�|jj|jj�|�|jj|jj�|�|jjd�|�|jjd|j�|�|jjd�|�|jjd�|�|jjdjtj�|�|jjdj |�|�!|jjdj"|�|�|jj#d�dSr�)$r(r�r&r�r�r�rr!r)r*r-r.r/r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@r�rBrDrErFr�rrr�,test_no_auth_bind_time_keep_on_orphan_simples8


��z<TestDCERPC_BIND.test_no_auth_bind_time_keep_on_orphan_simplecC�ptj}t�|�}tj}t�|�}t��}t��}|||g}t��}d|_	t
|�|_||_||_
|jd|gd�}	|�|	�|��}
|j|
tj|	jdd�|�|
jj|	jj�|�|
jj|	jj�|�|
jj|	jj�|�|
jjd�|�|
jjd|j�|�|
jjd�|�|
jjd�|�|
jjdj tj!�|�|
jjdj"|�|�#|
jjdj$|�|�|
jj%d�dSr�)&r(r�r&r�r�r�r�r�rr!r)r*r-r.r/r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@r�rBrDrErFr�rrr�7test_no_auth_bind_time_keep_on_orphan_ignore_additional��>




��zGTestDCERPC_BIND.test_no_auth_bind_time_keep_on_orphan_ignore_additionalcCr�r�)&r(r�r&r�r�r�r�r�rr!r)r*r-r.r/r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@r�rBrDrErFr�rrr�0test_no_auth_bind_time_sec_ctx_ignore_additional�r�z@TestDCERPC_BIND.test_no_auth_bind_time_sec_ctx_ignore_additionalNcCsnt��}|g}t��}d|_t|�|_tjj�	�|_	||_
|g}d}	|durQ|j||||	tjd�}
d}|
d�
|�\}}
|�|�|j|
d|
d|
d|
d	�}nd
}
|j|||	|
d	�}|jd||d�}|�|�|��}|j|tj|jdd�|�|jj|�|�|jjd�|�|jjdj|j�|�|jjdj|j�|�|jjd
�|��}|�|�|� �dS)Nrr)�	auth_type�
auth_level�auth_context_id�g_auth_levelrrr�r�r��r�r�r��	auth_blob�none�rrrFr$r�)!r&r'r(rr!r)r*r+r,r-r.�get_auth_context_creds�DCERPC_AUTH_LEVEL_INTEGRITY�update�assertFalse�
generate_authr/r0r1r2r�rr4r5r�r�r�r�r�r=r�r�r�)rr�r��credsrBrPrQrRrr��auth_context�from_server�finished�	to_serverrFrSrTrrr�_test_auth_type_level_bind_nak�s^
�

���
�
z.TestDCERPC_BIND._test_auth_type_level_bind_nakcCs|jtj||d�S)N)r�r�rB)r�r(�DCERPC_AUTH_LEVEL_NONE)rr�rBrrr�_test_auth_none_level_binds�z*TestDCERPC_BIND._test_auth_none_level_bindcC�|jtjtjd�S�N�rB)r�r(r�r�rrrr�test_auth_none_none_bind��z(TestDCERPC_BIND.test_auth_none_none_bindcC�|�tj�Sr)r�r(�DCERPC_AUTH_LEVEL_CONNECTrrrr�test_auth_none_connect_bind#�z+TestDCERPC_BIND.test_auth_none_connect_bindcCrr)r�r(�DCERPC_AUTH_LEVEL_CALLrrrr�test_auth_none_call_bind&rz(TestDCERPC_BIND.test_auth_none_call_bindcCrr)r�r(�DCERPC_AUTH_LEVEL_PACKETrrrr�test_auth_none_packet_bind)rz*TestDCERPC_BIND.test_auth_none_packet_bindcCrr)r�r(r�rrrr�test_auth_none_integrity_bind,rz-TestDCERPC_BIND.test_auth_none_integrity_bindcCrr)r�r(�DCERPC_AUTH_LEVEL_PRIVACYrrrr�test_auth_none_privacy_bind/rz+TestDCERPC_BIND.test_auth_none_privacy_bindcC�|jdtjd�S�Nrr�r�r(r�rrrr�test_auth_none_0_bind2��z%TestDCERPC_BIND.test_auth_none_0_bindcCr�N�rrrrrr�test_auth_none_7_bind6rz%TestDCERPC_BIND.test_auth_none_7_bindcCr�Nr|rrrrrr�test_auth_none_255_bind:rz'TestDCERPC_BIND.test_auth_none_255_bindcCs�t��}|g}t��}d|_t|�|_tjj�	�|_	||_
|g}tj}d}|jd|d�}|�
|�|��}	|�|	tj|j�|�|	jj|jj�|�|	jj|jj�|�|	jj|jj�|�|	jjd�|�|	jjd|j�|�|	jjd�|�|	jjd�|�|	jjdjtj�|�|	jjdj tj!�|�"|	jjdj#|�|�t|	jj$�d�|j%d|jddd�}|�
|�|��}	|j|	tj&|jdd	�|�|	jj'd�|�|	jj|jj�|�|	jj(d�|�)t|	jj*�|	jj'�|j+|||d
d�}
|j%d|jdd|
d
�}|�
|�|��}	|j|	tj,|jdd	�|�|	jj'd�|�|	jj|jj�|�|	jj(d�|�|	jj-d�|�|	jj.tj/�|�|	jj0d�|�t|	jj1�d�|��}	|�2|	�|�3�dS)NrrrVrrrrr r$r�r�r��rr!r"r#rF)4r&r'r(rr!r)r*r+r,r-r.�DCERPC_AUTH_TYPE_NONEr/r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFrGrHrIrJrKrLr�r�r�r��DCERPC_FAULT_ACCESS_DENIEDr�r�r�r�)rr�rPrQrRrr�r�rSrTrFrrr�_test_auth_none_level_request>s�
�
���
���
�
z-TestDCERPC_BIND._test_auth_none_level_requestcCrr)rr(r�rrrr�test_auth_none_none_request�rz+TestDCERPC_BIND.test_auth_none_none_requestcCrr)rr(rrrrr�test_auth_none_connect_request�rz.TestDCERPC_BIND.test_auth_none_connect_requestcCrr)rr(rrrrr�test_auth_none_call_request�rz+TestDCERPC_BIND.test_auth_none_call_requestcCrr)rr(r	rrrr�test_auth_none_packet_request�rz-TestDCERPC_BIND.test_auth_none_packet_requestcC�\tj}tj}d}d}d}d}d}d}d}	d}
d}d}d}
|j|||||||||	|
|||
d�
S�NrF��auth_context_2nd�expected_call_id�expected_context_id�not_executed�conc_mpx�forced_call_id�forced_context_id�forced_opnum�forced_auth_context_id�forced_auth_type�forced_auth_level)r(�DCERPC_AUTH_TYPE_NTLMSSP�DCERPC_FAULT_SEC_PKG_ERROR�_test_generic_auth_first_last�rr��expected_faultr#r$r%r&r'r(r)r*r+r,r-rrr�(test_ntlmssp_multi_auth_first1_lastSame2��6�z8TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_lastSame2cCs\tj}tj}d}d}d}d}d}d}d}	d}
d}d}d}
|j|||||||||	|
|||
d�
S)NrFrr"�r(r.r�r0r1rrr�(test_ntlmssp_multi_auth_first1_lastNext2�r4z8TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_lastNext2cCsZtj}d}d}d}d}d}d}d}d}	d}
d}d}d}
|j|||||||||	|
|||
d�
S�NrF�or")r(r.r0r1rrr�*test_ntlmssp_multi_auth_first1_lastSame111�s6�z:TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_lastSame111cCs\tj}tj}d}d}d}d}d}d}d}	d}
d}d}d}
|j|||||||||	|
|||
d�
S)NrFrr8r"r5r1rrr�*test_ntlmssp_multi_auth_first1_lastNext111�r4z:TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_lastNext111cC�\tj}tj}d}d}d}d}d}d}d}	d}
d}d}d}
|j|||||||||	|
|||
d�
S�NrrrFTr8r"r5r1rrr�.test_ntlmssp_multi_auth_MPX_first1_lastNext111r4z>TestDCERPC_BIND.test_ntlmssp_multi_auth_MPX_first1_lastNext111cC�\tj}tj}d}d}d}d}d}d}d}	d}
d}d}d}
|j|||||||||	|
|||
d�
S�NFr"r5r1rrr�+test_ntlmssp_multi_auth_first1_lastSameNone"r4z;TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_lastSameNonecC�\tj}tj}d}d}d}d}d}d}d}	d}
d}d}d}
|j|||||||||	|
|||
d�
S�NFTr"r5r1rrr�/test_ntlmssp_multi_auth_MPX_first1_lastSameNone>r4z?TestDCERPC_BIND.test_ntlmssp_multi_auth_MPX_first1_lastSameNonecC�\tj}tj}d}d}d}d}d}d}d}	d}
d}d}d}
|j|||||||||	|
|||
d�
S�NFrr"r5r1rrr�+test_ntlmssp_multi_auth_first1_lastNextNoneZr4z;TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_lastNextNonecC�\tj}tj}d}d}d}d}d}d}d}	d}
d}d}d}
|j|||||||||	|
|||
d�
S�NrrFTr"r5r1rrr�/test_ntlmssp_multi_auth_MPX_first1_lastNextNonevr4z?TestDCERPC_BIND.test_ntlmssp_multi_auth_MPX_first1_lastNextNonecC�\tj}tj}d}d}d}d}d}d}d}	d}
d}d}d}
|j|||||||||	|
|||
d�
S�NFr8r"r5r1rrr�.test_ntlmssp_multi_auth_first1_lastSameNone111�r4z>TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_lastSameNone111cC�\tj}tj}d}d}d}d}d}d}d}	d}
d}d}d}
|j|||||||||	|
|||
d�
S�NFTr8r"r5r1rrr�2test_ntlmssp_multi_auth_MPX_first1_lastSameNone111�r4zBTestDCERPC_BIND.test_ntlmssp_multi_auth_MPX_first1_lastSameNone111cC�\tj}tj}d}d}d}d}d}d}d}	d}
d}d}d}
|j|||||||||	|
|||
d�
S�NFrr8r"r5r1rrr�.test_ntlmssp_multi_auth_first1_lastNextNone111�r4z>TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_lastNextNone111cC�\tj}tj}d}d}d}d}d}d}d}	d}
d}d}d}
|j|||||||||	|
|||
d�
S�NrrFTr8r"r5r1rrr�2test_ntlmssp_multi_auth_MPX_first1_lastNextNone111�r4zBTestDCERPC_BIND.test_ntlmssp_multi_auth_MPX_first1_lastNextNone111rFc-	Cs�tj}tj}d}tj}d}|��}tjj��}t�	�}|g}tjj�
�}d|_t|�|_
||_||_|j||||dd�}|j||||dd�}tjtjB}|rS|tjO}|jd||d�}|jd|||jjdd�}|dkrw|jd|||jjdd�}|j}|j} tjj��}!|!}"|r�tj�d	tj�|"��tj�|"�}#|#d
7}#| r�tj�dt|#�|�|#�f�d}$|j}%|"� �}&|s�tjjj}'|#dd
�}(|j!|$|%|'|&t|#�|(|d�})|j"|)|| d�|j#dd�}*|�$|*�|�%�|dkr�|�&�}+n|dkr�|�&�}+nd}+tjtjB},|du�r
|%}|du�r|$}|	�r|,tj'O},|
du�r |
}$|du�r'|}%|du�r.|}&|
du�r7|
|+d<|du�r@||+d<|du�rI||+d<tjjj}'|#d
d�}(|j!|$|%||&t|(�|(|+d�})|j"|)|| d�|du�r{|j(d||"d|d�dS|�#�}*|j)|*tj*||,dd�|�+|*jj,d�|�-|*jj|�|�-|*jj.d�|�-|*jj/d�|�-|*jj0|�|�-|*jj1d�|�-t|*jj2�d�|	�r�|j#dd�}*|�$|*�|�%�dS|�#�}*|�$|*�|�3�dS)NrrF�r�r�r�r��hdr_signingr)r�ctxrT�rrXr�r9�start_with_alterzin: %ss-���������������������������������������������zstub_in: %d
%sr��)rr!rr"rIr#r���	ndr_print�hexdump�{�G�z�?��timeoutr�r�r����)rrX�io�send_reqr�r)4r(r.r�r	�get_user_credsr+r,r-r&r'rr!r)r*r.r�r^r_rr�do_generic_bindr5r9rr�
inq_if_ids�sys�stderr�write�ndr�ndr_print_in�ndr_pack_inr^r"�generate_request_authr0r1r��assertIsConnected�copyru�do_single_requestr2r�r8rIr4rJr�r�r�r�r�)-rr��
pfc_flags_2ndr2r#�
skip_firstr$r%r'r&r(r)r*r+r,r-�auth_level1�auth_context_id1�auth_level2�auth_context_id2r��abstract�transferrQrX�
auth_context1�
auth_context2�bind_pfc_flags�ack0�ack1�ack2r]r^rgrc�stub_inrr!r"r�stub_in_tmprSrT�auth_context_copy�expected_pfc_flagsrrr�_test_generic_auth_first_2nds
��
���
�












�
�

z,TestDCERPC_BIND._test_generic_auth_first_2ndcC�0tjjj}|j||||||||||	|
|||
d�S�Nr")r+r(r_r��rr�r2r#r$r%r'r&r(r)r*r+r,r-rrrrrr0�� 
�z-TestDCERPC_BIND._test_generic_auth_first_lastcCr�r�)r+r(r^r�r�rrr�_test_generic_auth_first_first�r�z.TestDCERPC_BIND._test_generic_auth_first_firstcCr r!)r(r.r/r�r1rrr�)test_ntlmssp_multi_auth_first1_firstSame2�r4z9TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_firstSame2cCs\tj}tj}d}d}d}d}d}d}d}	d}
d}d}d}
|j|||||||||	|
|||
d�
S)Nrr�Frr"�r(r.r�r�r1rrr�)test_ntlmssp_multi_auth_first1_firstNext2�r4z9TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_firstNext2cCs\tj}tj}d}d}d}d}d}d}d}	d}
d}d}d}
|j|||||||||	|
|||
d�
Sr7r�r1rrr�+test_ntlmssp_multi_auth_first1_firstSame111	r4z;TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_firstSame111cCs\tj}tj}d}d}d}d}d}d}d}	d}
d}d}d}
|j|||||||||	|
|||
d�
S)NrFTr8r"r�r1rrr�/test_ntlmssp_multi_auth_MPX_first1_firstSame1113	r4z?TestDCERPC_BIND.test_ntlmssp_multi_auth_MPX_first1_firstSame111cCs\tj}tj}d}d}d}d}d}d}d}	d}
d}d}d}
|j|||||||||	|
|||
d�
S)Nrr�Frr8r"r�r1rrr�+test_ntlmssp_multi_auth_first1_firstNext111O	r4z;TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_firstNext111cCr;r<r�r1rrr�/test_ntlmssp_multi_auth_MPX_first1_firstNext111k	r4z?TestDCERPC_BIND.test_ntlmssp_multi_auth_MPX_first1_firstNext111cCr>r?r�r1rrr�,test_ntlmssp_multi_auth_first1_firstSameNone�	r4z<TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_firstSameNonecCrArBr�r1rrr�0test_ntlmssp_multi_auth_MPX_first1_firstSameNone�	r4z@TestDCERPC_BIND.test_ntlmssp_multi_auth_MPX_first1_firstSameNonecCrDrEr�r1rrr�,test_ntlmssp_multi_auth_first1_firstNextNone�	r4z<TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_firstNextNonecCrGrHr�r1rrr�0test_ntlmssp_multi_auth_MPX_first1_firstNextNone�	r4z@TestDCERPC_BIND.test_ntlmssp_multi_auth_MPX_first1_firstNextNonecCrJrKr�r1rrr�/test_ntlmssp_multi_auth_first1_firstSameNone111�	r4z?TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_firstSameNone111cCrMrNr�r1rrr�3test_ntlmssp_multi_auth_MPX_first1_firstSameNone111
r4zCTestDCERPC_BIND.test_ntlmssp_multi_auth_MPX_first1_firstSameNone111cCrPrQr�r1rrr�/test_ntlmssp_multi_auth_first1_firstNextNone111/
r4z?TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_firstNextNone111cCrSrTr�r1rrr�3test_ntlmssp_multi_auth_MPX_first1_firstNextNone111K
r4zCTestDCERPC_BIND.test_ntlmssp_multi_auth_MPX_first1_firstNextNone111cCs<d}d}d}
d}d}|j||
||||||||||||	|
d�S)NrTr)r#rsr$r%r&r'r(r)r*r+r,r-)r�)rr�r2r%r&r'r)r*r+r,r-r#rsrrr$r(rrr�_test_generic_auth_middleg
s*�z)TestDCERPC_BIND._test_generic_auth_middlecCsJtj}tj}d}d}d}d}d}d}d}	d}
|j|||||||||	|
d�
S)NrF�r%r&r'r)r*r+r,r-�r(r.r�r��rr�r2r%r&r'r)r*r+r,r-rrr�test_ntlmssp_auth_middle_alone�
�*�z.TestDCERPC_BIND.test_ntlmssp_auth_middle_alonecCsJtj}tj}d}d}d}d}d}d}d}	d}
|j|||||||||	|
d�
S)NFTr�r�r�rrr�"test_ntlmssp_auth_MPX_middle_alone�
r�z2TestDCERPC_BIND.test_ntlmssp_auth_MPX_middle_alonecC�Jtj}tj}d}d}d}d}d}d}d}	d}
|j|||||||||	|
d�
S�NrFr8r�r�r�rrr� test_ntlmssp_auth_middle_all_111�
r�z0TestDCERPC_BIND.test_ntlmssp_auth_middle_all_111cCr�)NrTr8r�)r(r.r�r�r�rrr�$test_ntlmssp_auth_MPX_middle_all_111�
r�z4TestDCERPC_BIND.test_ntlmssp_auth_MPX_middle_all_111cCsJtj}tj}d}d}d}d}d}d}d}	d}
|j|||||||||	|
d�
Sr�r�r�rrr�%test_ntlmssp_auth_middle_auth_all_111�
r�z5TestDCERPC_BIND.test_ntlmssp_auth_middle_auth_all_111cCsJtj}tj}d}d}d}d}d}d}d}	d}
|j|||||||||	|
d�
S�NFTr8r��r(r.rr�r�rrr�)test_ntlmssp_auth_MPX_middle_auth_all_111�
r�z9TestDCERPC_BIND.test_ntlmssp_auth_MPX_middle_auth_all_111cCsJtj}tj}d}d}d}d}d}d}d}	d}
|j|||||||||	|
d�
Sr�r�r�rrr�)test_ntlmssp_auth_middle_auth_context_111r�z9TestDCERPC_BIND.test_ntlmssp_auth_middle_auth_context_111cCsJtj}tj}d}d}d}d}d}d}d}	d}
|j|||||||||	|
d�
Sr�r�r�rrr�-test_ntlmssp_auth_MPX_middle_auth_context_111!r�z=TestDCERPC_BIND.test_ntlmssp_auth_MPX_middle_auth_context_111cCsJtj}tj}d}d}d}d}d}d}d}	d}
|j|||||||||	|
d�
Sr�r�r�rrr�&test_ntlmssp_auth_middle_auth_type_1117r�z6TestDCERPC_BIND.test_ntlmssp_auth_middle_auth_type_111cCsJtj}tj}d}d}d}d}d}d}d}	d}
|j|||||||||	|
d�
Sr�r�r�rrr�*test_ntlmssp_auth_MPX_middle_auth_type_111Mr�z:TestDCERPC_BIND.test_ntlmssp_auth_MPX_middle_auth_type_111cCsJtj}tj}d}d}d}d}d}d}d}	d}
|j|||||||||	|
d�
Sr�r�r�rrr�'test_ntlmssp_auth_middle_auth_level_111cr�z7TestDCERPC_BIND.test_ntlmssp_auth_middle_auth_level_111cCsJtj}tj}d}d}d}d}d}d}d}	d}
|j|||||||||	|
d�
Sr�r�r�rrr�+test_ntlmssp_auth_MPX_middle_auth_level_111yr�z;TestDCERPC_BIND.test_ntlmssp_auth_MPX_middle_auth_level_111c
Cs�t��}|g}t��}d|_t|�|_tjj�	�|_	||_
|jd|||gd�}	|�|	�|�
�}
|j|
tj|	jdd�|�|
jj|�|�|
jj|�|�|
jj|	jj�|�|
jjd�|�|
jjd|j�|�|
jjd�|�|
jjd�|�|
jjdjtj�|�|
jjdjtj �|�!|
jjdj"|�|�|
jj#d�|
jj}|dur�|d	}|dur�|d	}|j$d||d
|
jj|gd�}	|�|	�|�
�}
|j|
tj%|	jdd�|�|
jj|�|�|
jj|�|�|
jj|
jj�|�|
jjd�|�|
jjd�|�|
jjd�|�|
jjdjtj�|�|
jjdjtj �|�!|
jjdj"|�|�|
jj#d�|tj&}|j'd|jdd
d|d
�}	|j|	ddd�|j
ddd�}
|j|
tj(|	jdd�|�|
jj)d�|�|
jj|	jj�|�|
jj*d�|�+t|
jj,�|
jj)�dtj&}|j'd|jdd
d|d
�}	|�|	�|�
�}
|j|
tj(|	jdd�|�|
jj)d�|�|
jj|	jj�|�|
jj*d�|�+t|
jj,�|
jj)�|d7}|j'd|jdd
d|d
�}	|�|	�|�
�}
|j|
tj-|	jdd�|�|
jj)d�|�|
jjd�|�|
jj*d�|�|
jj.d�|�|
jj/tj0�|�|
jj1d�|�t|
jj2�d�|�
�}
|�3|
�|�4�dS)Nrr)rr6r7rr$rrrrro���)rr6r7r9r��rr!r"rIr#Tr\��r�)5r&r'r(rr!r)r*r+r,r-r.r/r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFrXrY�DCERPC_REQUEST_LENGTHrGrHrIrJrKrLr�r�r�r�r�r�r�r�)
r�req_xmit�req_recv�rep_both�
alter_xmit�
alter_recvrPrQrRrSrTr9�
chunk_sizerrr�_test_neg_xmit_check_values�s�
�
���
�
���
��
�
��
�
z+TestDCERPC_BIND._test_neg_xmit_check_valuescCs|jdddd�S)Nr�r��r�r�r��r�rrrr�test_neg_xmit_ffff_ffff��z'TestDCERPC_BIND.test_neg_xmit_ffff_ffffcCs|jdddddd�S)Nrr���r�r�r�r�r�r�rrrr�test_neg_xmit_0_ffff
��z$TestDCERPC_BIND.test_neg_xmit_0_ffffcC�|jdddd�S)Nr�rr�r�r�rrrr�test_neg_xmit_ffff_0r�z$TestDCERPC_BIND.test_neg_xmit_ffff_0cCs|jdddddd�S)Nrr�r�r�r�rrrr�test_neg_xmit_0_0r�z!TestDCERPC_BIND.test_neg_xmit_0_0cCr�)N�rr�r�r�rrrr�test_neg_xmit_3199_0 r�z$TestDCERPC_BIND.test_neg_xmit_3199_0cCr�)Nrr�r�r�r�rrrr�test_neg_xmit_0_3199%r�z$TestDCERPC_BIND.test_neg_xmit_0_3199cCr�)Nr�r��xr�r�rrrr�test_neg_xmit_3199_ffff*r�z'TestDCERPC_BIND.test_neg_xmit_3199_ffffcCr�)Nr�r�r�r�r�rrrr�test_neg_xmit_ffff_3199/r�z'TestDCERPC_BIND.test_neg_xmit_ffff_3199cCs�t��}|g}t��}d|_t|�|_tjj�	�|_	||_
|jd|gd�}|�|�|�
�}|j|tj|jdd�|�|jj|jj�|�|jj|jj�|�|jj|jj�|�|jjd�|�|jjd|j�|�|jjd�|�|jjd�|�|jjdjtj�|�|jjdjtj �|�!|jjdj"|�|�|jj#d�|j$d|jdd	dd
�}|�|�|�
�}|j|tj%|jdd�|�|jj&d�|�|jj|jj�|�|jj'd�|�(t|jj)�|jj&�|j$d|jdd	dd
�}|�|�|�
�}|j|tj%|jdd�|�|jj&d�|�|jj|jj�|�|jj'd�|�(t|jj)�|jj&�|j$d|jdddd
�}|�|�|�
�}|j|tj%|jdd�|�|jj&d�|�|jj|jj�|�|jj'd�|�(t|jj)�|jj&�dS)
NrrVr$rrrrrr�r�r�sr%)rrPrQrXrSrTrrr�test_alloc_hint4s�
�
����
��
��
�zTestDCERPC_BIND.test_alloc_hintcCstjj��}t��}|j||dddd�\}}d|j}t|t	�r)|�
d��d�}n|�d�}d}t|t	�r>|�
d��d�}n|�d�}t�
dd	t|�d
dt|�d
�}	|	|d7}	t|	�d}
|
dkrl|	d
d|
7}	|	t�
dt|�d
dt|�d
�7}	|	|d7}	|	d7}	|||	fS)NrT)r!�epmap�
return_ackz\\zutf-8z	utf-16-le�UNKNOWNCOMPUTERz<IIIIi rsrr�z<IIIs"3DUfw�)r+r(�netlogonr-r&r'�prepare_presentation�target_hostname�
isinstance�bytes�decode�encode�struct�packr))rrxrPrX�ack�server�server_utf16�computer�computer_utf16�	real_stub�mod_lenrrr�_get_netlogon_ctx}s4

�




��
z!TestDCERPC_BIND._get_netlogon_ctxcCs�|��\}}}|jjtj}d}	d}
|dk�r?t||�}||8}|	|7}	d}|
r:|tjO}d}
|d|t|�}
nd|}
|dkrG|tjO}|j	d||j
d||
d�}||kr\||8}nd}|j|dd�|dur�|��}|j
|tj|jdd	�|�|jjd�|�|jj
|jj
�|�|jjd�|�|jjd�|�|jj|�|�|jjd�|�t|jj�d�|��}|�|�|��dS|dkr�nw|	d
k�r,|du�r,|��}|j
|tj|jdd	�|�|jjd�|�|jj
|jj
�|�|jjd�|�|jjd�|�|jj|�|�|jjd�|�t|jj�d�|��}|�|�|��dS|jdd�}|�|�|��|dks|	d
k�r�|du�r�|��}|j
|tj|jdd	�|�|jjd�|�|jj
|jj
�|�|jjd�|�|jjd�|�|jj|�|�|jjd�|�t|jj�d�|��}|�|�|��dS|��}|j
|tj|jdd	�|�|jjd�|�|jj
|jj
�|�|jjd�|�t|jj�|jj�|�t|jj�d
�t�d|jjt|jj�d�}|�|dd�dS)NrTFr�i4r)rrr!r"rIr#)r^r$�@r_r`��<I) r�r5r7r(r��minr^r)r_rGr!r0r1r2r�rr8rIr4rJr�r�r�r�r�r�rorHrKrLr��unpack_from)r�	remainingrI�fault_first�
fault_lastrXrTr��chunk�total�first�thistimerr#rSr�rrr�_test_fragmented_requests�s�



�
�
�

�G�
�z)TestDCERPC_BIND._test_fragmented_requestscCs|jddd�S)Nr��r�rI�r�rrrr�test_fragmented_requests01	
��z*TestDCERPC_BIND.test_fragmented_requests01cC�|jddd�S)Nr�ir�r�rrrr�test_fragmented_requests02

r�z*TestDCERPC_BIND.test_fragmented_requests02cCr�)Nr�rr�r�rrrr�test_fragmented_requests03
r�z*TestDCERPC_BIND.test_fragmented_requests03cC�|jddtjd�S)Nr�i@)r�rIr��r�r(rrrrr�test_fragmented_requests04
��z*TestDCERPC_BIND.test_fragmented_requests04cCr�)NiPr)r�rIr�r�rrrr�test_fragmented_requests05
r�z*TestDCERPC_BIND.test_fragmented_requests05cCs�|��\}}}|jd||jd|d�}|�|�|rr|��}|j|tj|jdd�|�	|j
jd�|�|j
jd�|�|j
j
d�|�|j
jd�|�|j
jtj�|�|j
jd�|�t|j
j�d�|��}|�|�|��dS|jdd�}|�|�|��|jd||jd|d�}|�|�|r�|��}|j|tj|jdd�|�	|j
jd�|�|j
j|j
j�|�|j
j
d�|�|j
jd�|�|j
jtj�|�|j
jd�|�t|j
j�d�|��}|�|�|��dS|jdd�}|�|�|��dS)Nrr�rrr!r"r#rr$皙�����?r`)r�rGr!r0r1r2r(r�rr8r5rIr4rJr�r�r�r�r)r�r�r�ro)rr�	fault_1st�	fault_2ndrXrTr�rSrrr�_test_same_requests
sj�
�

�
�

z#TestDCERPC_BIND._test_same_requestscC�|jtjdd�S�NT�rr��r�r(r^rrrr�test_first_only_requests^
��z(TestDCERPC_BIND.test_first_only_requestscCr�)NrT�rr�)r�rrrr�test_none_only_requestsb
sz'TestDCERPC_BIND.test_none_only_requestscCr�)NTr)r�r(r_rrrr�test_last_only_requestse
rz'TestDCERPC_BIND.test_last_only_requestscC�|jtjtjBdd�Sr�)r�r(r^rwrrrr�test_first_maybe_requestsi
�
��z)TestDCERPC_BIND.test_first_maybe_requestscCrr�)r�r(r^rurrrr�test_first_didnot_requestsn
r	z*TestDCERPC_BIND.test_first_didnot_requestscCrr�)r�r(r^rrrrrr�test_first_cmpx_requestss
r	z(TestDCERPC_BIND.test_first_cmpx_requestscCs|jtjdBdd�S)NroTrrrrrr�test_first_08_requestsx
s
��z&TestDCERPC_BIND.test_first_08_requestscCs�|��\}}}|jdtjtjB|jd|d�}|�|�|��}|j|tj	|j
tjtjBtjBdd�|�
|jjd�|�|jjd�|�|jjd�|�|jjd�|�|jjtj�|�|jjd�|�t|jj�d�|��}|�|�|��dS)Nrrr�rr)r�rGr(r^�DCERPC_PFC_FLAG_PENDING_CANCELr!r0r1r2r�rr_rur8r5rIr4rJr�r��DCERPC_FAULT_NO_CALL_ACTIVEr�r)r�r�r��rrXrTr�rSrrr�test_first_cancel_requests}
s:��
���
z*TestDCERPC_BIND.test_first_cancel_requestscCs`|��\}}}|jdtj|jd|d�}|�|�|jdd�}|�|�|��|jdtj	|jd|d�}|�|�|jdd�}|�|�|��|jdtj
|jd|d�}|�|�|��}|j|tj|j
dd�|�|jjd�|�|jj|jj�|�|jjd�|�t|jj�|jj�|�t|jj�d�t�d	|jjt|jj�d�}|�|dd�dS�
Nrrr�r�r`rr$r�r�)r�rGr(r^r!r0r1r�ror
r_r2rHrr8r5rIr4rJrKr)rLr�r��rrXrTr�rSr�rrr�test_2nd_cancel_requests�
sN�

�

�
�z(TestDCERPC_BIND.test_2nd_cancel_requestscCs6|��\}}}|jdtj|jd|dd�d�}|�|�|jdd�}|�|�|��|jdtj	tj
B|jd|dd�d�}|�|�|��}|j|tj|j
dd�|�|jjd�|�|jj|jj�|�|jjd�|�t|jj�|jj�|�t|jj�d�t�d	|jjt|jj�d�}|�|dd�dSr)r�rGr(r^r!r0r1r�ror_r
r2rHrr8r5rIr4rJrKr)rLr�r�rrrr�test_last_cancel_requests�
s>
�

�
�
�z)TestDCERPC_BIND.test_last_cancel_requestscCs|��\}}}|jdtj|jd|d�}|�|�|jdd�}|�|�|��|jdtj|jd|d�}|�|�|��}|j	|tj
dtjtjBdd�|�|j
jd�|�|j
j|j
j�|�|j
jd�|�|j
jd�|�|j
jtj�|�|j
jd�|�t|j
j�d�dS)	N�2rr�r�r`�3rr)r�rGr(r^r!r0r1r�ror2r�r_r8r5rIr4rJr�r�r�r�r)r�rrrr�test_mix_requests�
s@�

�
��z!TestDCERPC_BIND.test_mix_requestscCs�t��}tjj��}|j||dd�}|jdd�}|�|�|j	dd�}|�
|�|��|jd|j
dd	d
�}|�|�|�	�}|j|tj|jdd�|�|jjd�|�|jj
|jj
�|�|jjd�|�t|jj�|jj�dS)Nr|�r!r�r�r_r`rrrr r$)r&r'r+r(r,r-r��generate_co_cancelr0r1r�rorGr!r2rHrr8r5rIr4rJrKr)rL�rrPrxrXrSrTrrr�test_co_cancel_no_request
s,

�
�z)TestDCERPC_BIND.test_co_cancel_no_requestcCs�t��}tjj��}|j||dd�}|jdtj|j	ddd�}|�
|�|jdd�}|�|�|�
�|jdd	�}|�
|�|jdd�}|�|�|�
�|jdtj|j	ddd�}|�
|�|��}|j|tj|jdd
�|�|jjd�|�|jj	|jj	�|�|jjd�|�t|jj�|jj�|jd|j	ddd�}|�
|�|��}|j|tj|jdd
�|�|jjd�|�|jj	|jj	�|�|jjd�|�t|jj�|jj�dS)
Nr|rrrrr�r_r`r�r$rr )r&r'r+r(r,r-r�rGr^r!r0r1r�rorr_r2rHrr8r5rIr4rJrKr)rLrrrr�"test_co_cancel_request_after_first&s^�



�
��
�z2TestDCERPC_BIND.test_co_cancel_request_after_firstcCs�t��}tjj��}|�||�}|jdd�}|�|�|j	dd�}|�
|�|��|jd|j
ddd�}|�|�|�	�}|j|tj|jdd	�|�|jjd�|�|jj
|jj
d
@�|�|jjd�|�t|jj�|jj�dS)Nr�r�r_r`rrrr r$r|)r&r'r+r(r,r-r��generate_orphanedr0r1r�rorGr!r2rHrr8r5rIr4rJrKr)rLrrrr�test_orphaned_no_requestWs,

�
�z(TestDCERPC_BIND.test_orphaned_no_requestcCs�t��}tjj��}|�||�}|jdtj|j	ddd�}|�
|�|jdd�}|�|�|�
�|jdd�}|�
|�|jdd�}|�|�|�
�|jdtj|j	ddd�}|�
|�|��}|j|tj|jdd�|�|jjd�|�|jj	|jj	d	@�|�|jjd�|�t|jj�|jj�|jd
|j	ddd�}|�
|�|��}|j|tj|jdd�|�|jjd�|�|jj	|jj	d	@�|�|jjd�|�t|jj�|jj�dS)Nrrrr�r�r`r�r$r|rr )r&r'r+r(r,r-r�rGr^r!r0r1r�rorr_r2rHrr8r5rIr4rJrKr)rLrrrr�&test_orphaned_request_after_first_lastps^�



�
��
�z6TestDCERPC_BIND.test_orphaned_request_after_first_lastcCs�t��}tjj��}tjjj}|tjjjO}|tjjjO}|j	|||d�}|j
dtj|jddd�}|�|�|j
dd�}|�|�|��|jdd�}|�|�|j
dd�}|�|�|��|j
dtj|jddd�}|�|�|�
�}|j|tj|jdd	�|�|jjd�|�|jj|jjd
@�|�|jjd�|�t|jj�|jj�|j
d|jddd�}|�|�|�
�}|j|tj|jdd	�|�|jjd�|�|jj|jjd
@�|�|jjd�|�t|jj�|jj�dS)
N�rrrrr�r�r`r�r$r|rr )r&r'r+r(r,r-r^r_rrr�rGr!r0r1r�rorr2rHrr8r5rIr4rJrKr)rL)rrPrxrrXrSrTrrr�*test_orphaned_request_after_first_mpx_last�sd
�



�
��
�z:TestDCERPC_BIND.test_orphaned_request_after_first_mpx_lastcCsht��}tjj��}|�||�}|jdtj|j	ddd�}|�
|�|jdd�}|�|�|�
�|jdd�}|�
|�|jdd�}|�|�|�
�|jd|j	ddd	�}|�
|�|��}|j|tj|jdd
�|�|jjd�|�|jj	|jj	�|�|jjd�|�|jjd�|�|jjtj�|�|jjd�|�t|jj�d�|��}|�|�|��dS)Nrrrr�r�r`r�rr r$)r&r'r+r(r,r-r�rGr^r!r0r1r�rorr2r�rr8r5rIr4rJr�r�r�r�r)r�r�)rrPrxrX�req1rTrS�req2rrr�)test_orphaned_request_after_first_no_last�sL�



�
�
z9TestDCERPC_BIND.test_orphaned_request_after_first_no_lastc	Cs�t��}tjj��}tjjj}|tjjjO}|tjjjO}|j	|||d�}|j
dtj|jddd�}|�|�|j
dd�}|�|�|��|jdd�}|�|�|j
dd�}|�|�|��|j
d	|jdddd
�}|�|�|�
�}|j|tj|jdd�|�|jjd�|�|jjd�|�|jjd�|�|jjd�|�|jjtj�|�|jjd�|�t|jj�d�|�
�}|�|�|��dS)Nr rrrr�r�r`r�rr r$) r&r'r+r(r,r-r^r_rrr�rGr!r0r1r�rorr2r�rr8r5rIr4rJr�r�r�r�r)r�r�)	rrPrxrrXr"rTrSr#rrr�-test_orphaned_request_after_first_mpx_no_lastsV
��



�
�
z=TestDCERPC_BIND.test_orphaned_request_after_first_mpx_no_lastcCsDt��}|g}t��}d|_t|�|_tjj�	�|_	||_
|g}|��}tj
�|j�}|�|�|�tj�tj}tj}	d}
|�||	�d}|�|�\}}
|�|�|j||	|
|
d�}|jd||d�}|�|�|��}|�|tj|j�|�|j j!|j j!�|�|j j"|j j"�|�#|j j$|j j$�|�|j j%d�|�|j j&d|j'�|�(|j j)d�|�|j j*d�|�|j jdj+tj,�|�|j jdj-tj.�|�/|j jdj0|�|�#t|j j1�d�|�2|j j1�}|j3}|�|�\}}
|�|�|j||	|
|
d�}|j4d||j j$|d	�}|�|�|��}|�|tj5|j�|�|j j!|j j!�|�|j j"|j j"�|�|j j$|j j$�|�|j j%d�|�(|j j)d�|�|j j*d�|�|j jdj+tj,�|�|j jdj-tj.�|�/|j jdj0|�|�#t|j j1�d�|�2|j j1�}|j3}|�|�\}}
|�6|�|j7d|jddd
�}|�|�|��}|j|tj8|jdd�|�#|j j9d�|�|j j|j jd@�|�|j j:d�|�;t|j j<�|j j9�|j||	|
d
d�}|j7d|jdd|d�}|�|�|��}|j|tj8|jdd�|�#|j j9d�|�|j j|j jd@�|�|j j:d�|�;t|j j<�|j j9�|j|||
d
d�}|j7d|jdd|d�}|�|�|��}|j|tj=|jdd�|�#|j j9d�|�|j j|j j�|�|j j:d�|�|j j>d�|�|j j?tj@�|�|j jAd�|�t|j jB�d�|��}|�C|�|�D�dS)Nrrrr�rr�rr�rrr9rFr r$r|�r�r)Er&r'r(rr!r)r*r+r,r-r.�get_anon_credsr�Security�start_client�settings�set_credentials�want_feature�FEATURE_DCE_STYLE�DCERPC_AUTH_TYPE_SPNEGOr�start_mech_by_authtyper�r�r�r/r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErF�
parse_auth�credentialsrXrY�
assertTruerGrHrIrJrKrLr�r�r�rr�r�r�r�)r�upgrade_auth_levelrPrQrRr�c�gr�r�r�r�r�r�rFrSrT�arrr�$_test_spnego_connect_upgrade_request1s


��
��
��
��
�
���
���
�
z4TestDCERPC_BIND._test_spnego_connect_upgrade_requestcCrr)r8r(r	rrrr�"test_spnego_connect_packet_upgrade���z2TestDCERPC_BIND.test_spnego_connect_packet_upgradecCrr�r8r(r�rrrr�%test_spnego_connect_integrity_upgrade�r:z5TestDCERPC_BIND.test_spnego_connect_integrity_upgradecCst��}|g}t��}d|_t|�|_tjj�	�|_	||_
|g}|��}tj
�|j�}|�|�|�tj�tj}|}	d}
|�||	�d}|�|�\}}
|�|�|j||	|
|
d�}|jd||d�}|�|�|��}|�|tj|j�|�|jj |jj �|�|jj!|jj!�|�"|jj#|jj#�|�|jj$d�|�|jj%d|j&�|�'|jj(d�|�|jj)d�|�|jjdj*tj+�|�|jjdj,tj-�|�.|jjdj/|�|�"t|jj0�d�|�1|jj0�}|j2}|�|�\}}
|�|�|j||	|
|
d�}|j3d||jj#|d	�}|�|�|��}|�|tj4|j�|�|jj |jj �|�|jj!|jj!�|�|jj#|jj#�|�|jj$d�|�'|jj(d�|�|jj)d�|�|jjdj*tj+�|�|jjdj,tj-�|�.|jjdj/|�|�"t|jj0�d�|�1|jj0�}|j2}|�|�\}}
|�5|�|j|tj6|
d
d�}|j7d|jdd|d�}|�|�|��}|j|tj8|jdd
�|�"|jj9d�|�|jj|jj�|�|jj:d�|�|jj;d�|�|jj<tj=�|�|jj>d�|�t|jj?�d�|��}|�@|�|�A�dS)Nrrrr�rr�rrr&r'r�rr$)Br&r'r(rr!r)r*r+r,r-r.r(rr)r*r+r,r-r.r/r0r�r�r�r/r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFr1r2rXrYr3rrGr�rIrJr�r�rr�r�r�r�)r�initial_auth_levelrPrQrRrr5r6r�r�r�r�r�r�rFrSrTr7rrr�&_test_spnego_connect_downgrade_request�s�


��
��
��
��
��
�
z6TestDCERPC_BIND._test_spnego_connect_downgrade_requestcCrr)r>r(r	rrrr�$test_spnego_packet_downgrade_connect=r:z4TestDCERPC_BIND.test_spnego_packet_downgrade_connectcCrrr;rrrr�'test_spnego_integrity_downgrade_connectAr:z7TestDCERPC_BIND.test_spnego_integrity_downgrade_connectcCs�t��}|g}t��}d|_t|�|_tjj�	�|_	||_
|g}|��}tj
�|j�}|�|�|�tj�tj}tj}d}	|�||�d}
|�|
�\}}|�|�|j|||	|d�}
|jd||
d�}|�|�|��}|�|tj|j�|�|j j!|j j!�|�|j j"|j j"�|�#|j j$|j j$�|j j$}|�|j j%d�|�|j j&d|j'�|�(|j j)d�|�|j j*d�|�|j jdj+tj,�|�|j jdj-tj.�|�/|j jdj0|�|�#t|j j1�d�|�2|j j1�}|j3}
|�|
�\}}|�|�|j|||	d	d�}
|j4d|jdd|
d
�}|�|�|��}|j|tj5|j|j6tj7Bdd�|�#|j j8d�|�|j jd�|�|j j9d�|�|j j:d�|�|j j;tj<�|�|j j=d�|�t|j j>�d�|��}|�?|�|�@�dS)Nrrrr�rr�rrr'rr)Ar&r'r(rr!r)r*r+r,r-r.r(rr)r*r+r,r-r.r/rr0r�r�r�r/r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFr1r2rGr�rrurIrJr�r�r�r�r�r�r�)rrPrQrRrr5r6r�r�r�r�r�r�rFrSrTr9r7rrr�test_spnego_unfinished_requestEs�


��
��
��
��
z.TestDCERPC_BIND.test_spnego_unfinished_requestcCst��}|g}t��}d|_t|�|_tjj�	�|_	||_
|g}|��}tj
�|j�}|�|�|�tj�tj}tj}d}	|�||�d}
|�|
�\}}|�|�|j|||	|d�}
|jd||
d�}|�|�|��}|�|tj|j�|�|j j!|j j!�|�|j j"|j j"�|�#|j j$|j j$�|�|j j%d�|�|j j&d|j'�|�(|j j)d�|�|j j*d�|�|j jdj+tj,�|�|j jdj-tj.�|�/|j jdj0|�|�#t|j j1�d�|�2|j j1�}|j3}
|�|
�\}}|�|�|j|||	|d�}
|j4d|
d	�}|�|�|jd
d�}|�5|�|�6�|j7d|jddd�}|�|�|��}|j|tj8|jdd
�|�#|j j9d�|�|j j|j j�|�|j j:d�|�|j j;d�|�|j j<tj=�|�|j j>d�|�t|j j?�d�|��}|�5|�|�@�dS)Nrrrr�rr�rr�rrFr_r`r r$)Ar&r'r(rr!r)r*r+r,r-r.r(rr)r*r+r,r-r.r/rr0r�r�r�r/r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFr1r2�generate_auth3r�rorGr�rIrJr�r�rr�r�r�)rrPrQrRrr5r6r�r�r�r�r�r�rFrSrTr7rrr�test_spnego_auth3�s�


��
��
��

�
�
z!TestDCERPC_BIND.test_spnego_auth3cCs�t��}t��}|g}t��}d|_t|�|_tjj	�
�|_
||_|g}|��}t
j�|j�}|�|�|�t
j�tj}tj}	d}
|�||	�d}|�|�\}}
|�|�|j||	|
|
d�}|jd||d�}|�|�|��}|�|tj|j�|� |j!j"|j!j"�|� |j!j#|j!j#�|�$|j!j%|j!j%�|� |j!j&d�|� |j!j'd|j(�|�)|j!j*d�|� |j!j+d�|� |j!jdj,tj-�|� |j!jdj.tj/�|�0|j!jdj1|�|�$t|j!j2�d�|�3|j!j2�}|j4}|�|�\}}
|�|�|j||	|
|
d�}|j5d|g|j!j%|d	�}|�|�|��}|�|tj6|j�|� |j!j"|j!j"�|� |j!j#|j!j#�|� |j!j%|j!j%�|� |j!j&d�|�)|j!j*d�|� |j!j+d�|� |j!jdj,tj-�|� |j!jdj.tj/�|�0|j!jdj1|�|�$t|j!j2�d�|�3|j!j2�}|j4}|�|�\}}
|�7|�|j8d|jddd
�}|�|�|��}|j|tj9|jdd�|�$|j!j:d�|� |j!j|j!jd@�|� |j!j;d�|�<t|j!j=�|j!j:�|j||	|
d
d�}|j8d|jdd|d�}|�|�|��}|j|tj9|jdd�|�$|j!j:d�|� |j!j|j!j�|� |j!j;d�|�<t|j!j=�|j!j:�t
j�|j�}|�|�|�t
j�tj}tj}	d}
|�||	�d}|�|�\}}
|�|�|j||	|
|
d�}|j5d||d�}|�|�|��}|j|tj>|j|j?tj@Bdd�|�$|j!j:d�|� |j!jd�|� |j!j;d�|� |j!jAd�|� |j!jBtjC�|� |j!jDd�|� t|j!jE�d�|��}|�F|�|�G�dS)Nrrrr�rr�rrr&r r$r|r'r�rr)Hr&r'r�r(rr!r)r*r+r,r-r.r(rr)r*r+r,r-r.r/rr0r�r�r�r/r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFr1r2rXrYr3rGrHrIrJrKrLr�rrur�r�rr�r�r�r��rrPr�rQrRrr5r6r�r�r�r�r�r�rFrSrTr7rrr� test_spnego_connect_reauth_alter�s2


��
��
��
��
�
���
�

��
��
z0TestDCERPC_BIND.test_spnego_connect_reauth_altercCs�t��}t��}|g}t��}d|_t|�|_tjj	�
�|_
||_|g}|��}t
j�|j�}|�|�|�t
j�tj}tj}	d}
|�||	�d}|�|�\}}
|�|�|j||	|
|
d�}|jd||d�}|�|�|��}|�|tj|j�|� |j!j"|j!j"�|� |j!j#|j!j#�|�$|j!j%|j!j%�|� |j!j&d�|� |j!j'd|j(�|�)|j!j*d�|� |j!j+d�|� |j!jdj,tj-�|� |j!jdj.tj/�|�0|j!jdj1|�|�$t|j!j2�d�|�3|j!j2�}|j4}|�|�\}}
|�|�|j||	|
|
d�}|j5d|g|j!j%|d	�}|�|�|��}|�|tj6|j�|� |j!j"|j!j"�|� |j!j#|j!j#�|� |j!j%|j!j%�|� |j!j&d�|�)|j!j*d�|� |j!j+d�|� |j!jdj,tj-�|� |j!jdj.tj/�|�0|j!jdj1|�|�$t|j!j2�d�|�3|j!j2�}|j4}|�|�\}}
|�7|�|j8d|jddd
�}|�|�|��}|j|tj9|jdd�|�$|j!j:d�|� |j!j|j!j�|� |j!j;d�|�<t|j!j=�|j!j:�|j||	|
dd�}|j8d
|jdd|d�}|�|�|��}|j|tj9|jdd�|�$|j!j:d�|� |j!j|j!j�|� |j!j;d�|�<t|j!j=�|j!j:�t
j�|j�}|�|�|�t
j�tj}tj}	d}
|�||	�d}|�|�\}}
|�|�|j||	|
|
d�}|j>d|d�}|�|�|��}|j|tj?|j|j@tjABdd�|�$|j!j:d�|� |j!jd�|� |j!j;d�|� |j!jBd�|� |j!jCtjD�|� |j!jEd�|� t|j!jF�d�|��}|�G|�|�H�dS)Nrrrr�rr�rrr&r r$r'r�rrBr)Ir&r'r�r(rr!r)r*r+r,r-r.r(rr)r*r+r,r-r.r/rr0r�r�r�r/r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFr1r2rXrYr3rGrHrIrJrKrLrCr�rrur�r�r�r�r�r�r�rErrr� test_spnego_connect_reauth_auth3�s0


��
��
��
��
�
���
�

��
��
z0TestDCERPC_BIND.test_spnego_connect_reauth_auth3cCs�t��}|g}t��}d|_t|�|_tjj�	�|_	||_
|��}tj
�|j�}|�|�|�tj�tj}tj}d}|�||�d}	|�|	�\}
}|�|
�|j||||d�}|jd|g|d�}
|�|
�|��}|�|tj|
j�|�|j j!|
j j!�|�|j j"|
j j"�|�#|j j$|
j j$�|�|j j%d�|�|j j&d|j'�|�(|j j)d�|�|j j*d�|�|j jdj+tj,�|�|j jdj-tj.�|�/|j jdj0|�|�#t|j j1�d�|�2|j j1�}|j3}	|�|	�\}
}|�|
�|j|tj4||d�}|j5d|g|j j$|d	�}
|�|
�|��}|j|tj6|
j|
j7tj8Bdd
�|�#|j j9d�|�|j jd�|�|j j:d�|�|j j;d�|�|j j<tj=�|�|j j>d�|�t|j j?�d�|��}|�@|�|�A�dS�Nrrrr�rr�rrr&r)Br&r'r(rr!r)r*r+r,r-r.r(rr)r*r+r,r-r.r/r�r0r�r�r�r/r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFr1r2rrXr�rrurIrJr�r�rr�r�r�r�)rrPrQrRr5r6r�r�r�r�r�r�rFrSrTr7rrr�test_spnego_change_auth_level+s�


��
��
��
��
z-TestDCERPC_BIND.test_spnego_change_auth_levelcCst��}|g}t��}d|_t|�|_tjj�	�|_	||_
t��}d|_t|�|_tjj�	�|_	||_
|��}t
j�|j�}|�|�|�t
j�tj}tj}d}	|�||�d}
|�|
�\}}|�|�|j|||	|d�}
|jd|g|
d�}|�|�|��}|�|tj|j�|� |j!j"|j!j"�|� |j!j#|j!j#�|�$|j!j%|j!j%�|� |j!j&d�|� |j!j'd|j(�|�)|j!j*d�|� |j!j+d�|� |j!jdj,tj-�|� |j!jdj.tj/�|�0|j!jdj1|�|�$t|j!j2�d�|�3|j!j2�}|j4}
|�|
�\}}|�|�|j|tj5|	|d�}
|j6d|g|j!j%|
d	�}|�|�|��}|j|tj7|j|j8tj9Bdd
�|�$|j!j:d�|� |j!jd�|� |j!j;d�|� |j!j<d�|� |j!j=tj>�|� |j!j?d�|� t|j!j@�d�|��}|�A|�|�B�dSrH)Cr&r'r(rr!r)r*r+r,r-r.r�r(rr)r*r+r,r-r.r/r�r0r�r�r�r/r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFr1r2rrXr�rrurIrJr�r�r�r�r�r�r�)rrPrQrRr�r5r6r�r�r�r�r�r�rFrSrTr7rrr�test_spnego_change_abstractys�



��
��
��
��
z+TestDCERPC_BIND.test_spnego_change_abstractcCst��}t��}|g}t��}d|_t|�|_tjj	�
�|_
||_||g}t��}d|_t|�|_tjj	�
�|_
||_|��}t
j�|j�}|�|�|�t
j�tj}	tj}
d}|�|	|
�d}|�|�\}
}|�|
�|j|	|
||d�}|jd|g|d�}|�|�|��}|�|tj|j�|� |j!j"|j!j"�|� |j!j#|j!j#�|�$|j!j%|j!j%�|� |j!j&d�|� |j!j'd|j(�|�)|j!j*d�|� |j!j+d�|� |j!jdj,tj-�|� |j!jdj.tj/�|�0|j!jdj1|�|�$t|j!j2�d�|�3|j!j2�}|j4}|�|�\}
}|�|
�|j|	tj5||d�}|j6d|g|j!j%|d	�}|�|�|��}|j|tj7|j|j8tj9Bdd
�|�$|j!j:d�|� |j!jd�|� |j!j;d�|� |j!j<d�|� |j!j=tj>�|� |j!j?d�|� t|j!j@�d�|��}|�A|�|�B�dSrH)Cr&r'r�r(rr!r)r*r+r,r-r.r(rr)r*r+r,r-r.r/r�r0r�r�r�r/r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFr1r2rrXr�rrurIrJr�r�r�r�r�r�r��rrPr�rQrRr�r�r5r6r�r�r�r�r�r�rFrSrTr7rrr�test_spnego_change_transfer�s�



��
��
��
��
z+TestDCERPC_BIND.test_spnego_change_transfercCs�t��}t��}|g}t��}d|_t|�|_tjj	�
�|_
||_|��}t
j�|j�}|�|�|�t
j�tj}tj}d}	|�||�d}
|�|
�\}}|�|�|j|||	|d�}
|jd|g|
d�}|�|�|��}|�|tj|j�|� |j!j"|j!j"�|� |j!j#|j!j#�|�$|j!j%|j!j%�|� |j!j&d�|� |j!j'd|j(�|�)|j!j*d�|� |j!j+d�|� |j!jdj,tj-�|� |j!jdj.tj/�|�0|j!jdj1|�|�$t|j!j2�d�|�3|j!j2�}|j4}
|�|
�\}}|�|�|jtj5||	|d�}
|j6d|g|j!j%|
d	�}|�|�|��}|j|tj7|j|j8tj9Bdd
�|�$|j!j:d�|� |j!jd�|� |j!j;d�|� |j!j<d�|� |j!j=tj>�|� |j!j?d�|� t|j!j@�d�|��}|�A|�|�B�dSrH)Cr&r'r�r(rr!r)r*r+r,r-r.r(rr)r*r+r,r-r.r/r�r0r�r�r�r/r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFr1r2�DCERPC_AUTH_TYPE_KRB5rXr�rrurIrJr�r�r/r�r�r�r�)rrPr�rQrRr5r6r�r�r�r�r�r�rFrSrTr7rrr�test_spnego_change_auth_type1$s�


��
��
��
��
z-TestDCERPC_BIND.test_spnego_change_auth_type1cC�t��}t��}|g}t��}d|_t|�|_tjj	�
�|_
||_||g}t��}d|_t|�|_tjj	�
�|_
||_|��}t
j�|j�}|�|�|�t
j�tj}	tj}
d}|�|	|
�d}|�|�\}
}|�|
�|j|	|
||d�}|jd|g|d�}|�|�|��}|�|tj|j�|� |j!j"|j!j"�|� |j!j#|j!j#�|�$|j!j%|j!j%�|� |j!j&d�|� |j!j'd|j(�|�)|j!j*d�|� |j!j+d�|� |j!jdj,tj-�|� |j!jdj.tj/�|�0|j!jdj1|�|�$t|j!j2�d�|�3|j!j2�}|j4}|�|�\}
}|�|
�|jtj5|
||d�}|j6d|g|j!j%|d	�}|�|�|��}|j|tj7|j|j8tj9Bdd
�|�$|j!j:d�|� |j!jd�|� |j!j;d�|� |j!j<d�|� |j!j=tj>�|� |j!j?d�|� t|j!j@�d�|��}|�A|�|�B�dSrH)Cr&r'r�r(rr!r)r*r+r,r-r.r(rr)r*r+r,r-r.r/r�r0r�r�r�r/r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFr1r2rMrXr�rrurIrJr�r�r�r�r�r�r�rKrrr�test_spnego_change_auth_type2t�



��
��
��
��
z-TestDCERPC_BIND.test_spnego_change_auth_type2cCrOrH)Cr&r'r�r(rr!r)r*r+r,r-r.r(rr)r*r+r,r-r.r/r�r0r�r�r�r/r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFr1r2rrXr�rrurIrJr�r�rr�r�r�r�rKrrr�test_spnego_change_auth_type3�rQz-TestDCERPC_BIND.test_spnego_change_auth_type3cCs t��}|g}t��}d|_t|�|_tjj�	�|_	||_
|g}|��}tj
�|j�}|�|�|�tj�tj}tj}d}	|�||�d}
|�|
�\}}|�|�|j|||	|d�}
|jd||
d�}tj�|�}t|�}|tj8}|tj8}|t|�8}|j|||	||d�}
|jd||
d�}|�|�|��}|� |tj!|j"�|�#|j$j%|j$j%�|�#|j$j&|j$j&�|�'|j$j(|j$j(�|�#|j$j)d�|�#|j$j*d	|j+�|�,|j$j-d�|�#|j$j.d�|�#|j$jdj/tj0�|�#|j$jdj1tj2�|�3|j$jdj4|�|�'t|j$j5�d�|�6|j$j5�}|j7}
|�|
�\}}|�|�|j|||	|d�}
|j8d||j$j(|
d
�}tj�|�}t|�}|tj8}|tj8}|t|�8}|j|||	||d�}
|j8d||j$j(|
d
�}|�|�|��}|� |tj9|j"�|�#|j$j%|j$j%�|�#|j$j&|j$j&�|�#|j$j(|j$j(�|�#|j$j)d�|�,|j$j-d�|�#|j$j.d�|�#|j$jdj/tj0�|�#|j$jdj1tj2�|�3|j$jdj4|�|�'t|j$j5�d�|�6|j$j5�}|j7}
|�|
�\}}|�:|�|j;d|jddd�}|�|�|��}|j |tj<|j"dd�|�'|j$j=d�|�#|j$j|j$j�|�#|j$j>d�|�?t|j$j@�|j$j=�|j|||	d
d�}
|j;d|jdd|
d�}|�|�|��}|j |tj<|j"dd�|�'|j$j=d�|�#|j$j|j$j�|�#|j$j>d�|�?t|j$j@�|j$j=�|�Ad�|�B�dS)Nrrrr�rr��r�r�r��auth_pad_lengthr�rrr&r r$r'r�r�
disconnect)Cr&r'r(rr!r)r*r+r,r-r.r(rr)r*r+r,r-r.r/rr0r�r�r�r/rk�ndr_packr�r�r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFr1r2rXrYr3rGrHrIrJrKrL�_disconnectr��rrPrQrRrr5r6r�r�r�r�r�r�rFrS�req_pdu�auth_pad_okrTr7rrr�test_spnego_auth_pad_ok"s(


��

��
��
��

��
��
�
���
�
z'TestDCERPC_BIND.test_spnego_auth_pad_okcCs�t��}|g}t��}d|_t|�|_tjj�	�|_	||_
|g}|��}tj
�|j�}|�|�|�tj�tj}tj}d}	|�||�d}
|�|
�\}}|�|�|j|||	|d�}
|jd||
d�}tj�|�}t|�}|tj8}|tj8}|t|�8}|d}|j|||	||d�}
|jd||
d�}|�|�|��}|j |tj!|j"dd�|�#|j$j%tj&�|�#|j$j'd�|�#|j$j(dj)|j)�|�#|j$j(dj*|j*�|�#t|j$j+�d	�|�#|j$j+d
�|��}|�,|�|�-�dS)Nrrrr�rr�rSr$r�s).r&r'r(rr!r)r*r+r,r-r.r(rr)r*r+r,r-r.r/rr0r�r�r�r/rkrVr�r�r0r1r2r�rr4r5r�r�r�r�r�r�r�r�r�)rrPrQrRrr5r6r�r�r�r�r�r�rFrSrYrZ�auth_pad_badrTrrr�test_spnego_auth_pad_fail_bind�sx


��

��
�
�
z.TestDCERPC_BIND.test_spnego_auth_pad_fail_bindcCs�t��}|g}t��}d|_t|�|_tjj�	�|_	||_
|g}|��}tj
�|j�}|�|�|�tj�tj}tj}d}	|�||�d}
|�|
�\}}|�|�|j|||	|d�}
|jd||
d�}tj�|�}t|�}|tj8}|tj8}|t|�8}|j|||	||d�}
|jd||
d�}|�|�|��}|� |tj!|j"�|�#|j$j%|j$j%�|�#|j$j&|j$j&�|�'|j$j(|j$j(�|�#|j$j)d�|�#|j$j*d	|j+�|�,|j$j-d�|�#|j$j.d�|�#|j$jdj/tj0�|�#|j$jdj1tj2�|�3|j$jdj4|�|�'t|j$j5�d�|�6|j$j5�}|j7}
|�|
�\}}|�|�|j|||	|d�}
|j8d||j$j(|
d
�}tj�|�}t|�}|tj8}|tj8}|t|�8}|d}|j|||	||d�}
|j8d||j$j(|
d
�}|�|�|��}|j |tj9|j"|j:tj;Bdd�|�'|j$j<d�|�#|j$jd�|�#|j$j=d�|�#|j$j>d�|�#|j$j?tj@�|�#|j$jAd�|�#t|j$jB�d�|��}|�C|�|�D�dS)Nrrrr�rr�rSrrr&r)Er&r'r(rr!r)r*r+r,r-r.r(rr)r*r+r,r-r.r/rr0r�r�r�r/rkrVr�r�r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFr1r2rXr�rrurIrJr�r�r�r�r�r�r��rrPrQrRrr5r6r�r�r�r�r�r�rFrSrYrZrTr7r\rrr�test_spnego_auth_pad_fail_alter�s�


��

��
��
��

��
��
z/TestDCERPC_BIND.test_spnego_auth_pad_fail_altercCs�t��}|g}t��}d|_t|�|_tjj�	�|_	||_
|g}|��}tj
�|j�}|�|�|�tj�tj}tj}d}	|�||�d}
|�|
�\}}|�|�|j|||	|d�}
|jd||
d�}tj�|�}t|�}|tj8}|tj8}|t|�8}|j|||	||d�}
|jd||
d�}|�|�|��}|� |tj!|j"�|�#|j$j%|j$j%�|�#|j$j&|j$j&�|�'|j$j(|j$j(�|�#|j$j)d�|�#|j$j*d	|j+�|�,|j$j-d�|�#|j$j.d�|�#|j$jdj/tj0�|�#|j$jdj1tj2�|�3|j$jdj4|�|�'t|j$j5�d�|�6|j$j5�}|j7}
|�|
�\}}|�8|�d}|j|||	||d�}
|j9d|
d
�}|�|�|jdd�}|�:|�|�;�|j<d|jddd
�}|�|�|��}|j |tj=|j"dd�|�'|j$j>d�|�#|j$j|j$j�|�#|j$j?d�|�@t|j$jA�|j$j>�|j|||	dd�}
|j<d|jdd|
d�}|�|�|��}|j |tj=|j"dd�|�'|j$j>d�|�#|j$j|j$j�|�#|j$j?d�|�@t|j$jA�|j$j>�|�Bd�|�C�dS)Nrrrr�rr�rSrrrBr_r`r r$r'r�rrU)Dr&r'r(rr!r)r*r+r,r-r.r(rr)r*r+r,r-r.r.rr0r�r�r�r/rkrVr�r�r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFr1r2r3rCr�rorGrHrIrJrKrLrWr�rXrrr�test_ntlmssp_auth_pad_okhs�


��

��
��
��

�
���
�
z(TestDCERPC_BIND.test_ntlmssp_auth_pad_okcCs6t��}|g}t��}d|_t|�|_tjj�	�|_	||_
|g}|��}tj
�|j�}|�|�|�tj�tj}tj}d}	|�||�d}
|�|
�\}}|�|�|j|||	|d�}
|jd||
d�}tj�|�}t|�}|tj8}|tj8}|t|�8}|j|||	||d�}
|jd||
d�}|�|�|��}|� |tj!|j"�|�#|j$j%|j$j%�|�#|j$j&|j$j&�|�'|j$j(|j$j(�|�#|j$j)d�|�#|j$j*d	|j+�|�,|j$j-d�|�#|j$j.d�|�#|j$jdj/tj0�|�#|j$jdj1tj2�|�3|j$jdj4|�|�'t|j$j5�d�|�6|j$j5�}|j7}
|�|
�\}}|�8|�d}|j|||	||d�}
|j9d|
d
�}|�|�|��}|j |tj:|j"|j;tj<Bdd�|�'|j$j=d�|�#|j$jd�|�#|j$j>d�|�#|j$j?d�|�#|j$j@tjA�|�#|j$jBd�|�#t|j$jC�d�|��}|�D|�|�E�dS)Nrrrr�rr�rSrrrBr)Fr&r'r(rr!r)r*r+r,r-r.r(rr)r*r+r,r-r.r.rr0r�r�r�r/rkrVr�r�r0r1r2r3rr4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFr1r2r3rCr�rrurIrJr�r��#DCERPC_NCA_S_FAULT_REMOTE_NO_MEMORYr�r�r�r�r^rrr� test_ntlmssp_auth_pad_fail_auth3�s�


��

��
��
��
��
z0TestDCERPC_BIND.test_ntlmssp_auth_pad_fail_auth3cCsJ|��}|j||||||d�}	|	durdS|j||	|d�}
|
dur#dS|	S)N)r�r�r�r�r�rW)rXr��alter_fault)rer�rf)rr�r�r�rXr�rWrcr�r�r�rrr�_test_auth_bind_auth_level?s"��z*TestDCERPC_BIND._test_auth_bind_auth_levelcCs|��}|jtj|||d�S)N)r�r�r�rB)rer�r(r/)rr�rBr5rrr�_test_spnego_level_bind_nakSs�z+TestDCERPC_BIND._test_spnego_level_bind_nakrcCs\t��}|g}t��}d|_t|�|_tjj�	�|_	||_
tj}	d}
|j|	||
|||d�}|dur3dS|�
|�|d}|�
|�d}
t|
�tj}d}|dkrUtj|}|
d|7}
|tjkrh|�t|
��}nd}d|}|j|	|||
|d	�}|jd
|jd|
|d�}|tjkr�tj�|�}tj}t|�|j}|tj}|||�}|d|�}|�||�}|j|	|||
|d	�}|jd
|jd|
|d�}|�|�|��}|j|tj|j|j|Bdd
�|�|j j!d�|�"|j j|j�|�"|j j#d�|�"|j j$d�|�"|j j%|�|�"|j j&d�|�"t|j j'�d�|tj(@�rdS|��}|�)|�|�*�dS)N�r)r�r�r�rXr�rcr�rr�r[�r�r�rTr�r�rr�rr)+r&r'r(rr!r)r*r+r,r-r.r/rd�assertIsNotNone�DCERPC_AUTH_PAD_ALIGNMENTr��sig_sizer�rGrkrVr�rr��sign_packetr0r1r2r�rrr8r5rIr4rJr�r�r�r�rur�r�)rr�r�rc�
request_fault�response_fault_flagsrPrQrRr�r�r�r6�stub_binr�rTrk�zero_sigrFrS�req_blob�ofs_stub�ofs_sig�ofs_trailer�req_data�	req_whole�sigrTrrr�_test_spnego_level_bindYs�
�



��

��
�
z'TestDCERPC_BIND._test_spnego_level_bindcCr�r�)rer(r�r�rrrr�test_spnego_none_bind�rz%TestDCERPC_BIND.test_spnego_none_bindcCr�r�)rer(r�'DCERPC_BIND_NAK_REASON_INVALID_CHECKSUMrrrr�test_spnego_call_bind�rz%TestDCERPC_BIND.test_spnego_call_bindcCrr�rer(r�rrrr�test_spnego_0_bind�rz"TestDCERPC_BIND.test_spnego_0_bindcCrrr|rrrr�test_spnego_7_bind�rz"TestDCERPC_BIND.test_spnego_7_bindcCrrr|rrrr�test_spnego_255_bind�rz$TestDCERPC_BIND.test_spnego_255_bindcC�|jtjtjd�S�N)r�r�)rxr(rrrrr�test_spnego_connect_bind_none�rz-TestDCERPC_BIND.test_spnego_connect_bind_nonecCr�r�)rxr(rr�rrrr�test_spnego_connect_bind_sign�rz-TestDCERPC_BIND.test_spnego_connect_bind_signcCr�r�)rxr(rrrrrr�test_spnego_connect_bind_seal�rz-TestDCERPC_BIND.test_spnego_connect_bind_sealcC�|jtjtjtjd�S�N)r�r�rm)rxr(r	rr/rrrr�test_spnego_packet_bind_none�s�z,TestDCERPC_BIND.test_spnego_packet_bind_nonecC�|jtjtjtjtjd�S�N)r�r�rmrn)rxr(r	r�r�rurrrr�test_spnego_packet_bind_sign��
�z,TestDCERPC_BIND.test_spnego_packet_bind_signcCr�r�)rxr(r	rr�rurrrr�test_spnego_packet_bind_seal�r�z,TestDCERPC_BIND.test_spnego_packet_bind_sealcCr�r�)rxr(r�rr/rrrr�test_spnego_integrity_bind_none�s�z/TestDCERPC_BIND.test_spnego_integrity_bind_nonecCs|jtjtjtjtjd�Sr�)rxr(r�r�rurrrr�test_spnego_integrity_bind_sign��
�z/TestDCERPC_BIND.test_spnego_integrity_bind_signcCr�r�)rxr(r�rr�rurrrr�test_spnego_integrity_bind_seal�r�z/TestDCERPC_BIND.test_spnego_integrity_bind_sealcCr��N)r�r�rc)rxr(rrr/rrrr�test_spnego_privacy_bind_none���z-TestDCERPC_BIND.test_spnego_privacy_bind_nonecCr�r�)rxr(rr�r/rrrr�test_spnego_privacy_bind_signr�z-TestDCERPC_BIND.test_spnego_privacy_bind_signcCr�r�)rxr(rrrrr�test_spnego_privacy_bind_seal	rz-TestDCERPC_BIND.test_spnego_privacy_bind_sealc Cs�t��}|g}t��}d|_t|�|_tjj�	�|_	||_
|g}d}|j|||||d�}	|�|	�|	d}
|�|
�d}t|�tj
}d}
|dkrNtj
|}
|d|
7}|
�t|��}d|}|j|||
||d�}|jd	|jd||d
�}tj�|�}tj}t|�|j}|tj}|||�}|d|�}|
�||�}|j|||
||d�}|jd	|jd||d
�}|�|�|��\}}|j|tj|j|d�|�|jjd�|�|jj|jjd@�|�|jj d�|�!t|jj"�|jj�|�|j|�tj}|j#|j}|tj}|||�}|d|�}||d�}||d�}|�$|�}|�|j%|�|�|j&|�|�|j'd�|�|j(|�|�|j)|�|
�*|||�d
}t|�tj
}d}
|dk�r_tj
|}
|d|
7}|
�t|��}d|}|j|||
||d�}|jd|jd||d
�}tj�|�}tj}t|�|j}|tj}|||�}|d|�}|
�||�}|j|||
||d�}|jd|jd||d
�}|�|�|�+�}|j|tj,|j|j-tj.Bdd�|�|jjd�|�|jj|j�|�|jj d�|�|jj/d�|�|jj0tj1�|�|jj2d�|�t|jj3�d�d}t|�tj
}d}
|dk�r+tj
|}
|d|
7}|
�t|��}d|}|j|||
||d�}|jd|jd||d
�}tj�|�}tj}t|�|j}|tj}|||�}|d|�}|
�||�}|j|||
||d�}|jd|jd||d
�}|�|�|��\}}|j|tj|j|d�|�|jjd�|�|jj|jjd@�|�|jj d�|�!t|jj"�|jj�|�|j|�tj}|j#|j}|tj}|||�}|d|�}||d�}||d�}|�$|�}|�|j%|�|�|j&|�|�|j4d�|�|j'd�|�|j(|�|�|j)|�|
�*|||�d}t|�tj
}d}
|dk�rCtj
|}
|d|
7}|
�t|��}d|}|j|||
||d�}|jd|jd	||d
�}tj�|�}tj}t|�|j}|tj}|||�}|d|�}|
�||�}|j|||
||d�}|jd|jd	||d
�}|�|�|��\}}|j|tj|j|d�|�|jjd�|�|jj|jjd@�|�|jj d�|�!t|jj"�|jj�|�|j|�tj}|j#|j}|tj}|||�}|d|�}||d�}||d�}|�$|�}|�|j%|�|�|j&|�|�|j4d�|�|j'd�|�|j(|�|�|j)|�|
�*|||�dS)Nrfr)r�r�r�rWrXrrrr�rhr�rr$r|rgrr�rsr�r�r�)5r&r'r(rr!r)r*r+r,r-r.rdrirjrkr�rGrkrVr�rr�rlr0�recv_pdu_rawr2rHrr8r5rIr4rJrKrL�frag_lengthr1r�r��
auth_reservedr�r2�check_packetr1r�rrur�r�r�r�r�rT) rr�r��hdr_signrPrQrRrr�r�r6ror�rTrkrprFrSrqrrrsrtrurvrwrT�rep_blob�rep_data�	rep_whole�rep_sig�rep_auth_info_blob�
rep_auth_inforrr�%_test_auth_signing_auth_level_request
s
�


��
��
�



��
��
��

��
��
�



��
��
�

z5TestDCERPC_BIND._test_auth_signing_auth_level_requestcC�|�tjtj�Sr�r�r(r/r	rrrr�test_spnego_signing_packet��z*TestDCERPC_BIND.test_spnego_signing_packetcC�|jtjtjdd�S�NT)r�r�rrrr�test_spnego_hdr_signing_packet ��z.TestDCERPC_BIND.test_spnego_hdr_signing_packetcCr�r�r�r(r/r�rrrr�test_spnego_signing_integrity'��z-TestDCERPC_BIND.test_spnego_signing_integritycCr�r�r�rrrr�!test_spnego_hdr_signing_integrity+��z1TestDCERPC_BIND.test_spnego_hdr_signing_integritycCr�r�r�r(r.r	rrrr�test_ntlm_signing_packet0r�z(TestDCERPC_BIND.test_ntlm_signing_packetcCr�r�r�rrrr�test_ntlm_hdr_signing_packet6r�z,TestDCERPC_BIND.test_ntlm_hdr_signing_packetcCr�r�r�r(r.r�rrrr�test_ntlm_signing_integrity=r�z+TestDCERPC_BIND.test_ntlm_signing_integritycCr�r�r�rrrr�test_ntlm_hdr_signing_integrityAr�z/TestDCERPC_BIND.test_ntlm_hdr_signing_integritycCr�r�r�r(rMr	rrrr�test_krb5_signing_packetFr�z(TestDCERPC_BIND.test_krb5_signing_packetcCr�r�r�rrrr�test_krb5_hdr_signing_packetLr�z,TestDCERPC_BIND.test_krb5_hdr_signing_packetcCr�r�r�r(rMr�rrrr�test_krb5_signing_integritySr�z+TestDCERPC_BIND.test_krb5_signing_integritycCr�r�r�rrrr�test_krb5_hdr_signing_integrityWr�z/TestDCERPC_BIND.test_krb5_hdr_signing_integritycCsXtjj��}t��}|g}tjj��}d|_t|�|_	||_||_
|j|dtjd�}dS)Nr�rXr9�
nak_reason)
r+r(r,r-r&r'rr!r)r*r.rfr�)rrxryrQrXr�rrr�test_assoc_group_fail1\s
�z&TestDCERPC_BIND.test_assoc_group_fail1cCs�tjj��}t��}|g}tjj��}d|_t|�|_	||_||_
|j|d�}|�d�|�
�t�d�|��|j||jjtjd�}dS)Nr)rX�test_assoc_group_fail2g�?r�)r+r(r,r-r&r'rr!r)r*r.rfrWr��time�sleep�connectr5r9r�)rrxryrQrXr�rrrrr�ks"


�z&TestDCERPC_BIND.test_assoc_group_fail2cCsjtjj��}t��}|j||ddd�\}}|��}|j||ddd�\}}|�|j	j
|j	j
�|�d�dS)NrT�r!r�r�End of Test)r+r(r,r-r&r'r��second_connectionr8r5r9rW)rrxryrRr~�conn2r�rrrr�test_assoc_group_diff1�s
�
�
z&TestDCERPC_BIND.test_assoc_group_diff1c	Cs�tjj��}t��}|j||ddd�\}}|��}|j|||jj	ddd�\}}tjj�
�}|jd||d�|jd||d�|jd||tjjjtjjj
BtjjjBtjdd�|jd||d�|jd||d�|�d	�dS)
NrTr�r�r9r!r��rrXrcr�rrXrc�fault_pfc_flags�fault_status�fault_context_idr�)r+r(r,r-r&r'r�r�r5r9rgrqr^r_rur�rW�	rrxryrRr~r�r�rrgrrr�test_assoc_group_ok1�s4
�
�
���
z$TestDCERPC_BIND.test_assoc_group_ok1c	Cs�tjj��}t��}|jdd|��d�|j||ddd�\}}|�	�}|j|||j
jddd�\}}tjj��}|j
d||d	�|j
d||d	�|j
d||tjjjtjjjBtjjjBtjd
d�|j
d||d	�|j
d||d	�|�d�dS)
N�\pipe\lsarpc�\pipe\lsass��primary_addressr;�transport_credsrTr�rr�r�rr�r�)r+r(r,r-r&r'�reconnect_smb_piperer�r�r5r9rgrqr^r_rur�rWr�rrr�test_assoc_group_ok2�s<�
�
�
���
z$TestDCERPC_BIND.test_assoc_group_ok2cCsLtjj��}t��}|j||ddd�\}}|jdd|��d�}|g}tjj�	�}d|_
t|�|_||_||_
|j||jjtjd�}|��}	|�|	�|��|��}
|
j|||jjd	dd
�\}}tjj��}
|jd||
d�|
jd||
d�|
jd||
tjjjtjjjBtjjjBtjdd
�|jd||
d�|
jd||
d�|
�d�dS)NrTr�r�r�r��r�rr�r�rr�r�)r+r(r,r-r&r'r�r�rerr!r)r*r.rfr5r9r�r1r�r�rgrqr^r_rur�rW)rrxryrRr~�connF�	tsfF_list�ctxFr�rTr�r�rrgrrr�test_assoc_group_fail3�sT
��
�

�
���
z&TestDCERPC_BIND.test_assoc_group_fail3cCsHtj}tj}d}|��}tjj��}t��}|g}tjj�	�}	d|	_
t|�|	_||	_||	_
|j||||dd�}
|jd|	|
d�}tjj��}|jd|	||
d�|jd|	tjtjBtjB|jjdd	�}
|�|
d
�|ryd|
d
<|
d�tj�d}ntj}|jd|	||
|d
�|dur�|��}|�|�|��dS|jd|	||
d�dS)NrFrV�rrXr�r�rrXrcr�r�T�rrXrr9rZrWrr�rrXrcr�r�r�)r(rMr�rer+r,r-r&r'rr!r)r*r.r�rfrgrqr^r_rjr5r9r�r-r�FEATURE_SIGN_PKT_HEADERr/r1r�r�)r�
do_upgrader�r�r�r�rxryrQrXr�r�rgrr�rTrrr�_test_krb5_hdr_sign_delayed1�sl
��
����
�

�z,TestDCERPC_BIND._test_krb5_hdr_sign_delayed1cC�|jdd�S�NT�r��r�rrrr�test_krb5_hdr_sign_delayed1_ok1<rz/TestDCERPC_BIND.test_krb5_hdr_sign_delayed1_ok1cCr��NFr�r�rrrr�!test_krb5_hdr_sign_delayed1_fail1?rz1TestDCERPC_BIND.test_krb5_hdr_sign_delayed1_fail1cCs tj}tj}d}|��}tjj��}t��}|g}tjj�	�}	d|	_
t|�|	_||	_||	_
|j||||dd�}
|jd|	|
tjtjBtjBd�}|�|
d�|r_d|
d<|
d�tj�d}ntj}tjj��}
|jd|	|
|
|d	�|dur�|��}|�|�|��dS|jd
|	|
|
d�dS)NrFrV)rrXr�rrrWTrrr�r�r�)r(rMr�rer+r,r-r&r'rr!r)r*r.r�rfr^r_rjr�r-rr�r/rgrqr1r�r�)rr�r�r�r�r�rxryrQrXr�r�r�rgrTrrr�_test_krb5_hdr_sign_delayed2Bs^
�	���
�

�z,TestDCERPC_BIND._test_krb5_hdr_sign_delayed2cCr�r��r�rrrr�test_krb5_hdr_sign_delayed2_ok1{rz/TestDCERPC_BIND.test_krb5_hdr_sign_delayed2_ok1cCr�r�r�rrrr�!test_krb5_hdr_sign_delayed2_fail1~rz1TestDCERPC_BIND.test_krb5_hdr_sign_delayed2_fail1cCstj}tj}d}|��}tjj��}t��}|g}tjj�	�}d|_
t|�|_||_||_
|j||||dd�}	|jd||	tjtjBtjBdd�}
tjj��}|jd|||	d�|�|	d�d|	d<|	d	�tj�tj}|jd
|||	|d�|��}
|�|
�|��dS)NrFrVT)rrXr�rr�	use_auth3rr�rWrrr�)r(rMr�rer+r,r-r&r'rr!r)r*r.r�rfr^r_rjrgrqr�r-rr�r/r1r�r�)rr�r�r�r�rxryrQrXr�r�rgr�rTrrr�!test_krb5_hdr_sign_delayed3_fail1�sX
�	���
�
�
z1TestDCERPC_BIND.test_krb5_hdr_sign_delayed3_fail1cCs�|��}d}d}tj}tj}d}	|��}
|
��}|
��}tj}
tj}d}tjj�	�}t
��}|jdd|d�|�
�|g}tjj��}d|_t|�|_||_	||_|j||||	dd	�}|j|
|
||dd	�}tjj��}|j|_d|_t
�d�|_|jd
||d�}|jd||d�|�|jd
t�|�|j |�|�|j!j"|�|jd|||d
�|�|jd
t�|�|j |�|�|j!j"|�|jd|||j#j$dd�}|jd||d�|�|jd
t�|�|j |�|�|j!j"|�|jd|||d
�|�|jd
t�|�|j |�|�|j!j"|�|jd|||d
�|�|jd
t�|�|j |�|�|j!j"|�|jd||d�|�|jd
t�|�|j |�|�|j!j"|�dS)N�ANONYMOUS LOGON�NT AUTHORITYrrr�r�r�FrVrr�r�r�r�TrYrr�r�r�%r(r(r.rre�get_username�
get_domainr+�lsar-r&r'r�rorr!r)r*r.r��GetUserNamer��in_system_name�in_account_name�ndr_pointer�in_authority_namerfrqr4r@r�assertEqualsStrLower�out_account_name�out_authority_name�valuer5r9)r�	smb_creds�
account_name0�authority_name0�creds1�
account_name1�authority_name1�
auth_type1rtru�creds2�
account_name2�authority_name2�
auth_type2rvrwrxryrQrRrzr{�
get_user_namer~rrrr�_test_lsa_multi_auth_connect1�s��
���
��
�
�z-TestDCERPC_BIND._test_lsa_multi_auth_connect1cC�&|��}|��}|��}|�|||�Sr)rer�r�r�r�smb_auth_credsrrrrr�test_lsa_multi_auth_connect1u��z-TestDCERPC_BIND.test_lsa_multi_auth_connect1ucC�|��}d}d}|�|||�S�Nr�r�)r(rr
rrr�test_lsa_multi_auth_connect1a'��z-TestDCERPC_BIND.test_lsa_multi_auth_connect1acCs�|��}d}d}tj}tj}d}	|��}
|
��}|
��}tj}
tj}d}tjj�	�}t
��}|jdd|d�|�
�|g}tjj��}d|_t|�|_||_	||_|j||||	dd	�}|j|
|
||dd	�}tjj��}|j|_d|_t
�d�|_|jd
|d�}|jd||d�|�|jd
t�|�|j |�|�|j!j"|�|jd|||j#j$d
d�}|jd||d�|�|jd
t�|�|j |�|�|j!j"|�|jd|||d�|�|jd
t�|�|j |�|�|j!j"|�|jd|||j#j$d
d�}|jd||d�|�|jd
t�|�|j |�|�|j!j"|�|jd|||d�|�|jd
t�|�|j |�|�|j!j"|�|jd|||d�|�|jd
t�|�|j |�|�|j!j"|�|jd||d�|�|jd
t�|�|j |�|�|j!j"|�dS)Nr�r�rrr�r�r�FrVr�rrXr�TrYr�rr�r�r�rro�	r��rr�rrrrrrrtrurrrr	rvrwrxryrQrRrzr{r
r}r~rrrr�_test_lsa_multi_auth_connect2/s��
���

��
�
�z-TestDCERPC_BIND._test_lsa_multi_auth_connect2cCrr)rer�r�rr
rrr�test_lsa_multi_auth_connect2u�rz-TestDCERPC_BIND.test_lsa_multi_auth_connect2ucCrr)r(rr
rrr�test_lsa_multi_auth_connect2a�rz-TestDCERPC_BIND.test_lsa_multi_auth_connect2acCsx|��}d}d}tj}tj}d}	|��}
|
��}|
��}tj}
tj}d}tjj�	�}t
��}|jdd|d�|�
�|g}tjj��}d|_t|�|_||_	||_|j||||	dd	�}|j|
|
||dd	�}tjj��}|j|_d|_t
�d�|_|jd
|d�}|jd||d�|�|jd
t�|�|j |�|�|j!j"|�|jd|||j#j$d
d�}|jd||d�|�|jd
t�|�|j |�|�|j!j"|�|jd||d�|�|jd
t�|�|j |�|�|j!j"|�|jd|||d�|�|jd
t�|�|j |�|�|j!j"|�|jd||d�|�|jd
t�|�|j |�|�|j!j"|�|jd|||j#j$d
d�}|jd||d�|�|jd
t�|�|j |�|�|j!j"|�|jd|||d�|�|jd
t�|�|j |�|�|j!j"|�|jd|||d�|�|jd
t�|�|j |�|�|j!j"|�|jd||d�|�|jd
t�|�|j |�|�|j!j"|�dS)Nr�r�rrr�r�r�FrVrrr�TrYr�rr�r�r�rror�
�r�rrrr�_test_lsa_multi_auth_connect3�s��
���
��
�
�z-TestDCERPC_BIND._test_lsa_multi_auth_connect3cCrr)rer�r�rr
rrr�test_lsa_multi_auth_connect3u3rz-TestDCERPC_BIND.test_lsa_multi_auth_connect3ucCrr)r(rr
rrr�test_lsa_multi_auth_connect3a;rz-TestDCERPC_BIND.test_lsa_multi_auth_connect3ac*Cs�|��}d}d}tj}tj}d}	|��}
|
��}|
��}tj}
tj}d}|��}d}d}tj}tj}d}|��}|��}|��}tj}tj}d}tjj�	�}t
��}|jdd|d	�|�
�|g}tjj��}d|_t|�|_||_	||_|j||||	d
d�} |j|
|
||d
d�}!|j||||d
d�}"|j||||d
d�}#tjj��}$|j|$_d|$_t
�d�|$_|jd|d
�}%|jd||$d�|�|$jdt�|�|$j |�|�|$j!j"|�|jd|| |%j#j$dd�}&|jd||$d�|�|$jdt�|�|$j |�|�|$j!j"|�|jd||$d�|�|$jdt�|�|$j |�|�|$j!j"|�|jd||!|%j#j$dd�}'|jd||$d�|�|$jdt�|�|$j |�|�|$j!j"|�|jd||$d�|�|$jdt�|�|$j |�|�|$j!j"|�|jd||"|%j#j$dd�}(|jd||$d�|�|$jdt�|�|$j |�|�|$j!j"|�|jd||$d�|�|$jdt�|�|$j |�|�|$j!j"|�|jd||#|%j#j$dd�})|jd||$d�|�|$jdt�|�|$j |�|�|$j!j"|�|jd||$d�|�|$jdt�|�|$j |�|�|$j!j"|�|jd||$| d�|�|$jdt�|�|$j |�|�|$j!j"|�|jd||$d�|�|$jdt�|�|$j |�|�|$j!j"|�|jd||$| d�|�|$jdt�|�|$j |�|�|$j!j"|�|jd||$|!d�|�|$jdt�|�|$j |�|�|$j!j"|�|jd||$|"d�|�|$jdt�|�|$j |�|�|$j!j"|�|jd ||$|#d�|�|$jdt�|�|$j |�|�|$j!j"|�|jd!||$d�|�|$jdt�|�|$j |�|�|$j!j"|�dS)"Nr�r�rrr�rr�r�r�FrVrrr�TrYr�r�rrorrrr��
�r�r�r[����r�)*rr�rrrrrrrtrurrrr	rvrw�creds3�
account_name3�authority_name3�
auth_type3�auth_level3�auth_context_id3�creds4�
account_name4�authority_name4�
auth_type4�auth_level4�auth_context_id4rxryrQrRrzr{�
auth_context3�
auth_context4r
r}r~r�ack3�ack4rrr�_test_lsa_multi_auth_connect4CsJ�
������	�	�	
�
�
�
�
�z-TestDCERPC_BIND._test_lsa_multi_auth_connect4cCrr)rer�r�r6r
rrr�test_lsa_multi_auth_connect4urz-TestDCERPC_BIND.test_lsa_multi_auth_connect4ucCrr)r(r6r
rrr�test_lsa_multi_auth_connect4arz-TestDCERPC_BIND.test_lsa_multi_auth_connect4ac!Cs8|��}|��}|��}tj}tj}d}	|��}
|
��}|
��}tj}
tj}d}|��}d}d}tj}tj}d}tjj	�
�}t��}|j
dd|d�|��|g}tjj��}d|_t|�|_||_
||_|j||||	d	d
�}|j|
|
||d	d
�}|j||||d	d
�}tjj	��}|j|_d|_t�d�|_|jd||d�}|jd||d
�|�|jdt�|� |j!|�|� |j"j#|�|jd|||d�|�|jdt�|� |j!|�|� |j"j#|�|jd||d
�|�|jdt�|� |j!|�|� |j"j#|�|jd|||j$j%dd�}|jd||d
�|�|jdt�|� |j!|�|� |j"j#|�|jd|||d�|�|jdt�|� |j!|�|� |j"j#|�|jd|||d�|�|jdt�|� |j!|�|� |j"j#|�|jd||d
�|�|jdt�|� |j!|�|� |j"j#|�|jd|||j$j%dd�} |jd||d
�|�|jdt�|� |j!|�|� |j"j#|�|jd||d
�|�|jdt�|� |j!|�|� |j"j#|�|jd|||d�|�|jdt�|� |j!|�|� |j"j#|�|jd||d
�|�|jdt�|� |j!|�|� |j"j#|�dS)Nrrr�r�r�r�r�r�FrVrr�r�r�rTrYr�r�rrorrrr�r )&rer�r�r(r.r�r(rr+r�r-r&r'r�rorr!r)r*r.r�r�r�r�r�r�r�rfrqr4r@rr�r�r�r�r5r9)!rr�rrrrrrrtrurrrr	rvrwr&r'r(r)r*r+rxryrQrRrzr{r2r
r~rr4rrr�"_test_lsa_multi_auth_sign_connect1$s��
����

��
�
��
�z2TestDCERPC_BIND._test_lsa_multi_auth_sign_connect1cCrr)rer�r�r9r
rrr�"test_lsa_multi_auth_sign_connect1u�rz2TestDCERPC_BIND.test_lsa_multi_auth_sign_connect1ucCrr)r(r9r
rrr�"test_lsa_multi_auth_sign_connect1a�rz2TestDCERPC_BIND.test_lsa_multi_auth_sign_connect1acCs�tj}tj}d}tj}d}|��}tjj��}t�	�}|g}	tjj�
�}
d|
_t|	�|
_
||
_|	|
_|j||||dd�}|j||||dd�}|jd|
d�}
|jd|
||
jjdd�}|jd|
||
jjdd�}tjj��}|jd	|
|d
�|jd|
||d�|jd
|
||d�|jd|
tjtjBtjB|
jjdd�}|�|d�d|d<|d�tj�|jd|
|d
�|jd|
||d�|jd|
||tjd�|��}|�|�|��dS)NrrFrVrTrYr�rr�r�r�r�rr�rWrrorrr�) r(r/r�r	rer+r,r-r&r'rr!r)r*r.r�rfr5r9rgrqr^r_rjr�r-rr�r/r1r�r�)rr�rtrurvrwr�rxryrQrXrzr{r}r~rrgr4rTrrr�%test_spnego_multiple_auth_hdr_signing�s�
����
�
����
�
�
z5TestDCERPC_BIND.test_spnego_multiple_auth_hdr_signingc	Cs*|��}tjj��}t��}|g}tjj��}d|_t	|�|_
||_||_|jd|d�}tjj�
�}tjjddd�}|durCt|�}	nd}	td|	d�D]9}
tj}tj}|
}
|j||||
d	d
�}d}|
|	kritj}|j|
|||jj|dd�}|dur|n
|j|
|||d�qL|��}|�|�|��dS)
Nrrr�MAX_NUM_AUTHT)�
allow_missingirFrV)rrXr�r9rcrZr�)rer+r(r,r-r&r'rr!r)r*r.rf�is_server_listening�tests�env_get_var_value�int�ranger/r�r�r�r5r9rqr1r�r�)rr�rxryrQrXr}r?�max_num_auth_str�max_num_auth�ir�r�r�r�rcr�rTrrr�test_multiple_auth_limitsZ

���
z(TestDCERPC_BIND.test_multiple_auth_limit)rFNNFFNNNNNN)rNNFFNNNNNN)NFFNNNNN)NNNNN)NNNN)FF)F)��__name__�
__module__�__qualname__r
rUrZr`rbrerhrkrprsrvrxrzr}rr�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(�(DCERPC_BIND_NAK_REASON_INVALID_AUTH_TYPEr�r�rrrr
rr
rrrrrrrrr3r6r9r:r=r@rCrFrIrLrOrRrUr�r0r�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�rrrrr
rrrrrrrrrrr!r$r%r8r9r<r>r?r@rArDrFrGrIrJrLrNrPrRr[r]r_r`rbr�rdrzrerxryr{r}r~rr�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�rrrrrrrrrr6r7r8r9r:r;r<rG�
__classcell__rrrrr,sL+?			
	
		
		
					
62DW;>M|$#(##
�7
�L �%�!�� �yI�m?,"#115+0qUVNTWPWW@pwa���\ .A95iv~RIr�__main__T)rh�osr��path�insert�environ�samba.dcerpc.dcerpcr(�samba.dcerpc.baser&�samba.dcerpc.miscr��samba.dcerpc.epmapperr+�samba.dcerpc.mgmt�samba.dcerpc.netlogon�samba.dcerpc.lsar�r�samba.tests.dcerpc.raw_testcaser�samba.ntstatusrrr
rrH�unittest�mainrrrr�<module>s�
d�