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_testcase.cpython-310.pyc
o

��a@��@s�ddlZddlZddlmmZddlZddlZddlmmZddl	Zddlm
Z
ddlmZddl	m
Z
ddlmZmZmZddlmZmZmZddlmZddlmZdd	lmZdd
lmZGdd�de�ZGd
d�de
�ZdS)�N)�gensec)�Credentials)�TestCase)�ndr_pack�
ndr_unpack�ndr_unpack_out)�!NT_STATUS_CONNECTION_DISCONNECTED�NT_STATUS_PIPE_DISCONNECTED�NT_STATUS_IO_TIMEOUT)�
NTSTATUSError)�param)�libsmb_samba_internal)�SMB_SIGNING_REQUIREDc@s8eZdZdd�Zdd�Zdd�Zd
dd	�Zd
d
d�ZdS)�smb_pipe_socketcCsdt��}|�|j�|��}|�t�tj|d||dd�|_	|�|�|j	j
|dddd|d�|_dS)	NzIPC$T)�creds�ipci���i@@)�
DesiredAccess�ShareAccess�CreateDisposition�
CreateOptions�ImpersonationLevel)�s3param�get_context�load�
configfile�get_smb_ipc_signing�set_smb_ipc_signingr�libsmb�Conn�smbconn�create�smbfid)�self�target_hostname�pipenamer�impersonation_level�lp�lp3�saved_signing_state�r+�A/usr/lib/python3/dist-packages/samba/tests/dcerpc/raw_testcase.py�__init__*s 

�
�zsmb_pipe_socket.__init__cCs|j�|j�|`dS�N)r!�closer#�r$r+r+r,r/:szsmb_pipe_socket.closecCs(t|d�}|dksJ�|j�|�dS)Ni�r)�intr!�
settimeout)r$�timeo�msecsr+r+r,r2>szsmb_pipe_socket.settimeoutrcCs|jj|j|ddd�S)Nr�)�buffer�offset�mode)r!�writer#)r$�buf�flagsr+r+r,�sendFszsmb_pipe_socket.sendc
Cs�z|jj|jd|d�WStyC}z,|jdtkr!WYd}~dS|jdtkr/WYd}~dS|jdtkr=t�	t
|���|�d}~ww)Nr)r7�size�)r!�readr#r�argsrr	r
�socket�timeout�str)r$�lenr;�er+r+r,�recvIs��zsmb_pipe_socket.recvN)r)�__name__�
__module__�__qualname__r-r/r2r<rFr+r+r+r,r(s
rc
sBeZdZdZdd�Zdd�Zdd�Zdd	�Z�fd
d�Z�fdd
�Z	dd�Z
		dUdd�Z		dVdd�Zdd�Z
dd�Z		dWdd�ZdejjjejjjBdddddejjjejjjBdf	dd�ZddddejjjejjjBddfd d!�Zdddddd"d"ejjjejjjBdddddf
d#d$�ZdXd%d&�ZdXd'd(�ZdXd)d*�ZdUd+d,�ZdUd-d.�Z						dYd/d0�Z		dZd1d2�Z		dXd3d4�Zd5dejjjejjjBejjjdddgddfd6d7�Z ejejBddddddddf	d8d9�Z!d5dejjjejjjBejjjdddgdfd:d;�Z"ejjjejjjBdddgd<ddfd=d>�Z#ejjjejjjBdddgd<ddfd?d@�Z$ejjjejjjBd<ddfdAdB�Z%ejjjejjjBdddddd<ddf	dCdD�Z&ejjjejjjBd<ddfdEdF�Z'ejjjejjjBd<ddfdGdH�Z(ejjjejjjBddfdIdJ�Z)dKdL�Z*dMdN�Z+dOdP�Z,dQdR�Z-dSdT�Z.�Z/S)[�
RawDCERPCTestzA raw DCE/RPC Test case.cCs<|jdurdS|j��d|_|jrtj�d|�dSdS)Nzdisconnect[%s]
)�sr/�
do_hexdump�sys�stderrr9)r$�reasonr+r+r,�_disconnectXs

�zRawDCERPCTest._disconnectc
Cst|j�}zlz9t�|j|tjtjtjd�|_t�|jdd|jdd|jdd�|_	|j	�
d�|j	�|jdd�Wn0tjyR}z|j	�
��d}~wtyc}z|j	�
��d}~wtyo}z�d}~wwWnwd|_d|_|jdur�|j|_||_dS)Nrr��
�i�)r1�primary_addressrA�getaddrinfo�host�	AF_UNSPEC�SOCK_STREAM�SOL_TCP�arKr2�connect�errorr/�IOError�	Exception�
max_xmit_frag�
max_recv_frag�secondary_address�tcp_port)r$rbrEr+r+r,�_connect_tcp`s8
�.
�
����


