a
    )&i                    @   s   d dl Z d dlZd dlZe jd d dejd< d dlm  mZ d dlm  m	Z	 d dl
m  mZ d dlZd dlZd dlZd dlZd dlZd dlmZ d dlmZ d dlmZ d dlmZ d	Zd	ZG d
d deZedkrdZdZd dlZe  dS )    Nz
bin/python1ZPYTHONUNBUFFERED)gensec)RawDCERPCTest)binary_type)NT_STATUS_SUCCESSFc                       s  e Zd Z f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/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Z d=d> Z!d?d@ Z"dAdB Z#dCdD Z$dEdF Z%dGdH Z&dIdJ Z'dKdL Z(dMdN Z)dOdP Z*dQdR Z+dSdT Z,dUdV Z-dWe.j/fdXdYZ0e.j/fdZd[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 ZCdd ZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdddZMdddZNdddZOdd ZPdd ZQdd ZRdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dddZ^dd Z_dd Z`dd Zadd Zbdd ZcddÄ Zdddń ZeddǄ ZfddɄ Zgdd˄ Zhdd̈́ Ziddτ ZjdddфZkddӄ ZlddՄ Zmddׄ Znddل Zoddۄ Zpdd݄ Zqdd߄ Zrdd Zsdd Ztdd ZudddZvdd Zwdd Zxdd Zydd Zzdd Z{dddZ|dd Z}dd Z~dd Zdd Zdd Zdd 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 Ze.jddWfdBdCZe.jfdDdEZe.jdWdW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  ZS (  TestDCERPC_BINDc                    s   t t|   t| _t| _d S 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    zTestDCERPC_BIND.setUpc                 C   s  t  }|g}t }d|_t||_tjj	 |_	||_
| jd||gd}| | |  }| j|tj|j|dd | |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jd jtj | |jjd jtj  | !|jjd j"| | |jj#d | j$d|jddd	}| | |  }| j|tj%|jdd
 | |jj&d | |jj|jj | |jj'd | (t|jj)|jj& d S )N   r   call_id	pfc_flagsctx_listr   auth_length   %d       r   
context_idopnumstubr   *basetransfer_syntax_ndrdcerpcr   r!   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repr   r   r   $_test_no_auth_request_bind_pfc_flags4   sT    


z4TestDCERPC_BIND._test_no_auth_request_bind_pfc_flagsc                 C   s  t  }|g}t }d|_t||_tjj	 |_	||_
| jd|gd}| | |  }| j|tj|jdd | |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jd jtj | |jjd jtj  | !|jjd j"| | |jj#d | j$d||gd	}| | |  }| j|tj%|j|dd
 | |jj|jj | |jj|jj | |jj|jj | |jjd | |jjd | |jjd | |jjd | |jjd jtj | |jjd jtj  | !|jjd j"| | |jj#d | j&d|jddd}| | |  }| j|tj'|jdd | |jj(d | |jj|jj | |jj)d | *t|jj+|jj( d S )Nr   r   r   r   r$   r   r   r   r   r   r    r    ),r&   r'   r(   r   r!   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   generate_alterDCERPC_PKT_ALTER_RESPrG   rH   rI   rJ   rK   rL   rM   r   r   r   %_test_no_auth_request_alter_pfc_flags_   s~    



z5TestDCERPC_BIND._test_no_auth_request_alter_pfc_flagsc                 C   s&   | j dtjB tjB dtjB tjB dS Nr   rN   rO   rU   r(   DCERPC_PFC_FLAG_FIRSTDCERPC_PFC_FLAG_LASTr   r   r   r   test_no_auth_request   s    z$TestDCERPC_BIND.test_no_auth_requestc                 C   s   | j ddtjB tjB dS r[   r]   r   r   r   r    test_no_auth_request_bind_pfc_00   s    z0TestDCERPC_BIND.test_no_auth_request_bind_pfc_00c                 C   s$   | j dtjB dB dtjB tjB dS r[   r]   r   r   r   r   #test_no_auth_request_bind_pfc_FIRST   s    z3TestDCERPC_BIND.test_no_auth_request_bind_pfc_FIRSTc                 C   s$   | j dtjB dB dtjB tjB dS r[   )rU   r(   r_   r^   r   r   r   r   "test_no_auth_request_bind_pfc_LAST   s    z2TestDCERPC_BIND.test_no_auth_request_bind_pfc_LASTc                 C   s*   | j dtjB dB dtjB tjB tjB dS r[   )rU   r(   #DCERPC_PFC_FLAG_SUPPORT_HEADER_SIGNr^   r_   r   r   r   r   )test_no_auth_request_bind_pfc_HDR_SIGNING   s    z9TestDCERPC_BIND.test_no_auth_request_bind_pfc_HDR_SIGNINGc                 C   s   | j ddtjB tjB dS N   r   r\   r]   r   r   r   r    test_no_auth_request_bind_pfc_08   s    z0TestDCERPC_BIND.test_no_auth_request_bind_pfc_08c                 C   s*   | j dtjB dB dtjB tjB tjB dS r[   )rU   r(   DCERPC_PFC_FLAG_CONC_MPXr^   r_   r   r   r   r   &test_no_auth_request_bind_pfc_CONC_MPX   s    z6TestDCERPC_BIND.test_no_auth_request_bind_pfc_CONC_MPXc                 C   s$   | j dtjB dB dtjB tjB dS r[   )rU   r(   DCERPC_PFC_FLAG_DID_NOT_EXECUTEr^   r_   r   r   r   r   -test_no_auth_request_bind_pfc_DID_NOT_EXECUTE   s    z=TestDCERPC_BIND.test_no_auth_request_bind_pfc_DID_NOT_EXECUTEc                 C   s$   | j dtjB dB dtjB tjB dS r[   )rU   r(   DCERPC_PFC_FLAG_MAYBEr^   r_   r   r   r   r   #test_no_auth_request_bind_pfc_MAYBE   s    z3TestDCERPC_BIND.test_no_auth_request_bind_pfc_MAYBEc                 C   s$   | j dtjB dB dtjB tjB dS r[   )rU   r(   DCERPC_PFC_FLAG_OBJECT_UUIDr^   r_   r   r   r   r   )test_no_auth_request_bind_pfc_OBJECT_UUID   s    z9TestDCERPC_BIND.test_no_auth_request_bind_pfc_OBJECT_UUIDc                 C   s&   | j ddtjB tjB tjB tjB dS N   r   r\   )rU   r(   r^   r_   rd   ri   r   r   r   r   !_test_no_auth_request_bind_pfc_ff   s    z1TestDCERPC_BIND._test_no_auth_request_bind_pfc_ffc                 C   s   | j ddtjB tjB dS r[   rZ   r(   r^   r_   r   r   r   r   !test_no_auth_request_alter_pfc_00  s    z1TestDCERPC_BIND.test_no_auth_request_alter_pfc_00c                 C   s$   | j dtjB dB dtjB tjB dS r[   rt   r   r   r   r   $test_no_auth_request_alter_pfc_FIRST  s    z4TestDCERPC_BIND.test_no_auth_request_alter_pfc_FIRSTc                 C   s$   | j dtjB dB dtjB tjB dS r[   )rZ   r(   r_   r^   r   r   r   r   #test_no_auth_request_alter_pfc_LAST  s    z3TestDCERPC_BIND.test_no_auth_request_alter_pfc_LASTc                 C   s*   | j dtjB dB dtjB tjB tjB dS r[   )rZ   r(   rd   r^   r_   r   r   r   r   *test_no_auth_request_alter_pfc_HDR_SIGNING"  s    z:TestDCERPC_BIND.test_no_auth_request_alter_pfc_HDR_SIGNINGc                 C   s   | j ddtjB tjB dS rf   rt   r   r   r   r   !test_no_auth_request_alter_pfc_08,  s    z1TestDCERPC_BIND.test_no_auth_request_alter_pfc_08c                 C   s$   | j dtjB dB dtjB tjB dS r[   )rZ   r(   ri   r^   r_   r   r   r   r   'test_no_auth_request_alter_pfc_CONC_MPX5  s    z7TestDCERPC_BIND.test_no_auth_request_alter_pfc_CONC_MPXc                 C   s$   | j dtjB dB dtjB tjB dS r[   )rZ   r(   rk   r^   r_   r   r   r   r   .test_no_auth_request_alter_pfc_DID_NOT_EXECUTE>  s    z>TestDCERPC_BIND.test_no_auth_request_alter_pfc_DID_NOT_EXECUTEc                 C   s$   | j dtjB dB dtjB tjB dS r[   )rZ   r(   rm   r^   r_   r   r   r   r   $test_no_auth_request_alter_pfc_MAYBEG  s    z4TestDCERPC_BIND.test_no_auth_request_alter_pfc_MAYBEc                 C   s$   | j dtjB dB dtjB tjB dS r[   )rZ   r(   ro   r^   r_   r   r   r   r   *test_no_auth_request_alter_pfc_OBJECT_UUIDP  s    z:TestDCERPC_BIND.test_no_auth_request_alter_pfc_OBJECT_UUIDc                 C   s    | j ddtjB tjB tjB dS rq   )rZ   r(   r^   r_   rd   r   r   r   r   !test_no_auth_request_alter_pfc_ffY  s    z1TestDCERPC_BIND.test_no_auth_request_alter_pfc_ffc                 C   s   | j dd}| | |  }| j|tj|jdd | |jj	tj
 | |jjd | |jjd j|j | |jjd j|j | |jjd d S Nr   r   r$   r      )r/   r0   r1   r2   r(   DCERPC_PKT_BIND_NAKr   r4   r5   reject_reason$DCERPC_BIND_NAK_REASON_NOT_SPECIFIEDnum_versionsversionsrpc_versrpc_vers_minorr=   _padr   rS   rT   r   r   r   test_no_auth_no_ctxc  s    

z#TestDCERPC_BIND.test_no_auth_no_ctxc                 C   s   | j dd}tj|_| | |  }| j|tj|jdd | 	|j
jtj | 	|j
jd | 	|j
jd j|j | 	|j
jd j|j | |j
jd d S r   )r/   r(   DCERPC_AUTH_TRAILER_LENGTHr   r0   r1   r2   r   r   r4   r5   r   5DCERPC_BIND_NAK_REASON_PROTOCOL_VERSION_NOT_SUPPORTEDr   r   r   r   r=   r   r   r   r   r   test_invalid_auth_noctxq  s    

z'TestDCERPC_BIND.test_invalid_auth_noctxc                 C   s4  t  }|g}t }d|_t||_tjj	 |_	||_
| jd|gd}| | |  }| j|tj|jdd | |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jd jtj | |jjd jtj  | !|jjd j"| | |jj#d |g}t }d|_t||_tjj	 |_	||_
| jd|gd}| | |  }| j|tj$|jdd | |jj%tj& | |jj'd | |jj(d j)|j) | |jj(d j*|j* | |jj+d	 |  }| ,| | -  d S )
Nr   r   rV   r$   r   r   r   r   r   ).r&   r'   r(   r   r!   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   r   r   r   r   r   r   r   r   assertIsNoneassertNotConnected)r   rP   rQ   rR   rS   rT   	tsf2_listctx2r   r   r    test_no_auth_valid_valid_request  sd    





z0TestDCERPC_BIND.test_no_auth_valid_valid_requestc                 C   s   | j dd}| | |  }| j|tj|jdd | |jj	tj
 | |jjd | |jjd j|j | |jjd j|j | |jjd |  }| | |   d S r   )r/   r0   r1   r2   r(   r   r   r4   r5   r   r   r   r   r   r   r=   r   r   r   r   r   r   r   "test_no_auth_invalid_valid_request  s     


z2TestDCERPC_BIND.test_no_auth_invalid_valid_requestc                 C   s  t  }|g}t }d|_t||_tjj	 |_	||_
| jd|gd}| | |  }| j|tj|jdd | |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jd jtj | |jjd jtj  | !|jjd j"| | |jj#d | j$dg d}| | |  }| j|tj%|j|j&tj'B dd	 | |jj(d | |jjd | |jj)d | |jj*d | |jj+tj, | |jj-d | t|jj.d |  }| /| | 0  d S 
Nr   r   rV   r$   r   r   r   r   r   )1r&   r'   r(   r   r!   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rX   DCERPC_PKT_FAULTr   rk   rI   rJ   flagsstatusDCERPC_NCA_S_PROTO_ERRORreservederror_and_verifierr   r   )r   rP   rQ   rR   rS   rT   r   r   r   test_alter_no_auth_no_ctx  s^    



z)TestDCERPC_BIND.test_alter_no_auth_no_ctxc                 C   s  t  }t }||g}t }d|_t||_t	jj
 |_||_| jd|gd}| | |  }| j|tj|jdd | |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jd jtj  | |jjd j!tj" | #|jjd j$| | |jj%d | j&d|gd}| | |  }| j|tj'|jdd | |jj|jj | |jj|jj | |jj|jj | |jjd | |jjd | |jjd | |jjd jtj  | |jjd j!tj" | #|jjd j$| | |jj%d | j(d|jd	dd
}| | |  }| j|tj)|j|j*tj+B dd | |jj,d | |jj|j | |jj-d | |jj.d | |jj/tj0 | |jj1d | t|jj2d d S Nr   r   rV   r$   r   r   r   r     r    r   )3r&   r'   miscndr_syntax_idr(   r   r!   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rX   rY   rG   r   r   rk   rI   rJ   r   r   DCERPC_NCA_S_OP_RNG_ERRORr   r   r   rP   zero_syntaxrQ   rR   rS   rT   r   r   r   $test_no_auth_presentation_ctx_valid1  s    



z4TestDCERPC_BIND.test_no_auth_presentation_ctx_valid1c                 C   s  t  }t }|g}t }d|_t||_||_	||_
| jd|gd}| | |  }| j|tj|jdd | |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jd jtj | |jjd jtj  | !|jjd j"| | |jj#d | j$d|gd}| | |  }| j|tj%|jdd | |jj|jj | |jj|jj | |jj|jj | |jjd | |jjd | |jjd | |jjd jtj | |jjd jtj  | !|jjd j"| | |jj#d | j&dd	ddd
}| | |  }| j|tj'|j|j(tj)B dd | |jj*d | |jjd | |jj+d | |jj,d | |jj-tj. | |jj/d | t|jj0d | j$d|gd}| | |  }| j|tj%|jdd | |jj|jj | |jj|jj | |jj|jj | |jjd | |jjd | |jjd | |jjd jtj | |jjd jtj  | !|jjd j"| | |jj#d d S )Nr   r   rV   r$   r   r   r   r   i90  r    r   r   )1r&   r'   r   r   r(   r   r!   r)   r*   r-   r.   r/   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   )DCERPC_BIND_ACK_RESULT_PROVIDER_REJECTIONrB   4DCERPC_BIND_ACK_REASON_ABSTRACT_SYNTAX_NOT_SUPPORTEDrD   rE   rF   rX   rY   rG   r   r   rk   rI   rJ   r   r   DCERPC_NCA_S_UNKNOWN_IFr   r   r   r   r   r   &test_no_auth_presentation_ctx_invalid1>  s    