zRawDCERPCTest._connect_tcpcCs�|j�d�}|�t|�d�|�|dd�|�|dd�|d}t|j||j|j|j�|_	d|_
d|_|jdur@|j|_dSdS)	N�\�r�r�piperQi�)
rT�split�assertEqualrDrr%�transport_creds�transport_impersonation�lp_ctxrKr_r`ra)r$rZr&r+r+r,�_connect_smbzs �
�zRawDCERPCTest._connect_smbcCs<|��|j�d�r|��n|��|jdur|j|_dS)Nz\pipe\)�assertNotConnectedrT�
startswithrmrcrar0r+r+r,r[�s

zRawDCERPCTest.connectcs�tt|���d|_d|_tjjddd�|_tj�d�|_	tjjddd�|_
|j
dur/|j	|_
d|_d|_|�
�|_d|_i|_tj��|jd	<|_|j
|jd
<d|_|��dS)NF�IGNORE_RANDOM_PADT)�
allow_missing�SERVER�TARGET_HOSTNAME�135rQrlr%)�superrJ�setUp�do_ndr_printrL�samba�tests�env_get_var_value�ignore_random_padrVr%rTra�get_anon_credsrjrk�settings�env_loadparmrlrKr[r0��	__class__r+r,rv�s&�

zRawDCERPCTest.setUpcs|�d�tt|���dS)N�tearDown)rPrurr�r0rr+r,r��s
zRawDCERPCTest.tearDowncCsdSr.r+r0r+r+r,�noop�szRawDCERPCTest.noopNcCsX|�d�|�|�||_|dur||_nd|_|dur||_|dur&||_|��dS)N�reconnect_smb_pipe)rP�assertIsNotNonerTrarjrkr[)r$rTrarjrkr+r+r,r��s

z RawDCERPCTest.reconnect_smb_pipecCs�tdd�}|j|_|j|_|j|_|j|_|j|_|dur,||_|dur(||_nd|_n
|�|�|j|_|j|_|durA||_	n|j	|_	|durM||_
n|j
|_
|j|_|j|_d|_
|��|S)Nr�)�
methodName)rJrwrLr{rVr%rTra�assertIsNonerjrkrlr}rKr[)r$rTrarjrk�cr+r+r,�second_connection�s2

zRawDCERPCTest.second_connectioncCsjt�}|��tj�d�}tj�d�}tj�d�}tj�d�}|�|�|�|�|�|�|�|�|S)N�DOMAIN�REALM�USERNAME�PASSWORD)	r�guessrxryrz�
set_domain�	set_realm�set_username�set_password)r$r��domain�realm�username�passwordr+r+r,�get_user_creds�s



zRawDCERPCTest.get_user_credscCst�}|��|Sr.)r�
set_anonymous)r$r�r+r+r,r|�szRawDCERPCTest.get_anon_credsFc
Cs�|dur|}tj�|j�}|�|�|�tj�|�||�|tj	kr&d}n
|tj
kr.d}nd}i}	||	d<||	d<||	d<||	d<||	d<||	d<||	d	<|	S)
NTF�	auth_type�
auth_level�auth_context_id�g_auth_levelr�hdr_signing�expect_3legs)r�Security�start_clientr}�set_credentials�want_feature�FEATURE_DCE_STYLE�start_mech_by_authtype�dcerpc�DCERPC_AUTH_TYPE_KRB5�DCERPC_AUTH_TYPE_NTLMSSP)
r$rr�r�r�r�r��gr��auth_contextr+r+r,�get_auth_context_creds�s(


z$RawDCERPCTest.get_auth_context_credsrcCsr|g}|dur4|dr|tjO}|d}d}
|d�|
�\}}|�|�|j|d|d|d|d�}nd}|r�|j|||d	||d
�}|�|�|��}|dur�|j|t	jjj
|j|jt	jjj
Bdd�|�|jjd�|�|jjd�|�|jjd�|�|jjd�|�|jj|�|�|jjd�|�t|jj�d�dS|j|t	jjj|j|jd
�|�|jj|jj�|�|jj|jj�|�|jj|�|�|jjd�|�|jjd�|�|jj d�n�|j!|||||d
�}|�|�|��}|du�r;|j|t	jjj"|jdd�|�|jj#|�|�|jj$d�|�|jj%dj&|j&�|�|jj%dj'|j'�|�|jj(d�dS|j|t	jjj)|j|d
�|�|jj|jj�|�|jj|jj�|dk�rj|�|jj|�n|�|jjd�|jj}|j}t|�d}d|d}|dk�r�d|}nd}|�|jj|�|�|jj|�|�|jj |�|�|jj*d�|�|jj+dj,t	jjj-�|�|jj+dj.t	jjj/�|�0|jj+dj1|j2d�|}|du�r�|�|j3d�|�t|jj4�d�|S|�|j3d�|�5t|jj4�t	jjj6�|�|j3t|jj4�t	jjj6�|j7|jj4|d�}|j8}
|d�|
�\}}|�rD|�9|�|d�rC|d�:t;j<�n
|�|
�|�|�|j|d|d|d|d�}|
�r~|j=||	|d�}|�|�|jdd�}|�>|�|�?�|S|j|||	d	||d�}|�|�|��}|du�r�|j|t	jjj
|j|jt	jjj
Bdd�|�|jjd�|�|jjd�|�|jjd�|�|jjd�|�|jj|�|�|jjd�|�t|jj�d�dS|j|t	jjj|j|jd
�|�|jj|jj�|�|jj|jj�|�|jj|�|�|jjd�|�|jjd�|�|jj d�|�|jj*d�|�|jj+dj,t	jjj-�|�|jj+dj.t	jjj/�|�0|jj+dj1|j2d�|�rg|�|j3d�n|�|j3d�|�@t|jj4�t	jjj6�|�|j3t|jj4�t	jjj6�|j7|jj4|d�}|�r�|S|j8}
|d�|
�\}}|�9|�|d�r�|d�:t;j<�|S)Nr�r�r>rr�r�r�)r�r�r��	auth_blobl��)�call_id�	pfc_flags�ctx_list�assoc_group_id�	auth_infor�r��auth_length)r�rfrQ�r�rrerS)r�)r�r�r�g{�G�z�?)rB)r�r�r�r�r�)Ar��#DCERPC_PFC_FLAG_SUPPORT_HEADER_SIGN�update�assertFalse�
generate_auth�generate_alter�send_pdu�recv_pdu�
verify_pdurx�DCERPC_PKT_FAULTr�r��DCERPC_PFC_FLAG_DID_NOT_EXECUTE�assertNotEqual�u�
alloc_hintri�
context_id�cancel_countr;�status�reservedrD�error_and_verifier�DCERPC_PKT_ALTER_RESPr_r`r��secondary_address_sizera�
assertPadding�_pad1�
generate_bind�DCERPC_PKT_BIND_NAK�
reject_reason�num_versions�versions�rpc_vers�rpc_vers_minor�_pad�DCERPC_PKT_BIND_ACK�num_resultsr��result�!DCERPC_BIND_ACK_RESULT_ACCEPTANCErO�$DCERPC_BIND_ACK_REASON_NOT_SPECIFIED�assertNDRSyntaxEquals�syntax�transfer_syntaxesr�r��
assertGreater�DCERPC_AUTH_TRAILER_LENGTH�
parse_auth�credentials�
assertTruer�r�FEATURE_SIGN_PKT_HEADER�generate_auth3r��assertIsConnected�assertGreaterEqual)r$�ctxr�r�r�r��
nak_reason�alter_fault�start_with_alter�
pfc_flags_2nd�	use_auth3r�r��from_server�finished�	to_serverr��req�rep�sda_str�sda_len�mod_len�sda_pad�ackrZr+r+r,�do_generic_bindsd	