z6TestDCERPC_BIND.test_no_auth_presentation_ctx_invalid1c                 C   s   t  }t }g }t }d|_t||_t	jj
 |_||_| jd|gd}| | |  }| j|tj|jdd | |jjtj | |jjd | |jjd j|j | |jjd j|j | |jjd |  }| | |   d S )Nr   r   rV   r$   r   )r&   r'   r   r   r(   r   r!   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r   r   r4   r5   r   r   r   r   r   r   r=   r   r   r   )r   rP   r   
tsf1a_listctx1arS   rT   r   r   r   &test_no_auth_presentation_ctx_invalid2  s0    



z6TestDCERPC_BIND.test_no_auth_presentation_ctx_invalid2c           	      C   s^  t  }t }||||g}t }d|_t||_t	jj
 |_||_| jd|gd}| | |  }| j|tj|jdd | |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jd jtj  | |jjd j!tj" | #|jjd j$| | |jj%d g }t }d|_t||_t	jj
 |_||_| j&d|gd}| | |  }| j|tj'|j|j(tj)B dd	 | |jj*d | |jjd | |jj+d | |jj,d | |jj-tj. | |jj/d | t|jj0d |  }| 1| | 2  d S r   )3r&   r'   r   r   r(   r   r!   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rX   r   r   rk   rI   rJ   r   r   r   r   r   r   r   	r   rP   r   r   r   rS   rT   
tsf1b_listctx1br   r   r   &test_no_auth_presentation_ctx_invalid3  sl    




z6TestDCERPC_BIND.test_no_auth_presentation_ctx_invalid3c           
      C   st  t  }t  }t }||||g}t }d|_t||_	t
jj |_||_| jd|gd}| | |  }| j|tj|jdd | |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jd j tj! | |jjd j"tj# | $|jjd j%| | |jj&d |t
jj' |g}t }	d|	_t||	_	t
jj |	_||	_| j(d|	gd}| | |  }| j|tj)|j|j*tj+B dd	 | |jj,d | |jjd | |jj-d | |jj.d | |jj/tj0 | |jj1d | t|jj2d |  }| 3| | 4  d S r   )5r&   r'   transfer_syntax_ndr64r   r   r(   r   r!   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   epmapperrX   r   r   rk   rI   rJ   r   r   r   r   r   r   r   )
r   rP   ndr64r   r   r   rS   rT   r   r   r   r   r   &test_no_auth_presentation_ctx_invalid4  sn    




z6TestDCERPC_BIND.test_no_auth_presentation_ctx_invalid4c           	      C   sP  t  }t }||||g}t }d|_t||_t	jj
 |_||_| jd|gd}| | |  }| j|tj|jdd | |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jd jtj  | |jjd j!tj" | #|jjd j$| | |jj%d |t	jj& g}t }d|_t||_t	jj
 |_||_| j'd|gd}| | |  }| j|tj(|jdd | |jj|jj | |jj|jj | |jj|jj | |jjd | |jjd | |jjd | |jjd jtj) | |jjd j!tj* | #|jjd j$| | |jj%d | j+d|jd	dd
}| | |  }| j|tj,|j|j-tj.B dd | |jj/d | |jj|j | |jj0d | |jj1d | |jj2tj3 | |jj4d | t|jj5d d S r   )6r&   r'   r   r   r(   r   r!   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   r   rX   rY   r   6DCERPC_BIND_ACK_REASON_TRANSFER_SYNTAXES_NOT_SUPPORTEDrG   r   r   rk   rI   rJ   r   r   r   r   r   r   r   r   r   $test_no_auth_presentation_ctx_valid2+  s    




z4TestDCERPC_BIND.test_no_auth_presentation_ctx_valid2c                 C   s8  t  }t }|g}t }d|_t||_||_	||_
| jd|gd}| | |  }| j|tj|jdd | |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jd jtj | |jjd jtj  | !|jjd j"| | |jj#d	 |g}t }d|_t||_t$jj%	 |_	||_
| j&d|gd}| | |  }| j|tj'|jdd | |jj|jj | |jj|jj | |jj|jj | |jjd | |jjd | |jjd | |jjd jtj( | |jjd jtj) | !|jjd j"| | |jj#d	 | j*d|jdd	d
}| | |  }| j|tj+|jdd | |jj,d | |jj|jj | |jj-d | .t|jj/|jj, ||g}	t }
d|
_t|	|
_t$jj%	 |
_	|	|
_
| j&d|
gd}| | |  }| j|tj'|jdd | |jj|jj | |jj|jj | |jj|jj | |jjd | |jjd | |jjd | |jjd jtj( | |jjd jtj) | !|jjd j"| | |jj#d	 | j*d|
jdd	d
}| | |  }| j|tj+|jdd | |jj,d | |jj|jj | |jj-d | .t|jj/|jj, ||g}t }d|_t||_t$jj%	 |_	||_
| j&d|gd}| | |  }| j|tj'|jdd | |jj|jj | |jj|jj | |jj|jj | |jjd | |jjd | |jjd | |jjd jtj( | |jjd jtj) | !|jjd j"| | |jj#d	 | j*d|jdd	d
}| | |  }| j|tj+|jdd | |jj,d | |jj|jj | |jj-d | .t|jj/|jj, |g}t }d|_t||_t$jj%	 |_	||_
|g}t }d|_t||_t$jj%	 |_	||_
| j&d||gd}| | |  }| j|tj'|jdd | |jj|jj | |jj|jj | |jj|jj | |jjd | |jjd | |jjd | |jjd jtj( | |jjd jtj) | !|jjd j"| | |jjd jtj | |jjd jtj0 | !|jjd j"| | |jj#d	 | j*d|jdd	d
}| | |  }| j|tj+|jdd | |jj,d | |jj|jj | |jj-d | .t|jj/|jj, | j&d||gd}| | |  }| j|tj'|jdd | |jj|jj | |jj|jj | |jj|jj | |jjd | |jjd | |jjd | |jjd jtj( | |jjd jtj) | !|jjd j"| | |jjd jtj | |jjd jtj0 | !|jjd j"| | |jj#d	 | j*d|jdd	d
}| | |  }| j|tj+|jdd | |jj,d | |jj|jj | |jj-d | .t|jj/|jj, | j*d|jdd	d
}| | |  }| j|tj+|jdd | |jj,d | |jj|jj | |jj-d | .t|jj/|jj, | j&d||gd}| | |  }| j|tj'|jdd | |jj|jj | |jj|jj | |jj|jj | |jjd | |jjd | |jjd | |jjd jtj( | |jjd jtj) | !|jjd j"| | |jjd jtj | |jjd jtj0 | !|jjd j"| | |jj#d	 | j*d|jdd	d
}| | |  }| j|tj+|jdd | |jj,d | |jj|jj | |jj-d | .t|jj/|jj, | j*d|jdd	d
}| | |  }| j|tj+|jdd | |jj,d | |jj|jj | |jj-d | .t|jj/|jj, |g}t }d|_t||_t$jj%	 |_	||_
|g}t }d|_t||_t$jj%	 |_	||_
| j&d||gd}| | |  }| j|tj'|jdd | |jj|jj | |jj|jj | |jj|jj | |jjd | |jjd | |jjd | |jjd jtj( | |jjd jtj) | !|jjd j"| | |jjd jtj | |jjd jtj0 | !|jjd j"| | |jj#d	 | j*d|jdd	d
}| | |  }| j|tj+|jdd | |jj,d | |jj|jj | |jj-d | .t|jj/|jj, | j&d||gd}| | |  }| j|tj'|jdd | |jj|jj | |jj|jj | |jj|jj | |jjd | |jjd | |jjd | |jjd jtj( | |jjd jtj) | !|jjd j"| | |jjd jtj | |jjd jtj0 | !|jjd j"| | |jj#d	 | j*d|jdd	d
}| | |  }| j|tj+|jdd | |jj,d | |jj|jj | |jj-d | .t|jj/|jj, d S )Ni1  r   rV   r$   r   r   r   r   r   r    r   "   +   ,      7   )1r&   r'   r   r   r(   r   r!   r)   r*   r-   r.   r/   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   r   rB   r   rD   rE   rF   r+   r,   rX   rY   rA   rC   rG   rH   rI   rJ   rK   rL   r   )r   rP   r   Z	tsfZ_listZctxZrS   rT   Z	tsf0_listZctx0rQ   rR   r   r   Z	tsf3_listZctx3Z	tsf4_listZctx4Ztsf5mgmt_listZctx5mgmtZtsf5epm_listZctx5epmr   r   r   &test_no_auth_presentation_ctx_no_ndr64x  s,   


























z6TestDCERPC_BIND.test_no_auth_presentation_ctx_no_ndr64c                 C   sR  d}t |}t }|g}t }d|_t||_||_	||_
| jd|gd}| | |  }| j|tj|jdd | |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jd jtj | |jjd j| |  |jjd j!| | |jj"d d S 	Nr   r   rV   r$   r   r   r   r   )#r&   bind_time_features_syntaxr   r   r(   r   r!   r)   r*   r-   r.   r/   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   $DCERPC_BIND_ACK_RESULT_NEGOTIATE_ACKrB   rD   rE   rF   r   ZfeaturesZbtfr   rQ   rR   rS   rT   r   r   r   "test_no_auth_bind_time_none_simple  s8    


z2TestDCERPC_BIND.test_no_auth_bind_time_none_simplec                 C   sx  d}t |}tj}|tjO }t |}t }t  }|||g}t }d|_	t
||_||_||_| jd|gd}	| |	 |  }
| j|
tj|	jdd | |
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jd j tj! | |
jjd j"| | #|
jjd j$| | |
jj%d d S r   )&r&   r   r(   *DCERPC_BIND_TIME_KEEP_CONNECTION_ON_ORPHAN.DCERPC_BIND_TIME_SECURITY_CONTEXT_MULTIPLEXINGr   r   r   r   r!   r)   r*   r-   r.   r/   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   r   rB   rD   rE   rF   r   	features1btf1	features2btf2r   r   rQ   rR   rS   rT   r   r   r   -test_no_auth_bind_time_none_ignore_additional  s@    





z=TestDCERPC_BIND.test_no_auth_bind_time_none_ignore_additionalc           
      C   sl  t j}t|}t j}t|}t }||||g}t  }d|_t	||_
||_||_| jd|gd}| | |  }	| j|	t j|jdd | |	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jd jt j  | |	jjd j!t j" | #|	jjd j$| | |	jj%d d S 	Nr   r   rV   r$   r   r   r   r   )&r(   r   r&   r   r   r   r   r   r!   r)   r*   r-   r.   r/   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   r   rB   r   rD   rE   rF   )
r   r   r   r   r   r   rQ   rR   rS   rT   r   r   r   !test_no_auth_bind_time_only_first5  s@    



z1TestDCERPC_BIND.test_no_auth_bind_time_only_firstc                 C   s6  t j}t|}t j}t|}t }|g}t  }d|_t	||_
||_||_|g}t  }	d|	_t	||	_
||	_||	_| jd||	gd}
| |
 |  }| j|t j|
jdd | |jjt j | |jjd | |jjd j|
j | |jjd j|
j | |jjd |  }| | |   d S )Nr   r   r   rV   r$   r   )r(   r   r&   r   r   r   r   r   r!   r)   r*   r-   r.   r/   r0   r1   r2   r   r   r4   r5   r   r   r   r   r   r   r=   r   r   r   )r   r   r   r   r   r   rQ   rR   r   r   rS   rT   r   r   r   test_no_auth_bind_time_twiceX  sB    






z,TestDCERPC_BIND.test_no_auth_bind_time_twicec                 C   sT  t j}t|}t }|g}t  }d|_t||_	||_
||_| jd|gd}| | |  }| j|t j|jdd | |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jd jt j | |jjd j | | !|jjd j"| | |jj#d d S r   )$r(   r   r&   r   r   r   r   r!   r)   r*   r-   r.   r/   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   r   rB   rD   rE   rF   r   r   r   r   ,test_no_auth_bind_time_keep_on_orphan_simple  s8    


z<TestDCERPC_BIND.test_no_auth_bind_time_keep_on_orphan_simplec                 C   sp  t j}t|}t j}t|}t }t }|||g}t  }d|_	t
||_||_||_| jd|gd}	| |	 |  }
| j|
t j|	jdd | |
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jd j t j! | |
jjd j"| | #|
jjd j$| | |
jj%d d S r   )&r(   r   r&   r   r   r   r   r   r   r!   r)   r*   r-   r.   r/   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   r   rB   rD   rE   rF   r   r   r   r   7test_no_auth_bind_time_keep_on_orphan_ignore_additional  s>    




zGTestDCERPC_BIND.test_no_auth_bind_time_keep_on_orphan_ignore_additionalc                 C   sp  t j}t|}t j}t|}t }t }|||g}t  }d|_	t
||_||_||_| jd|gd}	| |	 |  }
| j|
t j|	jdd | |
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jd j t j! | |
jjd j"| | #|
jjd j$| | |
jj%d d S r   )&r(   r   r&   r   r   r   r   r   r   r!   r)   r*   r-   r.   r/   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   r   rB   rD   rE   rF   r   r   r   r   0test_no_auth_bind_time_sec_ctx_ignore_additional  s>    




z@TestDCERPC_BIND.test_no_auth_bind_time_sec_ctx_ignore_additionalNc                 C   sn  t  }|g}t }d|_t||_tjj	 |_	||_
|g}d}	|d ur| j||||	tjd}
d}|
d |\}}| | | j|
d |
d |
d |d	}nd
}| j|||	|d	}| jd||d}| | |  }| j|tj|jdd | |jj| | |jjd | |jjd j|j | |jjd j|j | |jjd |  }| | |    d S )Nr   r   )	auth_type
auth_levelauth_context_idg_auth_levelr   r   r   r   r   r   r   r   	auth_blob   noner   r   rF   r$   r   )!r&   r'   r(   r   r!   r)   r*   r+   r,   r-   r.   get_auth_context_credsDCERPC_AUTH_LEVEL_INTEGRITYupdateassertFalsegenerate_authr/   r0   r1   r2   r   r   r4   r5   r   r   r   r   r   r=   r   r   r   )r   r   r   credsrB   rP   rQ   rR   r   r   auth_contextfrom_serverfinished	to_serverrF   rS   rT   r   r   r   _test_auth_type_level_bind_nak  s^    




z.TestDCERPC_BIND._test_auth_type_level_bind_nakc                 C   s   | j tj||dS )N)r   r   rB   )r   r(   DCERPC_AUTH_LEVEL_NONE)r   r   rB   r   r   r   _test_auth_none_level_bind  s    z*TestDCERPC_BIND._test_auth_none_level_bindc                 C   s   | j tjtjdS NrB   )r   r(   r   r   r   r   r   r   test_auth_none_none_bind   s    z(TestDCERPC_BIND.test_auth_none_none_bindc                 C   s   |  tjS r   )r   r(   DCERPC_AUTH_LEVEL_CONNECTr   r   r   r   test_auth_none_connect_bind$  s    z+TestDCERPC_BIND.test_auth_none_connect_bindc                 C   s   |  tjS r   )r   r(   DCERPC_AUTH_LEVEL_CALLr   r   r   r   test_auth_none_call_bind'  s    z(TestDCERPC_BIND.test_auth_none_call_bindc                 C   s   |  tjS r   )r   r(   DCERPC_AUTH_LEVEL_PACKETr   r   r   r   test_auth_none_packet_bind*  s    z*TestDCERPC_BIND.test_auth_none_packet_bindc                 C   s   |  tjS r   )r   r(   r   r   r   r   r   test_auth_none_integrity_bind-  s    z-TestDCERPC_BIND.test_auth_none_integrity_bindc                 C   s   |  tjS r   )r   r(   DCERPC_AUTH_LEVEL_PRIVACYr   r   r   r   test_auth_none_privacy_bind0  s    z+TestDCERPC_BIND.test_auth_none_privacy_bindc                 C   s   | j dtjdS Nr   r   r   r(   r   r   r   r   r   test_auth_none_0_bind3  s    z%TestDCERPC_BIND.test_auth_none_0_bindc                 C   s   | j dtjdS N   r   r   r   r   r   r   test_auth_none_7_bind7  s    z%TestDCERPC_BIND.test_auth_none_7_bindc                 C   s   | j dtjdS Nrr   r   r   r   r   r   r   test_auth_none_255_bind;  s    z'TestDCERPC_BIND.test_auth_none_255_bindc                 C   s  t  }|g}t }d|_t||_tjj	 |_	||_
|g}tj}d}| jd|d}| | |  }	| |	t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jd jtj | |	jjd j tj! | "|	jjd j#| | t|	jj$d | j%d|jddd}| | |  }	| j|	tj&|jdd	 | |	jj'd | |	jj|jj | |	jj(d | )t|	jj*|	jj' | j+|||d
d}
| j%d|jdd|
d}| | |  }	| j|	tj,|jdd	 | |	jj'd | |	jj|jj | |	jj(d | |	jj-d | |	jj.tj/ | |	jj0d | t|	jj1d |  }	| 2|	 | 3  d S )Nr   r   rV   r   r   r   r   r    r$   r   r   r   r   r!   r"   r#   rF   )4r&   r'   r(   r   r!   r)   r*   r+   r,   r-   r.   DCERPC_AUTH_TYPE_NONEr/   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   r   r   r   r   DCERPC_FAULT_ACCESS_DENIEDr   r   r   r   )r   r   rP   rQ   rR   r   r   r   rS   rT   rF   r   r   r   _test_auth_none_level_request?  s    




z-TestDCERPC_BIND._test_auth_none_level_requestc                 C   s   |  tjS r   )r   r(   r   r   r   r   r   test_auth_none_none_request  s    z+TestDCERPC_BIND.test_auth_none_none_requestc                 C   s   |  tjS r   )r   r(   r   r   r   r   r   test_auth_none_connect_request  s    z.TestDCERPC_BIND.test_auth_none_connect_requestc                 C   s   |  tjS r   )r   r(   r   r   r   r   r   test_auth_none_call_request  s    z+TestDCERPC_BIND.test_auth_none_call_requestc                 C   s   |  tjS r   )r   r(   r   r   r   r   r   test_auth_none_packet_request  s    z-TestDCERPC_BIND.test_auth_none_packet_requestc                 C   s\   t j}t j}d}d }d }d}d}d }d }	d }
d }d }d }| j|||||||||	|
|||dS Nr   F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r   r   expected_faultr  r  r  r  r  r  r  r	  r
  r  r  r   r   r   (test_ntlmssp_multi_auth_first1_lastSame2  s6    z8TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_lastSame2c                 C   s\   t j}t j}d}d }d }d}d}d}d }	d }
d }d }d }| j|||||||||	|
|||dS )Nr   Fr   r  r(   r  r   r  r  r   r   r   (test_ntlmssp_multi_auth_first1_lastNext2  s6    z8TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_lastNext2c                 C   sZ   t j}d }d}d }d }d}d}d }d}	d}
d}d}d}| j|||||||||	|
|||dS Nr   Fo   r  )r(   r  r  r  r   r   r   *test_ntlmssp_multi_auth_first1_lastSame111  s6    z:TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_lastSame111c                 C   s\   t j}t j}d}d }d }d}d}d}d}	d}
d}d}d}| j|||||||||	|
|||dS )Nr   Fr   r  r  r  r  r   r   r   *test_ntlmssp_multi_auth_first1_lastNext111  s6    z:TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_lastNext111c                 C   s\   t j}t j}d}d}d}d}d}d}d}	d}
d}d}d}| j|||||||||	|
|||dS Nr   r   r   FTr  r  r  r  r   r   r   .test_ntlmssp_multi_auth_MPX_first1_lastNext111  s6    z>TestDCERPC_BIND.test_ntlmssp_multi_auth_MPX_first1_lastNext111c                 C   s\   t j}t j}d }d }d }d}d}d }d }	d }
d }d }d }| j|||||||||	|
|||dS NFr  r  r  r   r   r   +test_ntlmssp_multi_auth_first1_lastSameNone#  s6    z;TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_lastSameNonec                 C   s\   t j}t j}d }d }d }d}d}d }d }	d }
d }d }d }| j|||||||||	|
|||dS NFTr  r  r  r   r   r   /test_ntlmssp_multi_auth_MPX_first1_lastSameNone?  s6    z?TestDCERPC_BIND.test_ntlmssp_multi_auth_MPX_first1_lastSameNonec                 C   s\   t j}t j}d }d }d }d}d}d}d }	d }
d }d }d }| j|||||||||	|
|||dS NFr   r  r  r  r   r   r   +test_ntlmssp_multi_auth_first1_lastNextNone[  s6    z;TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_lastNextNonec                 C   s\   t j}t j}d }d}d}d}d}d}d }	d }
d }d }d }| j|||||||||	|
|||dS Nr   r   FTr  r  r  r   r   r   /test_ntlmssp_multi_auth_MPX_first1_lastNextNonew  s6    z?TestDCERPC_BIND.test_ntlmssp_multi_auth_MPX_first1_lastNextNonec                 C   s\   t j}t j}d }d }d }d}d}d }d}	d}
d }d }d }| j|||||||||	|
|||dS NFr  r  r  r  r   r   r   .test_ntlmssp_multi_auth_first1_lastSameNone111  s6    z>TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_lastSameNone111c                 C   s\   t j}t j}d }d }d }d}d}d }d}	d}
d }d }d }| j|||||||||	|
|||dS NFTr  r  r  r  r   r   r   2test_ntlmssp_multi_auth_MPX_first1_lastSameNone111  s6    zBTestDCERPC_BIND.test_ntlmssp_multi_auth_MPX_first1_lastSameNone111c                 C   s\   t j}t j}d }d }d }d}d}d}d}	d}
d }d }d }| j|||||||||	|
|||dS NFr   r  r  r  r  r   r   r   .test_ntlmssp_multi_auth_first1_lastNextNone111  s6    z>TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_lastNextNone111c                 C   s\   t j}t j}d }d}d}d}d}d}d}	d}
d }d }d }| j|||||||||	|
|||dS Nr   r   FTr  r  r  r  r   r   r   2test_ntlmssp_multi_auth_MPX_first1_lastNextNone111  s6    zBTestDCERPC_BIND.test_ntlmssp_multi_auth_MPX_first1_lastNextNone111r   Fc           -   	   C   s  t j}t j}d}t j}d}|  }tj j }t	 }|g}tj j 
 }d|_t||_||_||_| j||||dd}| j||||dd}t jt jB }|r|t jO }| jd||d}| jd|||jjdd}|dkr| jd|||jjdd}| j}| j} tj j }!|!}"|r(tjd	tj|"  tj|"}#|#d
7 }#| r`tjdt|#| |#f  d}$|j}%|"  }&|stj j j}'|#dd }(| j!|$|%|'|&t|#|(|d})| j"|)|| d | j#dd}*| $|* | %  |dkr|& }+n|dkr |& }+nd }+t jt jB },|d u r|%}|d u r,|$}|	r<|,t j'O },|
d urJ|
}$|d urX|}%|d urf|}&|d urx||+d< |d ur||+d< |d ur||+d< tj j j}'|#dd }(| j!|$|%||&t|(|(|+d})| j"|)|| d |d u r | j(d||"d|d d S | # }*| j)|*t j*||,dd | +|*jj,d | -|*jj| | -|*jj.d | -|*jj/d | -|*jj0| | -|*jj1d | -t|*jj2d |	r| j#dd}*| $|* | %  d S | # }*| $|* | 3  d S )Nr   r   Fr   r   r   r   hdr_signingr   )r   ctxr   Tr   r-  r   r9   start_with_alterzin: %ss-   zstub_in: %d
%sr      )r   r!   r   r"   rI   r#   r   	ndr_printhexdump{Gz?Ztimeoutr   r   r   )r   r-  ioZsend_reqr   r   )4r(   r  r   r   get_user_credsr+   r,   r-   r&   r'   r   r!   r)   r*   r.   r   r^   r_   ri   do_generic_bindr5   r9   r   r   
inq_if_idssysstderrwritendrZndr_print_inZndr_pack_inr3  r"   Zgenerate_request_authr0   r1   r   assertIsConnectedcopyrk   do_single_requestr2   r   r8   rI   r4   rJ   r   r   r   r   r   )-r   r   pfc_flags_2ndr  r  
skip_firstr  r  r  r  r  r  r	  r
  r  r  auth_level1auth_context_id1auth_level2auth_context_id2r   abstracttransferrQ   r-  auth_context1auth_context2Zbind_pfc_flagsack0ack1ack2r2  r3  r:  r7  Zstub_inr   r!   r"   r   Zstub_in_tmprS   rT   Zauth_context_copyZexpected_pfc_flagsr   r   r   _test_generic_auth_first_2nd  s   




















z,TestDCERPC_BIND._test_generic_auth_first_2ndc                 C   s0   t jjj}| j||||||||||	|
|||dS Nr  )r+   r(   r_   rO  r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  rB  r   r   r   r    s     
z-TestDCERPC_BIND._test_generic_auth_first_lastc                 C   s0   t jjj}| j||||||||||	|
|||dS rP  )r+   r(   r^   rO  rQ  r   r   r   _test_generic_auth_first_first  s     
z.TestDCERPC_BIND._test_generic_auth_first_firstc                 C   s\   t j}t j}d}d }d }d}d}d }d }	d }
d }d }d }| j|||||||||	|
|||dS r   )r(   r  r  rR  r  r   r   r   )test_ntlmssp_multi_auth_first1_firstSame2  s6    z9TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_firstSame2c                 C   s\   t j}t j}d}d}d }d}d}d}d }	d }
d }d }d }| j|||||||||	|
|||dS )Nr   r   Fr   r  r(   r  r   rR  r  r   r   r   )test_ntlmssp_multi_auth_first1_firstNext2  s6    z9TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_firstNext2c                 C   s\   t j}t j}d}d }d }d}d}d }d}	d}
d}d}d}| j|||||||||	|
|||dS r  rT  r  r   r   r   +test_ntlmssp_multi_auth_first1_firstSame111	  s6    z;TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_firstSame111c                 C   s\   t j}t j}d}d }d }d}d}d }d}	d}
d}d}d}| j|||||||||	|
|||dS )Nr   FTr  r  rT  r  r   r   r   /test_ntlmssp_multi_auth_MPX_first1_firstSame1114	  s6    z?TestDCERPC_BIND.test_ntlmssp_multi_auth_MPX_first1_firstSame111c                 C   s\   t j}t j}d}d}d }d}d}d}d}	d}
d}d}d}| j|||||||||	|
|||dS )Nr   r   Fr   r  r  rT  r  r   r   r   +test_ntlmssp_multi_auth_first1_firstNext111P	  s6    z;TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_firstNext111c                 C   s\   t j}t j}d}d}d}d}d}d}d}	d}
d}d}d}| j|||||||||	|
|||dS r  rT  r  r   r   r   /test_ntlmssp_multi_auth_MPX_first1_firstNext111l	  s6    z?TestDCERPC_BIND.test_ntlmssp_multi_auth_MPX_first1_firstNext111c                 C   s\   t j}t j}d }d }d }d}d}d }d }	d }
d }d }d }| j|||||||||	|
|||dS r  rT  r  r   r   r   ,test_ntlmssp_multi_auth_first1_firstSameNone	  s6    z<TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_firstSameNonec                 C   s\   t j}t j}d }d }d }d}d}d }d }	d }
d }d }d }| j|||||||||	|
|||dS r  rT  r  r   r   r   0test_ntlmssp_multi_auth_MPX_first1_firstSameNone	  s6    z@TestDCERPC_BIND.test_ntlmssp_multi_auth_MPX_first1_firstSameNonec                 C   s\   t j}t j}d }d }d }d}d}d}d }	d }
d }d }d }| j|||||||||	|
|||dS r  rT  r  r   r   r   ,test_ntlmssp_multi_auth_first1_firstNextNone	  s6    z<TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_firstNextNonec                 C   s\   t j}t j}d }d}d}d}d}d}d }	d }
d }d }d }| j|||||||||	|
|||dS r!  rT  r  r   r   r   0test_ntlmssp_multi_auth_MPX_first1_firstNextNone	  s6    z@TestDCERPC_BIND.test_ntlmssp_multi_auth_MPX_first1_firstNextNonec                 C   s\   t j}t j}d }d }d }d}d}d }d}	d}
d }d }d }| j|||||||||	|
|||dS r#  rT  r  r   r   r   /test_ntlmssp_multi_auth_first1_firstSameNone111	  s6    z?TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_firstSameNone111c                 C   s\   t j}t j}d }d }d }d}d}d }d}	d}
d }d }d }| j|||||||||	|
|||dS r%  rT  r  r   r   r   3test_ntlmssp_multi_auth_MPX_first1_firstSameNone111
  s6    zCTestDCERPC_BIND.test_ntlmssp_multi_auth_MPX_first1_firstSameNone111c                 C   s\   t j}t j}d }d }d }d}d}d}d}	d}
d }d }d }| j|||||||||	|
|||dS r'  rT  r  r   r   r   /test_ntlmssp_multi_auth_first1_firstNextNone1110
  s6    z?TestDCERPC_BIND.test_ntlmssp_multi_auth_first1_firstNextNone111c                 C   s\   t j}t j}d }d}d}d}d}d}d}	d}
d }d }d }| j|||||||||	|
|||dS r)  rT  r  r   r   r   3test_ntlmssp_multi_auth_MPX_first1_firstNextNone111L
  s6    zCTestDCERPC_BIND.test_ntlmssp_multi_auth_MPX_first1_firstNextNone111c                 C   s<   d}d}d}d }d }| j ||||||||||||||	|
dS )Nr   Tr   )r  rC  r  r  r  r  r  r  r	  r
  r  r  )rO  )r   r   r  r  r  r  r  r	  r
  r  r  r  rC  rB  r  r  r   r   r   _test_generic_auth_middleh
  s*    z)TestDCERPC_BIND._test_generic_auth_middlec                 C   sJ   t j}t j}d}d}d}d }d }d }d }	d }
| j|||||||||	|
d
S )Nr   Fr  r  r  r  r	  r
  r  r  r(   r  r   rb  r   r   r  r  r  r  r  r	  r
  r  r  r   r   r   test_ntlmssp_auth_middle_alone
  s*    z.TestDCERPC_BIND.test_ntlmssp_auth_middle_alonec                 C   sJ   t j}t j}d }d}d}d }d }d }d }	d }