��
����

��


��
 

�


��

�

����� 

zRawDCERPCTest.do_generic_bind�c

Csp|r
|j|||d�|g}
tjj��}||_t|
�|_||_|
|_|j	||||d�}|dur0d}|	r6||fS|S)N)�transfer�object)r�r�r�r�)
�epmap_reconnectrxr�r�r�rD�num_transfer_syntaxes�abstract_syntaxr�r�)
r$�abstractr�r�r��epmapr�r�r��
return_ack�	tsf1_listr�r�r+r+r,�prepare_presentation�s$
�z"RawDCERPCTest.prepare_presentationTc	Cs�|
dur|j}
|dur|j}|dur|j}|	rm|r%tj�dtj�|��tjj	|||d�}|r?tj�dt
|�|�|�f�tjjj
}|tjjjO}|durV|tjjjO}|j||j|||��||d�}|j|||d�|
�rK|j|||d�\}}|r�|j|tjjj||dd�|�|jjd�|�|jj|
�|�|jjd�|�|jjd�|�|jj|�|�|jjd�|�t
|jj�d�dSd}|dur�|d	tjkr�|	r�|j }n|j }|j|tjjj!||d
�|�|jjd�|�|jj|jd@�|�|jjd�|�"t
|jj#�|jj�|�$|||�}|�t
|�|jj�|�r1tj�dt
|�|�|�f�t%|||||d
�|�rMtj�dtj�&|��dSdSdS)Nzin: %s)�	bigendian�ndr64zstub_in: %d
%s)r�r�r�r��opnum�stubr�)�	ndr_print�hexdump)rBrrrr�r�r��zstub_out: %d
%s)r�r��allow_remainingzout: %s)'r�rwrLrMrNr9rx�ndr�ndr_print_in�ndr_pack_inrDrr��DCERPC_PFC_FLAG_FIRST�DCERPC_PFC_FLAG_LAST�DCERPC_PFC_FLAG_OBJECT_UUID�generate_request_authrr��recv_pdu_rawr�r�r�r�r�rir�r;r�r�r��DCERPC_AUTH_LEVEL_PACKETr��DCERPC_PKT_RESPONSEr��stub_and_verifier�check_response_authr�
ndr_print_out)r$r�r��ior�r�r�r�r�send_req�recv_rep�fault_pfc_flags�fault_status�fault_context_idrBrr�stub_inr�r�r��rep_blob�expected_auth_length�stub_outr+r+r,�do_single_request�s�
�
���
��&zRawDCERPCTest.do_single_requestcCs�tjj��}|dur|}|durtjj��}|jtjj��|dd�}t	|�}tjj�
�}tjjj|_|dd�|_
tjj��}|dd�|_tjj��}	||	_||	_t	|�}
tjj�
�}tjjj|_|
dd�|_
tjj��}|dd�|_tjj��}
||
_||
_tjj�
�}tjjj|_d|_
tjj��}||_d|j_tjj�
�}tjjj|_d|_
tjj��}||_t|j�|j_tjj�
�}tjjj|_d|_
tjj��}||_d|j_|	|
|||g}tjj��}t|�|_||_tjj��}||_ tjj�!�}||_"||_#tjj�$�|_%d|_&|j'd||d�|�(|j)d	�|j*dj+}|�,|�|�-|j.d
�|�-|j jd�|�-t|j j�d�|�-|j jdjjtjjj�|�-|j jdjjtjjj�|�/d
�d|j jdjj|_d|_0|�1�dS)Nr)r��r>z0.0.0.0rSrQ)r�r�rr�K�rer�z%d)2rxr��base�transfer_syntax_ndr�misc�GUIDr��epmapperr�r�epm_lhs�EPM_PROTOCOL_UUID�protocol�lhs_data�epm_rhs_uuid�unknown�	epm_floor�lhs�rhs�EPM_PROTOCOL_NCACN�
minor_version�EPM_PROTOCOL_TCPr1rT�port�EPM_PROTOCOL_IP�ipaddr�	epm_towerrD�
num_floors�floors�	epm_twr_t�tower�epm_Map�	in_object�in_map_tower�
policy_handle�in_entry_handle�
in_max_towersrr��out_num_towers�
out_towers�twrr�ri�tower_lengthrPrar[)r$r�r�r��ndr32r��data1�lhs1�rhs1�floor1�data2�lhs2�rhs2�floor2�lhs3�floor3�lhs4�floor4�lhs5�floor5r7�	req_tower�req_twr�epm_map�rep_twrr+r+r,r�Gs��

��
zRawDCERPCTest.epmap_reconnectc
Cs|dur|j}|dur|j}zyz=t|�}|r"tj�dtj�|��|r3tj�dt	|�|�
|�f�	|j�|d�}|t	|�krBn||d�}q4WWdSt
jya}z|�d|��d}~wtyt}z|�d|��d}~wty�}z|�d|��d}~www)Nzsend_pdu: %szsend_pdu: %d
%sTr)rwrLrrMrNr9rxrrrDrrKr<rAr\rPr]r)r$r�rr�req_pdu�sentrEr+r+r,r��s@������zRawDCERPCTest.send_pduc
Cs,d}|dur	|j}z�zA|dur|j�|�|j�dd�}|j�d�t|�dkr1|�d�WWdS|rGtj�dt|�|�	|�f�WW	|SWW	|St
jym}z|j�d�tj�d�WYd}~W	|Sd}~wt
jy�}z|�d|��d}~wt
y�}z|�d|��d}~www)Nr�rrRz
recv_raw: EOFzrecv_raw: %d
%szrecv_raw: TIMEOUT
zrecv_raw: %s)rLrKr2rFrDrPrMrNr9rrArBr\r])r$rrB�rep_pdurEr+r+r,�recv_raw�sH
�"�
������zRawDCERPCTest.recv_rawcCs�d}d}|dur|j}|dur|j}z5|j||d�}|dur!WdSttjjj|dd�}|r9tj�	dtj
�|��|�|j
t|��W	||fSw)N)rrB�NNT�rzrecv_pdu: %s)rwrLrZrrxr��ncacn_packetrMrNr9rrri�frag_lengthrD)r$rrrBrYr�r+r+r,r
�s$��zRawDCERPCTest.recv_pdu_rawcCs|j|||d�\}}|S)N)rrrB)r
)r$rrrBr�rYr+r+r,r��s