| j|||||||||	|
d
S )NFTrc  rd  re  r   r   r   "test_ntlmssp_auth_MPX_middle_alone
  s*    z2TestDCERPC_BIND.test_ntlmssp_auth_MPX_middle_alonec                 C   sJ   t j}t j}d}d}d}d}d}d}d}	d}
| j|||||||||	|
d
S Nr   Fr  rc  rd  re  r   r   r    test_ntlmssp_auth_middle_all_111
  s*    z0TestDCERPC_BIND.test_ntlmssp_auth_middle_all_111c                 C   sJ   t j}t j}d}d}d}d}d}d}d}	d}
| j|||||||||	|
d
S )Nr   Tr  rc  )r(   r  r   rb  re  r   r   r   $test_ntlmssp_auth_MPX_middle_all_111
  s*    z4TestDCERPC_BIND.test_ntlmssp_auth_MPX_middle_all_111c                 C   sJ   t j}t j}d}d}d}d }d}d}d}	d}
| j|||||||||	|
d
S rh  rd  re  r   r   r   %test_ntlmssp_auth_middle_auth_all_111
  s*    z5TestDCERPC_BIND.test_ntlmssp_auth_middle_auth_all_111c                 C   sJ   t j}t j}d }d}d}d }d}d}d}	d}
| j|||||||||	|
d
S NFTr  rc  r(   r  r   rb  re  r   r   r   )test_ntlmssp_auth_MPX_middle_auth_all_111
  s*    z9TestDCERPC_BIND.test_ntlmssp_auth_MPX_middle_auth_all_111c                 C   sJ   t j}t j}d}d}d}d }d }d}d }	d }
| j|||||||||	|
d
S rh  rd  re  r   r   r   )test_ntlmssp_auth_middle_auth_context_111  s*    z9TestDCERPC_BIND.test_ntlmssp_auth_middle_auth_context_111c                 C   sJ   t j}t j}d }d}d}d }d }d}d }	d }
| j|||||||||	|
d
S rl  rm  re  r   r   r   -test_ntlmssp_auth_MPX_middle_auth_context_111"  s*    z=TestDCERPC_BIND.test_ntlmssp_auth_MPX_middle_auth_context_111c                 C   sJ   t j}t j}d}d}d}d }d }d }d}	d }
| j|||||||||	|
d
S rh  rd  re  r   r   r   &test_ntlmssp_auth_middle_auth_type_1118  s*    z6TestDCERPC_BIND.test_ntlmssp_auth_middle_auth_type_111c                 C   sJ   t j}t j}d }d}d}d }d }d }d}	d }
| j|||||||||	|
d
S rl  rm  re  r   r   r   *test_ntlmssp_auth_MPX_middle_auth_type_111N  s*    z:TestDCERPC_BIND.test_ntlmssp_auth_MPX_middle_auth_type_111c                 C   sJ   t j}t j}d}d}d}d }d }d }d }	d}
| j|||||||||	|
d
S rh  rd  re  r   r   r   'test_ntlmssp_auth_middle_auth_level_111d  s*    z7TestDCERPC_BIND.test_ntlmssp_auth_middle_auth_level_111c                 C   sJ   t j}t j}d }d}d}d }d }d }d }	d}
| j|||||||||	|
d
S rl  rm  re  r   r   r   +test_ntlmssp_auth_MPX_middle_auth_level_111z  s*    z;TestDCERPC_BIND.test_ntlmssp_auth_MPX_middle_auth_level_111c                 C   s  t  }|g}t }d|_t||_tjj	 |_	||_
| jd|||gd}	| |	 |  }
| j|
tj|	jdd | |
jj| | |
jj| | |
jj|	jj | |
jjd | |
jjd| j  | |
jjd | |
jjd | |
jjd jtj | |
jjd jtj  | !|
jjd j"| | |
jj#d |
jj}|d u r`|d	 }|d u rr|d	 }| j$d||d
|
jj |gd}	| |	 |  }
| j|
tj%|	jdd | |
jj| | |
jj| | |
jj|
jj | |
jjd | |
jjd | |
jjd | |
jjd jtj | |
jjd jtj  | !|
jjd j"| | |
jj#d |tj& }| j'd|jdd
d| d}	| j|	ddd | jddd}
| j|
tj(|	jdd | |
jj)d | |
jj|	jj | |
jj*d | +t|
jj,|
jj) dtj& }| j'd|jdd
d| d}	| |	 |  }
| j|
tj(|	jdd | |
jj)d | |
jj|	jj | |
jj*d | +t|
jj,|
jj) |d7 }| j'd|jdd
d| d}	| |	 |  }
| j|
tj-|	jdd | |
jj)d | |
jjd | |
jj*d | |
jj.d | |
jj/tj0 | |
jj1d | t|
jj2d |  }
| 3|
 | 4  d S )Nr   r   )r   r6   r7   r   r$   r   r   r   r   rg       )r   r6   r7   r9   r       r   r!   r"   rI   r#   Tr1    r   )5r&   r'   r(   r   r!   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rX   rY   DCERPC_REQUEST_LENGTHrG   rH   rI   rJ   rK   rL   r   r   r   r   r   r   r   r   )r   req_xmitreq_recvrep_both
alter_xmit
alter_recvrP   rQ   rR   rS   rT   r9   Z
chunk_sizer   r   r   _test_neg_xmit_check_values  s    










z+TestDCERPC_BIND._test_neg_xmit_check_valuesc                 C   s   | j ddddS )Nr   rx  rz  r{  r|  r  r   r   r   r   test_neg_xmit_ffff_ffff	  s    z'TestDCERPC_BIND.test_neg_xmit_ffff_ffffc                 C   s   | j ddddddS )Nr   r      rz  r{  r|  r}  r~  r  r   r   r   r   test_neg_xmit_0_ffff  s    z$TestDCERPC_BIND.test_neg_xmit_0_ffffc                 C   s   | j ddddS )Nr   r   r  r  r  r   r   r   r   test_neg_xmit_ffff_0  s    z$TestDCERPC_BIND.test_neg_xmit_ffff_0c                 C   s   | j ddddddS )Nr   r  r   r  r  r   r   r   r   test_neg_xmit_0_0  s    z!TestDCERPC_BIND.test_neg_xmit_0_0c                 C   s   | j ddddS )N  r   r  r  r  r   r   r   r   test_neg_xmit_3199_0!  s    z$TestDCERPC_BIND.test_neg_xmit_3199_0c                 C   s   | j ddddS )Nr   r  r  r  r  r   r   r   r   test_neg_xmit_0_3199&  s    z$TestDCERPC_BIND.test_neg_xmit_0_3199c                 C   s   | j ddddS )Nr  r   x  r  r  r   r   r   r   test_neg_xmit_3199_ffff+  s    z'TestDCERPC_BIND.test_neg_xmit_3199_ffffc                 C   s   | j ddddS )Nr   r  r  r  r  r   r   r   r   test_neg_xmit_ffff_31990  s    z'TestDCERPC_BIND.test_neg_xmit_ffff_3199c                 C   s  t  }|g}t }d|_t||_tjj	 |_	||_
| jd|gd}| | |  }| j|tj|jdd | |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jd jtj | |jjd jtj  | !|jjd j"| | |jj#d | j$d|jdd	dd
}| | |  }| j|tj%|jdd | |jj&d | |jj|jj | |jj'd | (t|jj)|jj& | j$d|jdd	dd
}| | |  }| j|tj%|jdd | |jj&d | |jj|jj | |jj'd | (t|jj)|jj& | j$d|jdddd
}| | |  }| j|tj%|jdd | |jj&d | |jj|jj | |jj'd | (t|jj)|jj& d S )Nr   rV   r$   r   r   r   r   r   ru  rw  r   s          r%   )r   rP   rQ   r-  rS   rT   r   r   r   test_alloc_hint5  s    




zTestDCERPC_BIND.test_alloc_hintc                 C   s  t jj }t }| j||dddd\}}d| j }t|t	rR|
dd}n
|d}d}t|t	r||
dd}n
|d}tdd	t|d
 dt|d
 }	|	|d 7 }	t|	d }
|
dkr|	dd|
  7 }	|	tdt|d
 dt|d
 7 }	|	|d 7 }	|	d7 }	|||	fS )Nr   T)r!   Zepmap
return_ackz\\zutf-8z	utf-16-leZUNKNOWNCOMPUTERz<IIIIi    r   s     r   rv  z<IIIs   "3DUfw)r+   r(   Znetlogonr-   r&   r'   prepare_presentationtarget_hostname
isinstancer   decodeencodestructZpackr)   )r   rH  rP   r-  ackZserverZserver_utf16ZcomputerZcomputer_utf16	real_stubmod_lenr   r   r   _get_netlogon_ctx~  s4    






z!TestDCERPC_BIND._get_netlogon_ctxc                 C   s  |   \}}}|jjtj }d}	d}
|dkr~t||}||8 }|	|7 }	d}|
rt|tjO }d}
|d|t|   }nd| }|dkr|tjO }| j	d||j
d||d}||kr||8 }nd}| j|dd |d ur|  }| j|tj|jdd	 | |jjd | |jj
|jj
 | |jjd | |jjd | |jj| | |jjd | t|jjd |  }| | |   d S |dkrq~|	d
kr^|d ur^|  }| j|tj|jdd	 | |jjd | |jj
|jj
 | |jjd | |jjd | |jj| | |jjd | t|jjd |  }| | |   d S | jdd}| | |   q$|	d
krF|d urF|  }| j|tj|jdd	 | |jjd | |jj
|jj
 | |jjd | |jjd | |jj| | |jjd | t|jjd |  }| | |   d S |  }| j|tj|jdd	 | |jjd | |jj
|jj
 | |jjd | t|jj|jj | t|jjd td|jjt|jjd }| |d d d S )Nr   TFrv  i4 r   )r   r   r!   r"   rI   r#   )r3  r$     @ r4  r5     <I) r  r5   r7   r(   ry  minr^   r)   r_   rG   r!   r0   r1   r2   r   r   r8   rI   r4   rJ   r   r   r   r   r   r   r?  rH   rK   rL   r  unpack_from)r   	remainingrI   fault_first
fault_lastr-  rT   r  chunktotalfirstZthistimer   r#   rS   r   r   r   r   _test_fragmented_requests  s    











z)TestDCERPC_BIND._test_fragmented_requestsc                 C   s   | j dddS )Nr  r  rI   r  r   r   r   r   test_fragmented_requests01
  s    z*TestDCERPC_BIND.test_fragmented_requests01c                 C   s   | j dddS )Nr  i   r  r  r   r   r   r   test_fragmented_requests02  s    z*TestDCERPC_BIND.test_fragmented_requests02c                 C   s   | j dddS )Nr  r   r  r  r   r   r   r   test_fragmented_requests03  s    z*TestDCERPC_BIND.test_fragmented_requests03c                 C   s   | j ddtjdS )Nr  i @ )r  rI   r  r  r(   r   r   r   r   r   test_fragmented_requests04  s    z*TestDCERPC_BIND.test_fragmented_requests04c                 C   s   | j ddtjdS )Ni P r   )r  rI   r  r  r   r   r   r   test_fragmented_requests05  s    z*TestDCERPC_BIND.test_fragmented_requests05c                 C   s   |   \}}}| jd||jd|d}| | |r|  }| j|tj|jdd | 	|j
jd | |j
jd | |j
jd | |j
jd | |j
jtj | |j
jd | t|j
jd |  }| | |   d S | jdd}| | |   | jd||jd|d}| | |r|  }| j|tj|jdd | 	|j
jd | |j
j|j
j | |j
jd | |j
jd | |j
jtj | |j
jd | t|j
jd |  }| | |   d S | jdd}| | |   d S )Nr   r   r   r   r!   r"   r#   r   r$   皙?r5  )r  rG   r!   r0   r1   r2   r(   r   r   r8   r5   rI   r4   rJ   r   r   r   r   r)   r   r   r   r?  )r   r   	fault_1st	fault_2ndr-  rT   r  rS   r   r   r   _test_same_requests   sj    





z#TestDCERPC_BIND._test_same_requestsc                 C   s   | j tjddS NTr   r  r  r(   r^   r   r   r   r   test_first_only_requests_  s    z(TestDCERPC_BIND.test_first_only_requestsc                 C   s   | j dddS )Nr   Tr   r  )r  r   r   r   r   test_none_only_requestsc  s    z'TestDCERPC_BIND.test_none_only_requestsc                 C   s   | j tjddS )NTr  )r  r(   r_   r   r   r   r   test_last_only_requestsf  s    z'TestDCERPC_BIND.test_last_only_requestsc                 C   s   | j tjtjB ddS r  )r  r(   r^   rm   r   r   r   r   test_first_maybe_requestsj  s
    z)TestDCERPC_BIND.test_first_maybe_requestsc                 C   s   | j tjtjB ddS r  )r  r(   r^   rk   r   r   r   r   test_first_didnot_requestso  s
    z*TestDCERPC_BIND.test_first_didnot_requestsc                 C   s   | j tjtjB ddS r  )r  r(   r^   ri   r   r   r   r   test_first_cmpx_requestst  s
    z(TestDCERPC_BIND.test_first_cmpx_requestsc                 C   s   | j tjdB ddS )Nrg   Tr  r  r   r   r   r   test_first_08_requestsy  s
    z&TestDCERPC_BIND.test_first_08_requestsc                 C   s   |   \}}}| jdtjtjB |jd|d}| | |  }| j|tj	|j
tjtjB tjB dd | |jjd | |jjd | |jjd | |jjd | |jjtj | |jjd | t|jjd |  }| | |   d S )Nr   r   r  r   r   )r  rG   r(   r^   DCERPC_PFC_FLAG_PENDING_CANCELr!   r0   r1   r2   r   r   r_   rk   r8   r5   rI   r4   rJ   r   r   ZDCERPC_FAULT_NO_CALL_ACTIVEr   r)   r   r   r   r   r-  rT   r  rS   r   r   r   test_first_cancel_requests~  s:    

z*TestDCERPC_BIND.test_first_cancel_requestsc                 C   s`  |   \}}}| jdtj|jd|d}| | | jdd}| | |   | jdtj	|jd|d}| | | jdd}| | |   | jdtj
|jd|d}| | |  }| j|tj|jdd | |jjd | |jj|jj | |jjd | t|jj|jj | t|jjd td	|jjt|jjd }| |d d d S 
Nr   r   r  r  r5  r   r$   r  r  )r  rG   r(   r^   r!   r0   r1   r   r?  r  r_   r2   rH   r   r8   r5   rI   r4   rJ   rK   r)   rL   r  r  r   r-  rT   r  rS   r   r   r   r   test_2nd_cancel_requests  sN    




z(TestDCERPC_BIND.test_2nd_cancel_requestsc                 C   s6  |   \}}}| jdtj|jd|d d d}| | | jdd}| | |   | jdtj	tj
B |jd|dd  d}| | |  }| j|tj|jdd | |jjd | |jj|jj | |jjd | t|jj|jj | t|jjd td	|jjt|jjd }| |d d d S r  )r  rG   r(   r^   r!   r0   r1   r   r?  r_   r  r2   rH   r   r8   r5   rI   r4   rJ   rK   r)   rL   r  r  r  r   r   r   test_last_cancel_requests  s>    




z)TestDCERPC_BIND.test_last_cancel_requestsc                 C   s  |   \}}}| jdtj|jd|d}| | | jdd}| | |   | jdtj|jd|d}| | |  }| j	|tj
dtjtjB dd | |jjd | |jj|jj | |jjd | |jjd | |jjtj | |jjd | t|jjd d S )	N2   r   r  r  r5  3   r   r   )r  rG   r(   r^   r!   r0   r1   r   r?  r2   r   r_   r8   r5   rI   r4   rJ   r   r   r   r   r)   r   r  r   r   r   test_mix_requests  s@    


z!TestDCERPC_BIND.test_mix_requestsc                 C   s   t  }tjj }| j||dd}| jdd}| | | j	dd}| 
| |   | jd|jdd	d
}| | | 	 }| j|tj|jdd | |jjd | |jj|jj | |jjd | t|jj|jj d S )Nrr   r!   r   r   r4  r5  r   r   r   r    r$   )r&   r'   r+   r(   r,   r-   r  generate_co_cancelr0   r1   r   r?  rG   r!   r2   rH   r   r8   r5   rI   r4   rJ   rK   r)   rL   r   rP   rH  r-  rS   rT   r   r   r   test_co_cancel_no_request  s,    


z)TestDCERPC_BIND.test_co_cancel_no_requestc                 C   s  t  }tjj }| j||dd}| jdtj|j	ddd}| 
| | jdd}| | |   | jdd	}| 
| | jdd}| | |   | jdtj|j	ddd}| 
| |  }| j|tj|jdd
 | |jjd | |jj	|jj	 | |jjd | t|jj|jj | jd|j	ddd}| 
| |  }| j|tj|jdd
 | |jjd | |jj	|jj	 | |jjd | t|jj|jj d S )Nrr   r  r   r   r   r  r4  r5  r   r$   r   r    )r&   r'   r+   r(   r,   r-   r  rG   r^   r!   r0   r1   r   r?  r  r_   r2   rH   r   r8   r5   rI   r4   rJ   rK   r)   rL   r  r   r   r   "test_co_cancel_request_after_first'  s^    





z2TestDCERPC_BIND.test_co_cancel_request_after_firstc                 C   s   t  }tjj }| ||}| jdd}| | | j	dd}| 
| |   | jd|jddd}| | | 	 }| j|tj|jdd	 | |jjd | |jj|jjd
@  | |jjd | t|jj|jj d S )Nr   r   r4  r5  r   r   r   r    r$   rr   )r&   r'   r+   r(   r,   r-   r  generate_orphanedr0   r1   r   r?  rG   r!   r2   rH   r   r8   r5   rI   r4   rJ   rK   r)   rL   r  r   r   r   test_orphaned_no_requestX  s,    


z(TestDCERPC_BIND.test_orphaned_no_requestc                 C   s  t  }tjj }| ||}| jdtj|j	ddd}| 
| | jdd}| | |   | jdd}| 
| | jdd}| | |   | jdtj|j	ddd}| 
| |  }| j|tj|jdd | |jjd | |jj	|jj	d	@  | |jjd | t|jj|jj | jd
|j	ddd}| 
| |  }| j|tj|jdd | |jjd | |jj	|jj	d	@  | |jjd | t|jj|jj d S )Nr   r   r   r  r  r5  r   r$   rr   r   r    )r&   r'   r+   r(   r,   r-   r  rG   r^   r!   r0   r1   r   r?  r  r_   r2   rH   r   r8   r5   rI   r4   rJ   rK   r)   rL   r  r   r   r   &test_orphaned_request_after_first_lastq  s^    





z6TestDCERPC_BIND.test_orphaned_request_after_first_lastc                 C   s  t  }tjj }tjjj}|tjjjO }|tjjjO }| j	|||d}| j
dtj|jddd}| | | jdd}| | |   | jdd}| | | jdd}| | |   | j
dtj|jddd}| | |  }| j|tj|jdd	 | |jjd | |jj|jjd
@  | |jjd | t|jj|jj | j
d|jddd}| | |  }| j|tj|jdd	 | |jjd | |jj|jjd
@  | |jjd | t|jj|jj d S )Nr   r   r   r   r  r  r5  r   r$   rr   r   r    )r&   r'   r+   r(   r,   r-   r^   r_   ri   r  rG   r!   r0   r1   r   r?  r  r2   rH   r   r8   r5   rI   r4   rJ   rK   r)   rL   )r   rP   rH  r   r-  rS   rT   r   r   r   *test_orphaned_request_after_first_mpx_last  sd    






z:TestDCERPC_BIND.test_orphaned_request_after_first_mpx_lastc                 C   sh  t  }tjj }| ||}| jdtj|j	ddd}| 
| | jdd}| | |   | jdd}| 
| | jdd}| | |   | jd|j	ddd	}| 
| |  }| j|tj|jdd
 | |jjd | |jj	|jj	 | |jjd | |jjd | |jjtj | |jjd | t|jjd |  }| | |   d S )Nr   r   r   r  r  r5  r   r   r    r$   )r&   r'   r+   r(   r,   r-   r  rG   r^   r!   r0   r1   r   r?  r  r2   r   r   r8   r5   rI   r4   rJ   r   r   r   r   r)   r   r   )r   rP   rH  r-  req1rT   rS   req2r   r   r   )test_orphaned_request_after_first_no_last  sL    





z9TestDCERPC_BIND.test_orphaned_request_after_first_no_lastc           	      C   s  t  }tjj }tjjj}|tjjjO }|tjjjO }| j	|||d}| j
dtj|jddd}| | | jdd}| | |   | jdd}| | | jdd}| | |   | j
d	|jd ddd
}| | |  }| j|tj|jdd | |jjd | |jjd | |jjd | |jjd | |jjtj | |jjd | t|jjd |  }| | |   d S )Nr  r   r   r   r  r  r5  r   r   r    r$   ) r&   r'   r+   r(   r,   r-   r^   r_   ri   r  rG   r!   r0   r1   r   r?  r  r2   r   r   r8   r5   rI   r4   rJ   r   r   r   r   r)   r   r   )	r   rP   rH  r   r-  r  rT   rS   r  r   r   r   -test_orphaned_request_after_first_mpx_no_last  sV    






z=TestDCERPC_BIND.test_orphaned_request_after_first_mpx_no_lastc                 C   sD  t  }|g}t }d|_t||_tjj	 |_	||_
|g}|  }tj| j}|| |tj tj}tj}	d}
|||	 d}||\}}| | | j||	|
|d}| jd||d}| | |  }| |t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 jd j+tj, | |j jd j-tj. | /|j jd j0| | #t|j j1d | 2|j j1}|j3}||\}}| | | j||	|
|d}| j4d||j j$|d	}| | |  }| |tj5|j | |j j!|j j! | |j j"|j j" | |j j$|j j$ | |j j%d | (|j j)d | |j j*d | |j jd j+tj, | |j jd j-tj. | /|j jd j0| | #t|j j1d | 2|j j1}|j3}||\}}| 6| | j7d|jddd
}| | |  }| j|tj8|jdd | #|j j9d | |j j|j jd@  | |j j:d | ;t|j j<|j j9 | j||	|
dd}| j7d|jdd|d}| | |  }| j|tj8|jdd | #|j j9d | |j j|j jd@  | |j j:d | ;t|j j<|j j9 | j|||
dd}| j7d|jdd|d}| | |  }| j|tj=|jdd | #|j j9d | |j j|j j | |j j:d | |j j>d | |j j?tj@ | |j jAd | t|j jBd |  }| C| | D  d S )Nr   r   r   r   r   r   r   r   r   r   r9   rF   r    r$   rr                     r   r   )Er&   r'   r(   r   r!   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/   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   
parse_authcredentialsrX   rY   
assertTruerG   rH   rI   rJ   rK   rL   r   r   r   r   r   r   r   r   )r   Zupgrade_auth_levelrP   rQ   rR   r   cgr   r   r   r   r   r   rF   rS   rT   ar   r   r   $_test_spnego_connect_upgrade_request2  s   










z4TestDCERPC_BIND._test_spnego_connect_upgrade_requestc                 C   s   |  tjS r   )r  r(   r   r   r   r   r   "test_spnego_connect_packet_upgrade  s    z2TestDCERPC_BIND.test_spnego_connect_packet_upgradec                 C   s   |  tjS r   r  r(   r   r   r   r   r   %test_spnego_connect_integrity_upgrade  s    z5TestDCERPC_BIND.test_spnego_connect_integrity_upgradec                 C   s  t  }|g}t }d|_t||_tjj	 |_	||_
|g}|  }tj| j}|| |tj tj}|}	d}
|||	 d}||\}}| | | j||	|
|d}| jd||d}| | |  }| |t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jd j*tj+ | |jjd j,tj- | .|jjd j/| | "t|jj0d | 1|jj0}|j2}||\}}| | | j||	|
|d}| j3d||jj#|d	}| | |  }| |tj4|j | |jj |jj  | |jj!|jj! | |jj#|jj# | |jj$d | '|jj(d | |jj)d | |jjd j*tj+ | |jjd j,tj- | .|jjd j/| | "t|jj0d | 1|jj0}|j2}||\}}| 5| | j|tj6|
d
d}| j7d|jdd|d}| | |  }| j|tj8|jdd | "|jj9d | |jj|jj | |jj:d | |jj;d | |jj<tj= | |jj>d | t|jj?d |  }| @| | A  d S )Nr   r   r   r   r   r   r   r   r  r  r   r   r$   )Br&   r'   r(   r   r!   r)   r*   r+   r,   r-   r.   r  r   r  r  r  r  r  r  r  r  r   r   r   r/   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   r  r  rX   rY   r  r   rG   r   rI   rJ   r   r   r   r   r   r   r   )r   Zinitial_auth_levelrP   rQ   rR   r   r  r  r   r   r   r   r   r   rF   rS   rT   r  r   r   r   &_test_spnego_connect_downgrade_request  s    








z6TestDCERPC_BIND._test_spnego_connect_downgrade_requestc                 C   s   |  tjS r   )r  r(   r   r   r   r   r   $test_spnego_packet_downgrade_connect>  s    z4TestDCERPC_BIND.test_spnego_packet_downgrade_connectc                 C   s   |  tjS r   r  r   r   r   r   'test_spnego_integrity_downgrade_connectB  s    z7TestDCERPC_BIND.test_spnego_integrity_downgrade_connectc                 C   s  t  }|g}t }d|_t||_tjj	 |_	||_
|g}|  }tj| j}|| |tj tj}tj}d}	||| d}
||
\}}| | | j|||	|d}| jd||d}| | |  }| |tj|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 jd j+tj, | |j jd j-tj. | /|j jd j0| | #t|j j1d | 2|j j1}|j3}
||
\}}| | | j|||	d	d}| j4d|jdd|d
}| | |  }| j|tj5|j|j6tj7B dd | #|j j8d | |j jd | |j j9d | |j j:d | |j j;tj< | |j j=d | t|j j>d |  }| ?| | @  d S )Nr   r   r   r   r   r   r   r   r  r   r   )Ar&   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/   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   r  r  rG   r   r   rk   rI   rJ   r   r   r   r   r   r   r   )r   rP   rQ   rR   r   r  r  r   r   r   r   r   r   rF   rS   rT   r9   r  r   r   r   test_spnego_unfinished_requestF  s    






z.TestDCERPC_BIND.test_spnego_unfinished_requestc                 C   s  t  }|g}t }d|_t||_tjj	 |_	||_
|g}|  }tj| j}|| |tj tj}tj}d}	||| d}
||
\}}| | | j|||	|d}| jd||d}| | |  }| |t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 jd j+tj, | |j jd j-tj. | /|j jd j0| | #t|j j1d | 2|j j1}|j3}
||
\}}| | | j|||	|d}| j4d|d	}| | | jd
d}| 5| | 6  | j7d|jddd}| | |  }| j|tj8|jdd | #|j j9d | |j j|j j | |j j:d | |j j;d | |j j<tj= | |j j>d | t|j j?d |  }| 5| | @  d S )Nr   r   r   r   r   r   r   r   r   rF   r4  r5  r    r$   )Ar&   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/   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   r  r  generate_auth3r   r?  rG   r   rI   rJ   r   r   r   r   r   r   )r   rP   rQ   rR   r   r  r  r   r   r   r   r   r   rF   rS   rT   r  r   r   r   test_spnego_auth3  s    








z!TestDCERPC_BIND.test_spnego_auth3c                 C   s  t  }t  }|g}t }d|_t||_tjj	
 |_
||_|g}|  }tj| j}|| |tj tj}tj}	d}
|||	 d}||\}}| | | j||	|
|d}| jd||d}| | |  }| |t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!jd j,tj- |  |j!jd j.tj/ | 0|j!jd j1| | $t|j!j2d | 3|j!j2}|j4}||\}}| | | j||	|
|d}| j5d|g|j!j%|d	}| | |  }| |tj6|j |  |j!j"|j!j" |  |j!j#|j!j# |  |j!j%|j!j% |  |j!j&d | )|j!j*d |  |j!j+d |  |j!jd j,tj- |  |j!jd j.tj/ | 0|j!jd j1| | $t|j!j2d | 3|j!j2}|j4}||\}}| 7| | j8d|jddd
}| | |  }| j|tj9|jdd | $|j!j:d |  |j!j|j!jd@  |  |j!j;d | <t|j!j=|j!j: | j||	|
dd}| j8d|jdd|d}| | |  }| j|tj9|jdd | $|j!j:d |  |j!j|j!j |  |j!j;d | <t|j!j=|j!j: tj| j}|| |tj tj}tj}	d}
|||	 d}||\}}| | | j||	|
|d}| j5d||d}| | |  }| j|tj>|j|j?tj@B dd | $|j!j:d |  |j!jd |  |j!j;d |  |j!jAd |  |j!jBtjC |  |j!jDd |  t|j!jEd |  }| F| | G  d S )Nr   r   r   r   r   r   r   r   r  r    r$   rr   r  r   r   r   )Hr&   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/   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   r  r  rX   rY   r  rG   rH   rI   rJ   rK   rL   r   r   rk   r   r   r   r   r   r   r   r   rP   r   rQ   rR   r   r  r  r   r   r   r   r   r   rF   rS   rT   r  r   r   r    test_spnego_connect_reauth_alter  s2   












z0TestDCERPC_BIND.test_spnego_connect_reauth_alterc                 C   s  t  }t  }|g}t }d|_t||_tjj	
 |_
||_|g}|  }tj| j}|| |tj tj}tj}	d}
|||	 d}||\}}| | | j||	|
|d}| jd||d}| | |  }| |t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!jd j,tj- |  |j!jd j.tj/ | 0|j!jd j1| | $t|j!j2d | 3|j!j2}|j4}||\}}| | | j||	|
|d}| j5d|g|j!j%|d	}| | |  }| |tj6|j |  |j!j"|j!j" |  |j!j#|j!j# |  |j!j%|j!j% |  |j!j&d | )|j!j*d |  |j!j+d |  |j!jd j,tj- |  |j!jd j.tj/ | 0|j!jd j1| | $t|j!j2d | 3|j!j2}|j4}||\}}| 7| | j8d|jddd
}| | |  }| j|tj9|jdd | $|j!j:d |  |j!j|j!j |  |j!j;d | <t|j!j=|j!j: | j||	|
dd}| j8d|jdd|d}| | |  }| j|tj9|jdd | $|j!j:d |  |j!j|j!j |  |j!j;d | <t|j!j=|j!j: tj| j}|| |tj tj}tj}	d}
|||	 d}||\}}| | | j||	|
|d}| j>d|d}| | |  }| j|tj?|j|j@tjAB dd | $|j!j:d |  |j!jd |  |j!j;d |  |j!jBd |  |j!jCtjD |  |j!jEd |  t|j!jFd |  }| G| | H  d S )Nr   r   r   r   r   r   r   r   r  r    r$   r  r   r   r  r   )Ir&   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/   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   r  r  rX   rY   r  rG   rH   rI   rJ   rK   rL   r  r   r   rk   r   r   r   r   r   r   r   r  r   r   r    test_spnego_connect_reauth_auth3  s0   