�zRawDCERPCTest.recv_pduc
Cs�|dur|j}|dur|j}|durLtjj��}||_||_||_||_||_	t
|�}	|r9tj�
dtj�|��|rJtj�
dt|	�|�|	�f�|	Sd}	|	S)Nzgenerate_auth: %szgenerate_auth: %d
%sr>)rwrLrxr��authr�r��auth_pad_lengthr�r�rrMrNr9rrrDr)
r$r�r�r`r�r�rrrZ�air+r+r,r��s&�zRawDCERPCTest.generate_authcCs�|dur|j}|dur|j}t|�tjjjkrdS|r*tj�dt|�|�	|�f�t
tjjj|dd�}|rBtj�dtj�
|��|durw|�|j|d�|�|j|d�|�|jd�|�|j|d�|�|jtj�|�|j|�|S)	Nzparse_auth: %d
%sTr\zparse_auth: %sr�r�rr�)rwrLrDrxr�r�rMrNr9rrr_rrrir�r��
auth_reservedr��assertLessEqualr`�DCERPC_AUTH_PAD_ALIGNMENT)r$r�rrr��stub_lenrZr+r+r,r�s&zRawDCERPCTest.parse_authcCs(|dur|�|jd�|jjS|dtjkr!|�|jd�|jjS|�|jd�tj}|j|j}|tj	}|||�}|d|�}	||d�}
||d�}|j
||t|�d�}|durc|�|j|�|�|j
|
�|dtjkrw|�d�n|dtjkr�|d�||	|
�|dt|�|j�}
|
S)Nrr�)r�reFr)rir�r�rr��DCERPC_AUTH_LEVEL_CONNECTr��DCERPC_REQUEST_LENGTHr^r�r�rDr`r��DCERPC_AUTH_LEVEL_PRIVACYr�r�check_packet)r$r�rr�r`�ofs_stub�ofs_sig�ofs_trailer�rep_data�	rep_whole�rep_sig�rep_auth_info_blob�
rep_auth_inforr+r+r,r"s6
�z!RawDCERPCTest.check_response_authr c

Cs�t|dd�r
|j}
nd}
tjj��}||_||_||_||_||_	d|_
t|
�tjjjkr8t|
�tjjj|_
nd|_
||_||_t|�}t|�|_
|S)Nr�r>r)�getattrr�rxr�r]r�r��ptyper��drepr^rDr�r�r�r�r)
r$rsr��payloadr�r�r�rtrrra�p�pdur+r+r,�generate_pduHs$
zRawDCERPCTest.generate_pducCs�|durd}d}|durNt|�tj}d}
|dkrtj|}
|d|
7}|dtjjjkr7|d�t|��}nd}d|}|j|d|d|
|d	|d
�}nd}|j|||||||||	|
d�
}|dure|Stj�	|�}tj
}t|�|j}|tj}|||�}|d|�}|dtj
kr�|�d�n%|dtjkr�|d�||�}n|dtjkr�|�|dtj�d
}n|S|�t|�|j�|�t|�|�t|jj�|}|jjd|�|}||j_|S)Nr>r�r�r�r�r�r�)r�r�r`r�r�)
r�r�r�r�rr�rr�rrFs)rDr�rdrxr�sig_sizer��generate_requestrrrgr�r�rhr��sign_packetrfrir�r�r)r$r�r�r�r�rr�rr�rrr{r�r`�zero_sigr�r��req_blobrjrkrl�req_data�	req_whole�req_sig�stub_sig_ofsr+r+r,rhsn