z0TestDCERPC_BIND.test_spnego_connect_reauth_auth3c                 C   s  t  }|g}t }d|_t||_tjj	 |_	||_
|  }tj| j}|| |tj tj}tj}d}||| d}	||	\}
}| |
 | j||||d}| jd|g|d}| | |  }| |t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 jd j+tj, | |j jd j-tj. | /|j jd j0| | #t|j j1d | 2|j j1}|j3}	||	\}
}| |
 | j|tj4||d}| j5d|g|j j$|d	}| | |  }| j|tj6|j|j7tj8B dd
 | #|j j9d | |j jd | |j j:d | |j j;d | |j j<tj= | |j j>d | t|j j?d |  }| @| | A  d S Nr   r   r   r   r   r   r   r   r  r   )Br&   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/   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   r  r  r   rX   r   r   rk   rI   rJ   r   r   r   r   r   r   r   )r   rP   rQ   rR   r  r  r   r   r   r   r   r   rF   rS   rT   r  r   r   r   test_spnego_change_auth_level,  s    






z-TestDCERPC_BIND.test_spnego_change_auth_levelc                 C   s  t  }|g}t }d|_t||_tjj	 |_	||_
t }d|_t||_tjj	 |_	||_
|  }tj| j}|| |tj tj}tj}d}	||| d}
||
\}}| | | j|||	|d}| jd|g|d}| | |  }| |t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!jd j,tj- |  |j!jd j.tj/ | 0|j!jd j1| | $t|j!j2d | 3|j!j2}|j4}
||
\}}| | | j|tj5|	|d}| j6d|g|j!j%|d	}| | |  }| j|tj7|j|j8tj9B dd
 | $|j!j:d |  |j!jd |  |j!j;d |  |j!j<d |  |j!j=tj> |  |j!j?d |  t|j!j@d |  }| A| | B  d S r  )Cr&   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/   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   r  r  r   rX   r   r   rk   rI   rJ   r   r   r   r   r   r   r   )r   rP   rQ   rR   r   r  r  r   r   r   r   r   r   rF   rS   rT   r  r   r   r   test_spnego_change_abstractz  s    







z+TestDCERPC_BIND.test_spnego_change_abstractc                 C   s  t  }t  }|g}t }d|_t||_tjj	
 |_
||_||g}t }d|_t||_tjj	
 |_
||_|  }tj| j}|| |tj tj}	tj}
d}||	|
 d}||\}}| | | j|	|
||d}| jd|g|d}| | |  }| |t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!jd j,tj- |  |j!jd j.tj/ | 0|j!jd j1| | $t|j!j2d | 3|j!j2}|j4}||\}}| | | j|	tj5||d}| j6d|g|j!j%|d	}| | |  }| j|tj7|j|j8tj9B dd
 | $|j!j:d |  |j!jd |  |j!j;d |  |j!j<d |  |j!j=tj> |  |j!j?d |  t|j!j@d |  }| A| | B  d S r  )Cr&   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/   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   r  r  r   rX   r   r   rk   rI   rJ   r   r   r   r   r   r   r   r   rP   r   rQ   rR   r   r   r  r  r   r   r   r   r   r   rF   rS   rT   r  r   r   r   test_spnego_change_transfer  s    







z+TestDCERPC_BIND.test_spnego_change_transferc                 C   s  t  }t  }|g}t }d|_t||_tjj	
 |_
||_|  }tj| j}|| |tj tj}tj}d}	||| d}
||
\}}| | | j|||	|d}| jd|g|d}| | |  }| |t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!jd j,tj- |  |j!jd j.tj/ | 0|j!jd j1| | $t|j!j2d | 3|j!j2}|j4}
||
\}}| | | jtj5||	|d}| j6d|g|j!j%|d	}| | |  }| j|tj7|j|j8tj9B dd
 | $|j!j:d |  |j!jd |  |j!j;d |  |j!j<d |  |j!j=tj> |  |j!j?d |  t|j!j@d |  }| A| | B  d S r  )Cr&   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/   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   r  r  DCERPC_AUTH_TYPE_KRB5rX   r   r   rk   rI   rJ   r   r   r  r   r   r   r   )r   rP   r   rQ   rR   r  r  r   r   r   r   r   r   rF   rS   rT   r  r   r   r   test_spnego_change_auth_type1%  s    






z-TestDCERPC_BIND.test_spnego_change_auth_type1c                 C   s  t  }t  }|g}t }d|_t||_tjj	
 |_
||_||g}t }d|_t||_tjj	
 |_
||_|  }tj| j}|| |tj tj}	tj}
d}||	|
 d}||\}}| | | j|	|
||d}| jd|g|d}| | |  }| |t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!jd j,tj- |  |j!jd j.tj/ | 0|j!jd j1| | $t|j!j2d | 3|j!j2}|j4}||\}}| | | jtj5|
||d}| j6d|g|j!j%|d	}| | |  }| j|tj7|j|j8tj9B dd
 | $|j!j:d |  |j!jd |  |j!j;d |  |j!j<d |  |j!j=tj> |  |j!j?d |  t|j!j@d |  }| A| | B  d S r  )Cr&   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/   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   r  r  r  rX   r   r   rk   rI   rJ   r   r   r   r   r   r   r   r  r   r   r   test_spnego_change_auth_type2u  s    







z-TestDCERPC_BIND.test_spnego_change_auth_type2c                 C   s  t  }t  }|g}t }d|_t||_tjj	
 |_
||_||g}t }d|_t||_tjj	
 |_
||_|  }tj| j}|| |tj tj}	tj}
d}||	|
 d}||\}}| | | j|	|
||d}| jd|g|d}| | |  }| |t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!jd j,tj- |  |j!jd j.tj/ | 0|j!jd j1| | $t|j!j2d | 3|j!j2}|j4}||\}}| | | jtj5|
||d}| j6d|g|j!j%|d	}| | |  }| j|tj7|j|j8tj9B dd
 | $|j!j:d |  |j!jd |  |j!j;d |  |j!j<d |  |j!j=tj> |  |j!j?d |  t|j!j@d |  }| A| | B  d S r  )Cr&   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/   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   r  r  r   rX   r   r   rk   rI   rJ   r   r   r   r   r   r   r   r  r   r   r   test_spnego_change_auth_type3  s    







z-TestDCERPC_BIND.test_spnego_change_auth_type3c                 C   s   t  }|g}t }d|_t||_tjj	 |_	||_
|g}|  }tj| j}|| |tj tj}tj}d}	||| d}
||
\}}| | | j|||	|d}| jd||d}tj|}t|}|tj8 }|tj8 }|t|8 }| j|||	||d}| jd||d}| | |  }|  |t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$jd j/tj0 | #|j$jd j1tj2 | 3|j$jd j4| | 't|j$j5d | 6|j$j5}|j7}
||
\}}| | | j|||	|d}| j8d||j$j(|d
}tj|}t|}|tj8 }|tj8 }|t|8 }| j|||	||d}| j8d||j$j(|d
}| | |  }|  |tj9|j" | #|j$j%|j$j% | #|j$j&|j$j& | #|j$j(|j$j( | #|j$j)d | ,|j$j-d | #|j$j.d | #|j$jd j/tj0 | #|j$jd j1tj2 | 3|j$jd j4| | 't|j$j5d | 6|j$j5}|j7}
||
\}}| :| | j;d|jddd}| | |  }| j |tj<|j"dd | '|j$j=d | #|j$j|j$j | #|j$j>d | ?t|j$j@|j$j= | j|||	dd}| j;d|jdd|d}| | |  }| j |tj<|j"dd | '|j$j=d | #|j$j|j$j | #|j$j>d | ?t|j$j@|j$j= | Ad | B  d S )Nr   r   r   r   r   r   r   r   r   auth_pad_lengthr   r   r   r  r    r$   r  r   r   
disconnect)Cr&   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>  ndr_packry  r   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   r  r  rX   rY   r  rG   rH   rI   rJ   rK   rL   _disconnectr   r   rP   rQ   rR   r   r  r  r   r   r   r   r   r   rF   rS   req_pduauth_pad_okrT   r  r   r   r   test_spnego_auth_pad_ok#  s(   













z'TestDCERPC_BIND.test_spnego_auth_pad_okc                 C   s  t  }|g}t }d|_t||_tjj	 |_	||_
|g}|  }tj| j}|| |tj tj}tj}d}	||| d}
||
\}}| | | j|||	|d}| jd||d}tj|}t|}|tj8 }|tj8 }|t|8 }|d }| j|||	||d}| jd||d}| | |  }| j |tj!|j"dd | #|j$j%tj& | #|j$j'd | #|j$j(d j)|j) | #|j$j(d j*|j* | #t|j$j+d	 | #|j$j+d
 |  }| ,| | -  d S )Nr   r   r   r   r   r   r  r$   r   s      ).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  ry  r   r0   r1   r2   r   r   r4   r5   r   r   r   r   r   r   r   r   r   )r   rP   rQ   rR   r   r  r  r   r   r   r   r   r   rF   rS   r  r  auth_pad_badrT   r   r   r   test_spnego_auth_pad_fail_bind  sx    







z.TestDCERPC_BIND.test_spnego_auth_pad_fail_bindc                 C   s  t  }|g}t }d|_t||_tjj	 |_	||_
|g}|  }tj| j}|| |tj tj}tj}d}	||| d}
||
\}}| | | j|||	|d}| jd||d}tj|}t|}|tj8 }|tj8 }|t|8 }| j|||	||d}| jd||d}| | |  }|  |t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$jd j/tj0 | #|j$jd j1tj2 | 3|j$jd j4| | 't|j$j5d | 6|j$j5}|j7}
||
\}}| | | j|||	|d}| j8d||j$j(|d
}tj|}t|}|tj8 }|tj8 }|t|8 }|d }| j|||	||d}| j8d||j$j(|d
}| | |  }| j |tj9|j"|j:tj;B dd | '|j$j<d | #|j$jd | #|j$j=d | #|j$j>d | #|j$j?tj@ | #|j$jAd | #t|j$jBd |  }| C| | D  d S )Nr   r   r   r   r   r   r  r   r   r  r   )Er&   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  ry  r   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   r  r  rX   r   r   rk   rI   rJ   r   r   r   r   r   r   r   r   rP   rQ   rR   r   r  r  r   r   r   r   r   r   rF   rS   r  r  rT   r  r  r   r   r   test_spnego_auth_pad_fail_alter  s    










z/TestDCERPC_BIND.test_spnego_auth_pad_fail_alterc                 C   s  t  }|g}t }d|_t||_tjj	 |_	||_
|g}|  }tj| j}|| |tj tj}tj}d}	||| d}
||
\}}| | | j|||	|d}| jd||d}tj|}t|}|tj8 }|tj8 }|t|8 }| j|||	||d}| jd||d}| | |  }|  |t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$jd j/tj0 | #|j$jd j1tj2 | 3|j$jd j4| | 't|j$j5d | 6|j$j5}|j7}
||
\}}| 8| d}| j|||	||d}| j9d|d
}| | | jdd}| :| | ;  | j<d|jddd}| | |  }| j |tj=|j"dd | '|j$j>d | #|j$j|j$j | #|j$j?d | @t|j$jA|j$j> | j|||	dd}| j<d|jdd|d}| | |  }| j |tj=|j"dd | '|j$j>d | #|j$j|j$j | #|j$j?d | @t|j$jA|j$j> | Bd | C  d S )Nr   r   r   r   r   r   r  r   r   r  r4  r5  r    r$   r  r   r   r   )Dr&   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  ry  r   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   r  r  r  r  r   r?  rG   rH   rI   rJ   rK   rL   r  r   r  r   r   r   test_ntlmssp_auth_pad_oki  s    











z(TestDCERPC_BIND.test_ntlmssp_auth_pad_okc                 C   s6  t  }|g}t }d|_t||_tjj	 |_	||_
|g}|  }tj| j}|| |tj tj}tj}d}	||| d}
||
\}}| | | j|||	|d}| jd||d}tj|}t|}|tj8 }|tj8 }|t|8 }| j|||	||d}| jd||d}| | |  }|  |t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$jd j/tj0 | #|j$jd j1tj2 | 3|j$jd j4| | 't|j$j5d | 6|j$j5}|j7}
||
\}}| 8| d}| j|||	||d}| j9d|d
}| | |  }| j |tj:|j"|j;tj<B dd | '|j$j=d | #|j$jd | #|j$j>d | #|j$j?d | #|j$j@tjA | #|j$jBd | #t|j$jCd |  }| D| | E  d S )Nr   r   r   r   r   r   r  r   r   r  r   )Fr&   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  ry  r   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   r  r  r  r  r   r   rk   rI   rJ   r   r   Z#DCERPC_NCA_S_FAULT_REMOTE_NO_MEMORYr   r   r   r   r	  r   r   r    test_ntlmssp_auth_pad_fail_auth3  s    








z0TestDCERPC_BIND.test_ntlmssp_auth_pad_fail_auth3c                 C   sJ   |   }| j||||||d}	|	d u r*d S | j||	|d}
|
d u rFd S |	S )N)r   r   r   r   r   r,  )r-  r   alter_fault)r8  r   r9  )r   r   r   r   r-  r   r,  r  r   r   r  r   r   r   _test_auth_bind_auth_level@  s"    z*TestDCERPC_BIND._test_auth_bind_auth_levelc                 C   s   |   }| jtj|||dS )N)r   r   r   rB   )r8  r   r(   r  )r   r   rB   r  r   r   r   _test_spnego_level_bind_nakT  s    z+TestDCERPC_BIND._test_spnego_level_bind_nakr   c                 C   s^  t  }|g}t }d|_t||_tjj	 |_	||_
tj}	d}
| j|	||
|||d}|d u rfd S | | |d }| | d}t|tj }d}|dkrtj| }|d| 7 }|tjkr|t|}nd}d| }| j|	|||
|d	}| jd
|jd||d}|tjkrtj|}tj}t||j }|tj }||| }|d| }|||}| j|	|||
|d	}| jd
|jd||d}| | |  }| j|tj|j|j|B dd | |j j!d | "|j j|j | "|j j#d | "|j j$d | "|j j%| | "|j j&d | "t|j j'd |tj(@ r@d S |  }| )| | *  d S )N  r   )r   r   r   r-  r   r  r                       r   rv  r0  r   r   r  r   r   r   r   r   r   )+r&   r'   r(   r   r!   r)   r*   r+   r,   r-   r.   r  r  assertIsNotNoneDCERPC_AUTH_PAD_ALIGNMENTr   sig_sizer   rG   r>  r  ry  r   r   sign_packetr0   r1   r2   r   r   r   r8   r5   rI   r4   rJ   r   r   r   r   rk   r   r   )r   r   r   r  request_faultresponse_fault_flagsrP   rQ   rR   r   r   r   r  stub_binr  r  r  zero_sigrF   rS   req_blobofs_stubofs_sigofs_trailerreq_data	req_wholesigrT   r   r   r   _test_spnego_level_bindZ  s    







z'TestDCERPC_BIND._test_spnego_level_bindc                 C   s   | j tjtjdS r   )r  r(   r   r   r   r   r   r   test_spnego_none_bind  s    z%TestDCERPC_BIND.test_spnego_none_bindc                 C   s   | j tjtjdS r   )r  r(   r   'DCERPC_BIND_NAK_REASON_INVALID_CHECKSUMr   r   r   r   test_spnego_call_bind  s    z%TestDCERPC_BIND.test_spnego_call_bindc                 C   s   | j dtjdS r   r  r(   r   r   r   r   r   test_spnego_0_bind  s    z"TestDCERPC_BIND.test_spnego_0_bindc                 C   s   | j dtjdS r   r&  r   r   r   r   test_spnego_7_bind  s    z"TestDCERPC_BIND.test_spnego_7_bindc                 C   s   | j dtjdS r   r&  r   r   r   r   test_spnego_255_bind  s    z$TestDCERPC_BIND.test_spnego_255_bindc                 C   s   | j tjtjdS N)r   r   )r"  r(   r   r   r   r   r   test_spnego_connect_bind_none  s    z-TestDCERPC_BIND.test_spnego_connect_bind_nonec                 C   s   | j tjtjdS r*  )r"  r(   r   r   r   r   r   r   test_spnego_connect_bind_sign  s    z-TestDCERPC_BIND.test_spnego_connect_bind_signc                 C   s   | j tjtjdS r*  )r"  r(   r   r   r   r   r   r   test_spnego_connect_bind_seal  s    z-TestDCERPC_BIND.test_spnego_connect_bind_sealc                 C   s   | j tjtjtjdS N)r   r   r  )r"  r(   r   r   r  r   r   r   r   test_spnego_packet_bind_none  s    z,TestDCERPC_BIND.test_spnego_packet_bind_nonec                 C   s   | j tjtjtjtjdS N)r   r   r  r  )r"  r(   r   r   r   rk   r   r   r   r   test_spnego_packet_bind_sign  s
    z,TestDCERPC_BIND.test_spnego_packet_bind_signc                 C   s   | j tjtjtjtjdS r0  )r"  r(   r   r   r   rk   r   r   r   r   test_spnego_packet_bind_seal  s
    z,TestDCERPC_BIND.test_spnego_packet_bind_sealc                 C   s   | j tjtjtjdS r.  )r"  r(   r   r   r  r   r   r   r   test_spnego_integrity_bind_none  s    z/TestDCERPC_BIND.test_spnego_integrity_bind_nonec                 C   s   | j tjtjtjtjdS r0  )r"  r(   r   r   rk   r   r   r   r   test_spnego_integrity_bind_sign  s
    z/TestDCERPC_BIND.test_spnego_integrity_bind_signc                 C   s   | j tjtjtjtjdS r0  )r"  r(   r   r   r   rk   r   r   r   r   test_spnego_integrity_bind_seal  s
    z/TestDCERPC_BIND.test_spnego_integrity_bind_sealc                 C   s   | j tjtjtjdS N)r   r   r  )r"  r(   r   r   r  r   r   r   r   test_spnego_privacy_bind_none  s    z-TestDCERPC_BIND.test_spnego_privacy_bind_nonec                 C   s   | j tjtjtjdS r6  )r"  r(   r   r   r  r   r   r   r   test_spnego_privacy_bind_sign  s    z-TestDCERPC_BIND.test_spnego_privacy_bind_signc                 C   s   | j tjtjdS r*  )r"  r(   r   r   r   r   r   test_spnego_privacy_bind_seal
  s    z-TestDCERPC_BIND.test_spnego_privacy_bind_sealc                  C   s  t  }|g}t }d|_t||_tjj	 |_	||_
|g}d}| j|||||d}	| |	 |	d }
| |
 d}t|tj }d}|dkrtj| }|d| 7 }|
t|}d| }| j|||||d}| jd	|jd||d
}tj|}tj}t||j }|tj }||| }|d| }|
||}| j|||||d}| jd	|jd||d
}| | |  \}}| j|tj|j|d | |jjd | |jj|jjd@  | |jj d | !t|jj"|jj | |j| tj}|j#|j }|tj }||| }|d| }||d  }||d  }| $|}| |j%| | |j&| | |j'd | |j(| | |j)| |
*||| d}t|tj }d}|dkrtj| }|d| 7 }|
t|}d| }| j|||||d}| jd|jd||d
}tj|}tj}t||j }|tj }||| }|d| }|
||}| j|||||d}| jd|jd||d
}| | | + }| j|tj,|j|j-tj.B dd | |jjd | |jj|j | |jj d | |jj/d | |jj0tj1 | |jj2d | t|jj3d d}t|tj }d}|dkrVtj| }|d| 7 }|
t|}d| }| j|||||d}| jd|jd||d
}tj|}tj}t||j }|tj }||| }|d| }|
||}| j|||||d}| jd|jd||d
}| | |  \}}| j|tj|j|d | |jjd | |jj|jjd@  | |jj d | !t|jj"|jj | |j| tj}|j#|j }|tj }||| }|d| }||d  }||d  }| $|}| |j%| | |j&| | |j4d | |j'd | |j(| | |j)| |
*||| d}t|tj }d}|dkrtj| }|d| 7 }|
t|}d| }| j|||||d}| jd|jd	||d
}tj|}tj}t||j }|tj }||| }|d| }|
||}| j|||||d}| jd|jd	||d
}| | |  \}}| j|tj|j|d | |jjd | |jj|jjd@  | |jj d | !t|jj"|jj | |j| tj}|j#|j }|tj }||| }|d| }||d  }||d  }| $|}| |j%| | |j&| | |j4d | |j'd | |j(| | |j)| |
*||| d S )Nr  r   )r   r   r   r,  r-  r   r   r   rv  r  r   r   r$   rr   r  r   r   r   s           r   r      r  )5r&   r'   r(   r   r!   r)   r*   r+   r,   r-   r.   r  r  r  r  r   rG   r>  r  ry  r   r   r  r0   Zrecv_pdu_rawr2   rH   r   r8   r5   rI   r4   rJ   rK   rL   Zfrag_lengthr  r   r   Zauth_reservedr   r  Zcheck_packetr1   r   r   rk   r   r   r   r   r   r  ) r   r   r   hdr_signrP   rQ   rR   r   r   r   r  r  r  r  r  r  rF   rS   r  r  r  r  r  r   r!  rT   Zrep_blobZrep_dataZ	rep_wholeZrep_sigZrep_auth_info_blobZrep_auth_infor   r   r   %_test_auth_signing_auth_level_request  s   























z5TestDCERPC_BIND._test_auth_signing_auth_level_requestc                 C   s   |  tjtjS r   r<  r(   r  r   r   r   r   r   test_spnego_signing_packet  s    z*TestDCERPC_BIND.test_spnego_signing_packetc                 C   s   | j tjtjddS NT)r;  r=  r   r   r   r   test_spnego_hdr_signing_packet!  s    z.TestDCERPC_BIND.test_spnego_hdr_signing_packetc                 C   s   |  tjtjS r   r<  r(   r  r   r   r   r   r   test_spnego_signing_integrity(  s    z-TestDCERPC_BIND.test_spnego_signing_integrityc                 C   s   | j tjtjddS r?  rA  r   r   r   r   !test_spnego_hdr_signing_integrity,  s    z1TestDCERPC_BIND.test_spnego_hdr_signing_integrityc                 C   s   |  tjtjS r   r<  r(   r  r   r   r   r   r   test_ntlm_signing_packet1  s    z(TestDCERPC_BIND.test_ntlm_signing_packetc                 C   s   | j tjtjddS r?  rD  r   r   r   r   test_ntlm_hdr_signing_packet7  s    z,TestDCERPC_BIND.test_ntlm_hdr_signing_packetc                 C   s   |  tjtjS r   r<  r(   r  r   r   r   r   r   test_ntlm_signing_integrity>  s    z+TestDCERPC_BIND.test_ntlm_signing_integrityc                 C   s   | j tjtjddS r?  rG  r   r   r   r   test_ntlm_hdr_signing_integrityB  s    z/TestDCERPC_BIND.test_ntlm_hdr_signing_integrityc                 C   s   |  tjtjS r   r<  r(   r  r   r   r   r   r   test_krb5_signing_packetG  s    z(TestDCERPC_BIND.test_krb5_signing_packetc                 C   s   | j tjtjddS r?  rJ  r   r   r   r   test_krb5_hdr_signing_packetM  s    z,TestDCERPC_BIND.test_krb5_hdr_signing_packetc                 C   s   |  tjtjS r   r<  r(   r  r   r   r   r   r   test_krb5_signing_integrityT  s    z+TestDCERPC_BIND.test_krb5_signing_integrityc                 C   s   | j tjtjddS r?  rM  r   r   r   r   test_krb5_hdr_signing_integrityX  s    z/TestDCERPC_BIND.test_krb5_hdr_signing_integrityc                 C   sX   t jj }t }|g}t jj }d|_t||_	||_||_
| j|dtjd}d S )Nr   r-  r9   Z
nak_reason)r+   r(   r,   r-   r&   r'   r   r!   r)   r*   r.   r9  r   )r   rH  rI  rQ   r-  r  r   r   r   test_assoc_group_fail1]  s    
z&TestDCERPC_BIND.test_assoc_group_fail1c                 C   s   t jj }t }|g}t jj }d|_t||_	||_||_
| j|d}| d |   td |   | j||jjtjd}d S )Nr   )r-  test_assoc_group_fail2g      ?rP  )r+   r(   r,   r-   r&   r'   r   r!   r)   r*   r.   r9  r  r   timesleepZconnectr5   r9   r   )r   rH  rI  rQ   r-  r  rN  r   r   r   rR  l  s"    


z&TestDCERPC_BIND.test_assoc_group_fail2c                 C   sj   t jj }t }| j||ddd\}}|  }|j||ddd\}}| |j	j
|j	j
 |d d S )Nr   Tr!   r  r   End of Test)r+   r(   r,   r-   r&   r'   r  second_connectionr8   r5   r9   r  )r   rH  rI  rR   rM  conn2r   rN  r   r   r   test_assoc_group_diff1  s    


z&TestDCERPC_BIND.test_assoc_group_diff1c           	      C   s   t jj }t }| j||ddd\}}|  }|j|||jj	ddd\}}t jj
 }| jd||d |jd||d |jd||t jjjt jjjB t jjjB tjdd | jd||d |jd||d |d	 d S )
Nr   TrU  r   r9   r!   r  r   r-  r7  r   r   r-  r7  Zfault_pfc_flagsfault_statusZfault_context_idrV  )r+   r(   r,   r-   r&   r'   r  rW  r5   r9   r:  rA  r^   r_   rk   r   r  	r   rH  rI  rR   rM  rX  r   rN  r:  r   r   r   test_assoc_group_ok1  s4    



z$TestDCERPC_BIND.test_assoc_group_ok1c           	      C   s   t jj }t }| jdd|  d | j||ddd\}}| 	 }|j|||j
jddd\}}t jj }| jd||d	 |jd||d	 |jd||t jjjt jjjB t jjjB tjd
d | jd||d	 |jd||d	 |d d S )N\pipe\lsarpc\pipe\lsassZprimary_addressr;   Ztransport_credsr   TrU  r   rZ  r[  r   r\  rV  )r+   r(   r,   r-   r&   r'   reconnect_smb_piper8  r  rW  r5   r9   r:  rA  r^   r_   rk   r   r  r^  r   r   r   test_assoc_group_ok2  s<    



z$TestDCERPC_BIND.test_assoc_group_ok2c                 C   sL  t jj }t }| j||ddd\}}| jdd|  d}|g}t jj	 }d|_
t||_||_||_|j||jjtjd}| }	| |	 |  |  }
|
j|||jjd	dd
\}}t jj }| jd||d |
jd||d |
jd||t jjjt jjjB t jjjB tjdd | jd||d |
jd||d |
d d S )Nr   TrU  r`  ra  rb     rP  r   rZ  r[  r   r\  rV  )r+   r(   r,   r-   r&   r'   r  rW  r8  r   r!   r)   r*   r.   r9  r5   r9   r   r1   r   r   r:  rA  r^   r_   rk   r   r  )r   rH  rI  rR   rM  ZconnFZ	tsfF_listZctxFr  rT   rX  r   rN  r:  r   r   r   test_assoc_group_fail3  sT    





z&TestDCERPC_BIND.test_assoc_group_fail3c                 C   sJ  t j}t j}d}|  }tj j }t }|g}tj j 	 }	d|	_
t||	_||	_||	_| j||||dd}
| jd|	|
d}tj j }| jd|	||
d | jd|	t jt jB t jB |jjdd	}| |
d
  |rd|
d
< |
d tj d }nt j}| jd|	||
|d |d ur4|  }| | |   d S | jd|	||
d d S )Nr   Fr+  r   r-  r   r   r   r-  r7  r   r   Tr   r-  r   r9   r/  r,  r   r   r   r-  r7  r   r]  r   )r(   r  r   r8  r+   r,   r-   r&   r'   r   r!   r)   r*   r.   r   r9  r:  rA  r^   r_   rd   r5   r9   r   r  r   FEATURE_SIGN_PKT_HEADERr  r1   r   r   )r   
do_upgrader   r   r   r   rH  rI  rQ   r-  r   r  r:  rN  r]  rT   r   r   r   _test_krb5_hdr_sign_delayed1  sl    





z,TestDCERPC_BIND._test_krb5_hdr_sign_delayed1c                 C   s   | j ddS NTrl  rm  r   r   r   r   test_krb5_hdr_sign_delayed1_ok1=  s    z/TestDCERPC_BIND.test_krb5_hdr_sign_delayed1_ok1c                 C   s   | j ddS NFro  rp  r   r   r   r   !test_krb5_hdr_sign_delayed1_fail1@  s    z1TestDCERPC_BIND.test_krb5_hdr_sign_delayed1_fail1c                 C   s"  t j}t j}d}|  }tj j }t }|g}tj j 	 }	d|	_
t||	_||	_||	_| j||||dd}
| jd|	|
t jt jB t jB d}| |
d  |rd|
d< |
d tj d }nt j}tj j }| jd|	||
|d	 |d ur|  }| | |   d S | jd
|	||
d d S )Nr   Fr+  )r   r-  r   rB  r,  Tr   r   rj  r   rh  )r(   r  r   r8  r+   r,   r-   r&   r'   r   r!   r)   r*   r.   r   r9  r^   r_   rd   r   r  r   rk  r  r:  rA  r1   r   r   )r   rl  r   r   r   r   rH  rI  rQ   r-  r   r  r]  r:  rT   r   r   r   _test_krb5_hdr_sign_delayed2C  s^    
	



z,TestDCERPC_BIND._test_krb5_hdr_sign_delayed2c                 C   s   | j ddS rn  rt  r   r   r   r   test_krb5_hdr_sign_delayed2_ok1|  s    z/TestDCERPC_BIND.test_krb5_hdr_sign_delayed2_ok1c                 C   s   | j ddS rr  ru  r   r   r   r   !test_krb5_hdr_sign_delayed2_fail1  s    z1TestDCERPC_BIND.test_krb5_hdr_sign_delayed2_fail1c                 C   s  t j}t j}d}|  }tj j }t }|g}tj j 	 }d|_
t||_||_||_| j||||dd}	| jd||	t jt jB t jB dd}
tj j }| jd|||	d | |	d  d|	d< |	d	 tj t j}| jd
|||	|d |  }| | |   d S )Nr   Fr+  T)r   r-  r   rB  Z	use_auth3r   rh  r,  r   r   rj  )r(   r  r   r8  r+   r,   r-   r&   r'   r   r!   r)   r*   r.   r   r9  r^   r_   rd   r:  rA  r   r  r   rk  r  r1   r   r   )r   r   r   r   r   rH  rI  rQ   r-  r   r  r:  r]  rT   r   r   r   !test_krb5_hdr_sign_delayed3_fail1  sX    
	


z1TestDCERPC_BIND.test_krb5_hdr_sign_delayed3_fail1c                 C   s  |   }d}d}tj}tj}d}	|  }
|
 }|
 }tj}tj}d}tjj	 }t
 }| jdd|d |   |g}tjj }d|_t||_||_	||_| j||||	dd	}| j|
|||dd	}tjj }| j|_d |_t
d |_| jd
||d}| jd||d | |jd
 t | |j | | |j!j"| | jd|||d | |jd
 t | |j | | |j!j"| | jd|||j#j$dd}| jd||d | |jd
 t | |j | | |j!j"| | jd|||d | |jd
 t | |j | | |j!j"| | jd|||d | |jd
 t | |j | | |j!j"| | jd||d | |jd
 t | |j | | |j!j"| d S )NANONYMOUS LOGONNT AUTHORITYr   r   r`  ra  rb  Fr+  r   rg  r[  rh  r   Tr.  r   r   r:  r   %r  r(   r  r   r8  get_username
get_domainr+   lsar-   r&   r'   rc  r?  r   r!   r)   r*   r.   r   GetUserNamer  in_system_namein_account_namendr_pointerin_authority_namer9  rA  r4   r@   r   assertEqualsStrLowerout_account_nameout_authority_namevaluer5   r9   )r   	smb_credsaccount_name0authority_name0creds1account_name1authority_name1
auth_type1rD  rE  creds2account_name2authority_name2
auth_type2rF  rG  rH  rI  rQ   rR   rJ  rK  get_user_namerM  rN  r   r   r   _test_lsa_multi_auth_connect1  s    



z-TestDCERPC_BIND._test_lsa_multi_auth_connect1c                 C   s&   |   }| }| }| |||S r   )r8  r|  r}  r  r   Zsmb_auth_credsr  r  r   r   r   test_lsa_multi_auth_connect1u   s    z-TestDCERPC_BIND.test_lsa_multi_auth_connect1uc                 C   s   |   }d}d}| |||S Nry  rz  )r  r  r  r   r   r   test_lsa_multi_auth_connect1a(  s    z-TestDCERPC_BIND.test_lsa_multi_auth_connect1ac                 C   s  |   }d}d}tj}tj}d}	|  }
|
 }|
 }tj}tj}d}tjj	 }t
 }| jdd|d |   |g}tjj }d|_t||_||_	||_| j||||	dd	}| j|