��


�z#RawDCERPCTest.generate_request_authc	
Cs�|�|d�t|jdd�r|jj}	nd}	|�|j|�|�|j|�|�|j|�|�|j|�|�|j	|�|�
|jtj
j
j�t|	�tj
j
jkrY|�|jt|	�tj
j
j�n|dure|�|j|�n|�|jd�|�|j|�dS)NzNo valid pdur�r>r)r�rrr�r�rir�r�rsr�rtr�r^rxr��DCERPC_NCACN_PAYLOAD_OFFSETrDr�r�r�)
r$rvrsr�r�r�r�rtr�rar+r+r,r��s*
��zRawDCERPCTest.verify_pdur>c
C�p|dur|j}|dur|j}tjj��}
||
_||
_||
_t|�|
_||
_||
_	|j
tjjj|||
||	d�}|S�N)rsr�r�rurr)r_r`rxr��bindr�rD�num_contextsr�r�rx�DCERPC_PKT_BIND)r$r�r�r_r`r�r�r�rr�brvr+r+r,r���$

�zRawDCERPCTest.generate_bindc
Cr�r�)r_r`rxr�r�r�rDr�r�r�rx�DCERPC_PKT_ALTER)r$r�r�r_r`r�r�r�rrrZrvr+r+r,r��r�zRawDCERPCTest.generate_altercC�2tjj��}||_|jtjjj|||||d�}|Sr�)rxr��auth3r�rx�DCERPC_PKT_AUTH3)r$r�r�r�rrrZrvr+r+r,r���zRawDCERPCTest.generate_auth3c
Cs�|durt|�}tjj��}||_||_||_|dur||_|||_|j	tjjj
||||	|
d�}t|�tjjjkrDt|�tjjj|_|Sr�)
rDrxr��requestr�r�rr�rrx�DCERPC_PKT_REQUESTr�r�)
r$r�r�r�r�rr�rr�rr�rrvr+r+r,r|$s$
�zRawDCERPCTest.generate_requestcCr�r�)rxr��	co_cancelr�rx�DCERPC_PKT_CO_CANCEL)r$r�r�r�rrr�rvr+r+r,�generate_co_cancelEr�z RawDCERPCTest.generate_co_cancelcCr�r�)rxr��orphanedr�rx�DCERPC_PKT_ORPHANED)r$r�r�r�rr�orvr+r+r,�generate_orphanedVr�zRawDCERPCTest.generate_orphanedcCs,tjj��}|jtjjj|||||d�}|Sr�)rxr��shutdownrx�DCERPC_PKT_SHUTDOWN)r$r�r�rrrKrvr+r+r,�generate_shutdowngs�zRawDCERPCTest.generate_shutdowncC�|j|jdd�dS)Nz
Not connected��msg)r�rKr0r+r+r,r�v�zRawDCERPCTest.assertIsConnectedcCr�)NzIs connectedr�)r�rKr0r+r+r,rnzr�z RawDCERPCTest.assertNotConnectedcCs$|�|j|j�|�|j|j�dSr.)ri�uuid�
if_version�r$�s1�s2r+r+r,r�~sz#RawDCERPCTest.assertNDRSyntaxEqualscCs2|�t|�|�|jr
dSd|}|�||�dS)Nry)rirDr{)r$�pad�length�zero_padr+r+r,r��s
zRawDCERPCTest.assertPaddingcCs |�t|���t|����dSr.)rirC�lowerr�r+r+r,�assertEqualsStrLower�s z"RawDCERPCTest.assertEqualsStrLower)NNN)NNNN)NFr[)NNrNNNN)NNNr)0rGrHrI�__doc__rPrcrmr[rvr�r�r�r�r�r|r�rxr�r	r
r�r�rr�r�rZr
r�r�r�r�DCERPC_DREP_LErxrr�r�r�r�r|r�r�r�r�rnr�r�r��
__classcell__r+r+rr,rJUs@

�
�%

���
�=�
��
�
U
Q



�
�
�'�
�!�
�M�
�"�
� �
� �
��
�"�
��
��
�
rJ) rMrA�samba.dcerpc.dcerpcr��samba.dcerpc.baserx�samba.dcerpc.epmapper�samba.dcerpc.security�security�samba.testsr�samba.credentialsrr�	samba.ndrrrr�samba.ntstatusrr	r
r�samba.samba3rrr
rrr�rrJr+r+r+r,�<module>s$-