|||dd	}tjj }| j|_d |_t
d |_| jd
|d}| jd||d | |jd
 t | |j | | |j!j"| | jd|||j#j$dd}| jd||d | |jd
 t | |j | | |j!j"| | jd|||d | |jd
 t | |j | | |j!j"| | jd|||j#j$dd}| jd||d | |jd
 t | |j | | |j!j"| | jd|||d | |jd
 t | |j | | |j!j"| | jd|||d | |jd
 t | |j | | |j!j"| | jd||d | |jd
 t | |j | | |j!j"| d S )Nry  rz  r   r   r`  ra  rb  Fr+  r   r   r-  r[  Tr.  r   r   rh  r   r:  r   rg   	   r{  r   r  r  r  r  r  r  r  rD  rE  r  r  r  r  rF  rG  rH  rI  rQ   rR   rJ  rK  r  rL  rM  rN  r   r   r   _test_lsa_multi_auth_connect20  s    



z-TestDCERPC_BIND._test_lsa_multi_auth_connect2c                 C   s&   |   }| }| }| |||S r   )r8  r|  r}  r  r  r   r   r   test_lsa_multi_auth_connect2u  s    z-TestDCERPC_BIND.test_lsa_multi_auth_connect2uc                 C   s   |   }d}d}| |||S r  )r  r  r  r   r   r   test_lsa_multi_auth_connect2a  s    z-TestDCERPC_BIND.test_lsa_multi_auth_connect2ac                 C   sx  |   }d}d}tj}tj}d}	|  }
|
 }|
 }tj}tj}d}tjj	 }t
 }| jdd|d |   |g}tjj }d|_t||_||_	||_| j||||	dd	}| j|
|||dd	}tjj }| j|_d |_t
d |_| jd
|d}| jd||d | |jd
 t | |j | | |j!j"| | jd|||j#j$dd}| jd||d | |jd
 t | |j | | |j!j"| | jd||d | |jd
 t | |j | | |j!j"| | jd|||d | |jd
 t | |j | | |j!j"| | jd||d | |jd
 t | |j | | |j!j"| | jd|||j#j$dd}| jd||d | |jd
 t | |j | | |j!j"| | jd|||d | |jd
 t | |j | | |j!j"| | jd|||d | |jd
 t | |j | | |j!j"| | jd||d | |jd
 t | |j | | |j!j"| d S )Nry  rz  r   r   r`  ra  rb  Fr+  r   r  r[  Tr.  r   r   r   rh  r:  r   rg   r  
      r{  r  r   r   r   _test_lsa_multi_auth_connect3  s    



z-TestDCERPC_BIND._test_lsa_multi_auth_connect3c                 C   s&   |   }| }| }| |||S r   )r8  r|  r}  r  r  r   r   r   test_lsa_multi_auth_connect3u4  s    z-TestDCERPC_BIND.test_lsa_multi_auth_connect3uc                 C   s   |   }d}d}| |||S r  )r  r  r  r   r   r   test_lsa_multi_auth_connect3a<  s    z-TestDCERPC_BIND.test_lsa_multi_auth_connect3ac           *      C   s  |   }d}d}tj}tj}d}	|  }
|
 }|
 }tj}tj}d}|   }d}d}tj}tj}d}|  }| }| }tj}tj}d}tjj	 }t
 }| jdd|d	 |   |g}tjj }d|_t||_||_	||_| j||||	d
d} | j|
|||d
d}!| j||||d
d}"| j||||d
d}#tjj }$| j|$_d |$_t
d |$_| jd|d}%| jd||$d | |$jd t | |$j | | |$j!j"| | jd|| |%j#j$dd}&| jd||$d | |$jd t | |$j | | |$j!j"| | jd||$d | |$jd t | |$j | | |$j!j"| | jd||!|%j#j$dd}'| jd||$d | |$jd t | |$j | | |$j!j"| | jd||$d | |$jd t | |$j | | |$j!j"| | jd||"|%j#j$dd}(| jd||$d | |$jd t | |$j | | |$j!j"| | jd||$d | |$jd t | |$j | | |$j!j"| | jd||#|%j#j$dd})| jd||$d | |$jd t | |$j | | |$j!j"| | jd||$d | |$jd t | |$j | | |$j!j"| | jd||$| d | |$jd t | |$j | | |$j!j"| | jd||$d | |$jd t | |$j | | |$j!j"| | jd||$| d | |$jd t | |$j | | |$j!j"| | jd||$|!d | |$jd t | |$j | | |$j!j"| | jd||$|"d | |$jd t | |$j | | |$j!j"| | jd ||$|#d | |$jd t | |$j | | |$j!j"| | jd!||$d | |$jd t | |$j | | |$j!j"| d S )"Nry  rz  r   r   r   r   r`  ra  rb  Fr+  r   r  r[  Tr.  r   r:  r   rg   r  r  r  r        rh  re  r0              r{  )*r   r  r  r  r  r  r  r  rD  rE  r  r  r  r  rF  rG  creds3account_name3authority_name3
auth_type3auth_level3auth_context_id3Zcreds4Zaccount_name4Zauthority_name4Z
auth_type4Zauth_level4Zauth_context_id4rH  rI  rQ   rR   rJ  rK  auth_context3Zauth_context4r  rL  rM  rN  ack3Zack4r   r   r   _test_lsa_multi_auth_connect4D  sJ   
			




z-TestDCERPC_BIND._test_lsa_multi_auth_connect4c                 C   s&   |   }| }| }| |||S r   )r8  r|  r}  r  r  r   r   r   test_lsa_multi_auth_connect4u  s    z-TestDCERPC_BIND.test_lsa_multi_auth_connect4uc                 C   s   |   }d}d}| |||S r  )r  r  r  r   r   r   test_lsa_multi_auth_connect4a  s    z-TestDCERPC_BIND.test_lsa_multi_auth_connect4ac           !      C   s8  |   }| }| }tj}tj}d}	|   }
|
 }|
 }tj}tj}d}|  }d}d}tj}tj}d}tjj	
 }t }| jdd|d |   |g}tjj }d|_t||_||_
||_| j||||	d	d
}| j|
|||d	d
}| j||||d	d
}tjj	 }| j|_d |_td |_| jd||d}| jd||d | |jd t |  |j!| |  |j"j#| | jd|||d | |jd t |  |j!| |  |j"j#| | jd||d | |jd t |  |j!| |  |j"j#| | jd|||j$j%dd}| jd||d | |jd t |  |j!| |  |j"j#| | jd|||d | |jd t |  |j!| |  |j"j#| | jd|||d | |jd t |  |j!| |  |j"j#| | jd||d | |jd t |  |j!| |  |j"j#| | jd|||j$j%dd} | jd||d | |jd t |  |j!| |  |j"j#| | jd||d | |jd t |  |j!| |  |j"j#| | jd|||d | |jd t |  |j!| |  |j"j#| | jd||d | |jd t |  |j!| |  |j"j#| d S )Nr   r   ry  rz  r   r`  ra  rb  Fr+  r   rg  r[  rh  r   Tr.  r   r:  r   rg   r  r  r  r  r  )&r8  r|  r}  r(   r  r   r  r   r+   r~  r-   r&   r'   rc  r?  r   r!   r)   r*   r.   r   r  r  r  r  r  r  r9  rA  r4   r@   r   r  r  r  r  r5   r9   )!r   r  r  r  r  r  r  r  rD  rE  r  r  r  r  rF  rG  r  r  r  r  r  r  rH  rI  rQ   rR   rJ  rK  r  r  rM  rN  r  r   r   r   "_test_lsa_multi_auth_sign_connect1%  s    





z2TestDCERPC_BIND._test_lsa_multi_auth_sign_connect1c                 C   s&   |   }| }| }| |||S r   )r8  r|  r}  r  r  r   r   r   "test_lsa_multi_auth_sign_connect1u  s    z2TestDCERPC_BIND.test_lsa_multi_auth_sign_connect1uc                 C   s   |   }d}d}| |||S r  )r  r  r  r   r   r   "test_lsa_multi_auth_sign_connect1a  s    z2TestDCERPC_BIND.test_lsa_multi_auth_sign_connect1ac                 C   s  t j}t j}d}t j}d}|  }tj j }t	 }|g}	tj j 
 }
d|
_t|	|
_||
_|	|
_| j||||dd}| j||||dd}| jd|
d}| jd|
||jjdd}| jd|
||jjdd}tj j }| jd	|
|d
 | jd|
||d | jd|
||d | jd|
t jt jB t jB |jjdd}| |d  d|d< |d tj | jd|
|d
 | jd|
||d | jd|
||t jd |  }| | |   d S )Nr   r   Fr+  r  Tr.  r   r   r[  r   rh  r:  r   ri  r,  r   rg   r  r  rj  ) r(   r  r   r   r8  r+   r,   r-   r&   r'   r   r!   r)   r*   r.   r   r9  r5   r9   r:  rA  r^   r_   rd   r   r  r   rk  r  r1   r   r   )r   r   rD  rE  rF  rG  r   rH  rI  rQ   r-  rJ  rK  rL  rM  rN  r:  r  rT   r   r   r   %test_spnego_multiple_auth_hdr_signing  s    





z5TestDCERPC_BIND.test_spnego_multiple_auth_hdr_signingc              	   C   s,  |   }tjj }t }|g}tjj }d|_t	||_
||_||_| jd|d}tjj }tjjddd}|d urt|}	nd}	td|	d D ]t}
tj}tj}|
}| j||||d	d
}d }|
|	krtj}| j||||jj|dd}|d ur q| j||||d q|  }| | |   d S )Nr   r   r  ZMAX_NUM_AUTHT)Zallow_missingi  r   Fr+  )r   r-  r   r9   r  r/  rh  )r8  r+   r(   r,   r-   r&   r'   r   r!   r)   r*   r.   r9  is_server_listeningZtestsZenv_get_var_valueintranger  r   r   r   r5   r9   rA  r1   r   r   )r   r   rH  rI  rQ   r-  rL  r  Zmax_num_auth_strZmax_num_authir   r   r   r   r  r  rT   r   r   r   test_multiple_auth_limit  sZ    


z(TestDCERPC_BIND.test_multiple_auth_limit)r   FNNFFNNNNNN)r   NNFFNNNNNN)r   NNFFNNNNNN)NFFNNNNN)NNNNN)NNNN)FF)F)__name__
__module____qualname__r
   rU   rZ   r`   ra   rb   rc   re   rh   rj   rl   rn   rp   rs   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r(   Z(DCERPC_BIND_NAK_REASON_INVALID_AUTH_TYPEr   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*  rO  r  rR  rS  rU  rV  rW  rX  rY  rZ  r[  r\  r]  r^  r_  r`  ra  rb  rf  rg  ri  rj  rk  rn  ro  rp  rq  rr  rs  rt  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  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/  r1  r2  r3  r4  r5  r7  r8  r9  r<  r>  r@  rB  rC  rE  rF  rH  rI  rK  rL  rN  rO  rQ  rR  rY  r_  rd  rf  rm  rq  rs  rt  rv  rw  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  __classcell__r   r   r   r   r   -   sJ  +?			
	
				
					
62DW;>M  |$#(##
7
L            
 %          
!          
       
     
yI 
m?,"#115+0 qUV  NTWPWW @pwa\   .A95iv~ R Ir   __main__T)r;  osrS  pathinsertenvironZsamba.dcerpc.dcerpcr(   Zsamba.dcerpc.baser&   Zsamba.dcerpc.miscr   Zsamba.dcerpc.epmapperr+   Zsamba.dcerpc.mgmtZsamba.dcerpc.netlogonZsamba.dcerpc.lsar  r   Zsamba.tests.dcerpc.raw_testcaser   Zsamba.compatr   Zsamba.ntstatusr   r   r   r   r  Zunittestmainr   r   r   r   <module>   s   
                                                          d