o
    jwr                     @   s4  d dl mZ d dlmZ d dlmZmZmZ d dlm	Z	 d Z
dZdZdZdZd	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&d Z'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1d	Z2d
Z3dddd d!d"d#d$Z4d Z5dZ6dZ7d%d&d'd(Z8i d	d)dd*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHi dIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidji dkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddi ddddddddddddddddddddddddddddddddddi ddddddddddddddddddddddēddƓddȓddʓdd̓ddΓddГi ddғddԓdd֓ddؓddړddܓddޓddddddddddddddddddddi dddddddddddddd ddddddddd	d
ddddddddddi dddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6i d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXi dYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzi d{d|d}d~ddddddddddddddddddddddddddddddi ddddddddddddddddddddddddddddddddddi dddddÐdēdŐdƓdǐdȓdɐdʓdːd̓d͐dΓdϐdГdѐdғdӐdԓdՐd֓dאdؓdِdړdېdܓdݐdޓdߐdi dddddddddddddddddddddddddddddddd ddi ddddddd	d
dddddddddddddddddddddd d!d"d#d$i d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFi dGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhi didjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddi ddddddddddddddddddddddddddddddddddi dddddddddddddddddddddddÐdēdŐdƓdǐdȓdɐdʓdːd̓d͐dΓi dϐdГdѐdғdӐdԓdՐd֓dאdؓdِdړdېdܓdݐdޓdߐdddddddddddddddddi dddddddddddddddd ddddddddd	d
ddddddddi dddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4i d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcddZ9G dedf dfe:Z;G dgdh dheZ<G didj djeZ=G dkdl dleZ>G dmdn dneZ?G dodp dpe?Z@G dqdr dre?ZAG dsdt dteZBG dudv dve?ZCG dwdx dxeZDG dydz dzZEG d{d| d|e@ZFG d}d~ d~e	ZGG dd de	ZHG dd de	ZIdS (      )	Structure)uuidtup_to_bin)UCHARULONGUSHORT)	NDRSTRUCT                        	   
                                  @      D      reason_not_specifiedabstract_syntax_not_supported(proposed_transfer_syntaxes_not_supportedlocal_limit_exceededprotocol_version_not_specified"authentication_type_not_recognizedinvalid_checksum)r   r   r	   r
   r   r   r   
acceptanceuser_rejectionprovider_rejection)r   r   r	   rpc_s_access_deniedz"Authentication type not recognizedi  rpc_fault_cant_performi  rpc_x_invalid_boundi  z?rpc_s_cannot_support: The requested operation is not supported.i  rpc_x_bad_stub_datai nca_s_comm_failurei nca_s_op_rng_errori nca_s_unk_ifi nca_s_wrong_boot_timei	 nca_s_you_crashedi nca_s_proto_errori znca_s_out_args_too_big i nca_s_server_too_busyi nca_s_fault_string_too_longi znca_s_unsupported_type i  nca_s_fault_int_div_by_zeroi  znca_s_fault_addr_error i  nca_s_fault_fp_div_zeroi  nca_s_fault_fp_underflowi  nca_s_fault_fp_overflowi  nca_s_fault_invalid_tagi  znca_s_fault_invalid_bound i  nca_s_rpc_version_mismatchi	  znca_s_unspec_reject i
  nca_s_bad_actidi  nca_s_who_are_you_failedi  znca_s_manager_not_entered i  nca_s_fault_canceli  nca_s_fault_ill_insti  nca_s_fault_fp_errori  nca_s_fault_int_overflowi  nca_s_fault_unspeci  z nca_s_fault_remote_comm_failure i  znca_s_fault_pipe_empty i  nca_s_fault_pipe_closedi  znca_s_fault_pipe_order i  nca_s_fault_pipe_disciplinei  nca_s_fault_pipe_comm_errori  nca_s_fault_pipe_memoryi  znca_s_fault_context_mismatch i  znca_s_fault_remote_no_memory i  nca_s_invalid_pres_context_idi  nca_s_unsupported_authn_leveli  znca_s_invalid_checksum i   nca_s_invalid_crci!  nca_s_fault_user_definedi"  nca_s_fault_tx_open_failedi#  nca_s_fault_codeset_conv_errori$  znca_s_fault_object_not_found i%  nca_s_fault_no_client_stubi 	rpc_s_modirpc_s_op_rng_errorirpc_s_cant_create_socketirpc_s_cant_bind_socketirpc_s_not_in_callirpc_s_no_portirpc_s_wrong_boot_timeirpc_s_too_many_socketsirpc_s_illegal_registeri	rpc_s_cant_recvi
rpc_s_bad_pktirpc_s_unbound_handleirpc_s_addr_in_useirpc_s_in_args_too_bigirpc_s_string_too_longirpc_s_too_many_objectsirpc_s_binding_has_no_authirpc_s_unknown_authn_serviceirpc_s_no_memoryirpc_s_cant_nmallocirpc_s_call_faultedirpc_s_call_failedirpc_s_comm_failureirpc_s_rpcd_comm_failureirpc_s_illegal_family_rebindirpc_s_invalid_handleirpc_s_coding_errorirpc_s_object_not_foundirpc_s_cthread_not_foundirpc_s_invalid_bindingirpc_s_already_registeredirpc_s_endpoint_not_foundi rpc_s_invalid_rpc_protseqi!rpc_s_desc_not_registeredi"rpc_s_already_listeningi#rpc_s_no_protseqsi$rpc_s_no_protseqs_registeredi%rpc_s_no_bindingsi&rpc_s_max_descs_exceededi'rpc_s_no_interfacesi(rpc_s_invalid_timeouti)rpc_s_cant_inq_socketi*rpc_s_invalid_naf_idi+rpc_s_inval_net_addri,rpc_s_unknown_ifi-rpc_s_unsupported_typei.rpc_s_invalid_call_opti/rpc_s_no_faulti0rpc_s_cancel_timeouti1rpc_s_call_cancelledi2rpc_s_invalid_call_handlei3rpc_s_cannot_alloc_associ4rpc_s_cannot_connecti5rpc_s_connection_abortedi6rpc_s_connection_closedi7rpc_s_cannot_accepti8rpc_s_assoc_grp_not_foundi9rpc_s_stub_interface_errori:rpc_s_invalid_objecti;rpc_s_invalid_typei<rpc_s_invalid_if_opnumi=rpc_s_different_server_instancei>rpc_s_protocol_errori?rpc_s_cant_recvmsgi@rpc_s_invalid_string_bindingiArpc_s_connect_timed_outiBrpc_s_connect_rejectediCrpc_s_network_unreachableiDrpc_s_connect_no_resourcesiErpc_s_rem_network_shutdowniFrpc_s_too_many_rem_connectsiGrpc_s_no_rem_endpointiHrpc_s_rem_host_downiIrpc_s_host_unreachableiJrpc_s_access_control_info_inviKrpc_s_loc_connect_abortediLrpc_s_connect_closed_by_remiMrpc_s_rem_host_crashediNrpc_s_invalid_endpoint_formatiOrpc_s_unknown_status_codeiPrpc_s_unknown_mgr_typeiQrpc_s_assoc_creation_failediRrpc_s_assoc_grp_max_exceedediSrpc_s_assoc_grp_alloc_failediTrpc_s_sm_invalid_stateiUrpc_s_assoc_req_rejectediVrpc_s_assoc_shutdowniWrpc_s_tsyntaxes_unsupportediXrpc_s_context_id_not_foundiYrpc_s_cant_listen_socketiZrpc_s_no_addrsi[rpc_s_cant_getpeernamei\rpc_s_cant_get_if_idi]rpc_s_protseq_not_supportedi^rpc_s_call_orphanedi_rpc_s_who_are_you_failedi`rpc_s_unknown_rejectiarpc_s_type_already_registeredibrpc_s_stop_listening_disabledicrpc_s_invalid_argidrpc_s_not_supportedierpc_s_wrong_kind_of_bindingifrpc_s_authn_authz_mismatchigrpc_s_call_queuedihrpc_s_cannot_set_nodelayiirpc_s_not_rpc_towerijrpc_s_invalid_rpc_protidikrpc_s_invalid_rpc_floorilrpc_s_call_timeoutimrpc_s_mgmt_op_disallowedinrpc_s_manager_not_enterediorpc_s_calls_too_large_for_wk_epiprpc_s_server_too_busyiqrpc_s_prot_version_mismatchirrpc_s_rpc_prot_version_mismatchisrpc_s_ss_no_import_cursoritrpc_s_fault_addr_erroriurpc_s_fault_context_mismatchivrpc_s_fault_fp_div_by_zeroiwrpc_s_fault_fp_errorixrpc_s_fault_fp_overflowiyrpc_s_fault_fp_underflowizrpc_s_fault_ill_insti{rpc_s_fault_int_div_by_zeroi|rpc_s_fault_int_overflowi}rpc_s_fault_invalid_boundi~rpc_s_fault_invalid_tagirpc_s_fault_pipe_closedirpc_s_fault_pipe_comm_errorirpc_s_fault_pipe_disciplineirpc_s_fault_pipe_emptyirpc_s_fault_pipe_memoryirpc_s_fault_pipe_orderirpc_s_fault_remote_comm_failureirpc_s_fault_remote_no_memoryirpc_s_fault_unspeciuuid_s_bad_versioniuuid_s_socket_failureiuuid_s_getconf_failureiuuid_s_no_addressiuuid_s_overruniuuid_s_internal_erroriuuid_s_coding_erroriuuid_s_invalid_string_uuidiuuid_s_no_memoryirpc_s_no_more_entriesirpc_s_unknown_ns_errorirpc_s_name_service_unavailableirpc_s_incomplete_nameirpc_s_group_not_foundirpc_s_invalid_name_syntaxirpc_s_no_more_membersirpc_s_no_more_interfacesirpc_s_invalid_name_serviceirpc_s_no_name_mappingirpc_s_profile_not_foundirpc_s_not_foundirpc_s_no_updatesirpc_s_update_failedirpc_s_no_match_exportedirpc_s_entry_not_foundirpc_s_invalid_inquiry_contextirpc_s_interface_not_foundirpc_s_group_member_not_foundirpc_s_entry_already_existsirpc_s_nsinit_failureirpc_s_unsupported_name_syntaxirpc_s_no_more_elementsirpc_s_no_ns_permissionirpc_s_invalid_inquiry_typeirpc_s_profile_element_not_foundirpc_s_profile_element_replacedirpc_s_import_already_doneirpc_s_database_busyirpc_s_invalid_import_contextirpc_s_uuid_set_not_foundirpc_s_uuid_member_not_foundirpc_s_no_interfaces_exportedirpc_s_tower_set_not_foundirpc_s_tower_member_not_foundirpc_s_obj_uuid_not_foundirpc_s_no_more_bindingsirpc_s_invalid_priorityirpc_s_not_rpc_entryirpc_s_invalid_lookup_contextirpc_s_binding_vector_fullirpc_s_cycle_detectedirpc_s_nothing_to_exportirpc_s_nothing_to_unexportirpc_s_invalid_vers_optionirpc_s_no_rpc_datairpc_s_mbr_pickedirpc_s_not_all_objs_unexportedirpc_s_no_entry_namei rpc_s_priority_group_doneiàrpc_s_partial_resultsiĠrpc_s_no_env_setupiŠtwr_s_unknown_saiƠtwr_s_unknown_toweriǠtwr_s_not_implementediȠrpc_s_max_calls_too_smalliɠrpc_s_cthread_create_failediʠrpc_s_cthread_pool_existsiˠrpc_s_cthread_no_such_pooli̠rpc_s_cthread_invoke_disabledi͠ept_s_cant_perform_opiΠept_s_no_memoryiϠept_s_database_invalidiРept_s_cant_createiѠept_s_cant_accessiҠept_s_database_already_openiӠept_s_invalid_entryiԠept_s_update_failediՠept_s_invalid_contexti֠ept_s_not_registerediנept_s_server_unavailableiؠrpc_s_underspecified_namei٠rpc_s_invalid_ns_handleiڠrpc_s_unknown_errori۠rpc_s_ss_char_trans_open_failiܠrpc_s_ss_char_trans_short_fileiݠrpc_s_ss_context_damagediޠrpc_s_ss_in_null_contextiߠrpc_s_socket_failureirpc_s_unsupported_protect_levelirpc_s_invalid_checksumirpc_s_invalid_credentialsirpc_s_credentials_too_largeirpc_s_call_id_not_foundirpc_s_key_id_not_foundirpc_s_auth_bad_integrityirpc_s_auth_tkt_expiredirpc_s_auth_tkt_nyvirpc_s_auth_repeatirpc_s_auth_not_usirpc_s_auth_badmatchirpc_s_auth_skewirpc_s_auth_badaddrirpc_s_auth_badversionirpc_s_auth_msg_typeirpc_s_auth_modifiedirpc_s_auth_badorderirpc_s_auth_badkeyverirpc_s_auth_nokeyirpc_s_auth_mut_failirpc_s_auth_baddirectionirpc_s_auth_methodirpc_s_auth_badseqirpc_s_auth_inapp_cksumirpc_s_auth_field_toolongirpc_s_invalid_crcirpc_s_binding_incompleteirpc_s_key_func_not_allowedirpc_s_unknown_stub_rtl_if_versirpc_s_unknown_ifspec_versirpc_s_proto_unsupp_by_authi rpc_s_authn_challenge_malformedirpc_s_protect_level_mismatchirpc_s_no_mepvirpc_s_stub_protocol_errorirpc_s_class_version_mismatchirpc_s_helper_not_runningirpc_s_helper_short_readirpc_s_helper_catatonicirpc_s_helper_abortedi	rpc_s_not_in_kerneli
rpc_s_helper_wrong_userirpc_s_helper_overflowirpc_s_dg_need_way_authirpc_s_unsupported_auth_subtypeirpc_s_wrong_pickle_typeirpc_s_not_listeningirpc_s_ss_bad_bufferirpc_s_ss_bad_es_actionirpc_s_ss_wrong_es_versionirpc_s_fault_user_definedirpc_s_ss_incompatible_codesetsirpc_s_tx_not_in_transactionirpc_s_tx_open_failedirpc_s_partial_credentialsirpc_s_ss_invalid_codeset_tagirpc_s_mgmt_bad_typeirpc_s_ss_invalid_char_inputirpc_s_ss_short_conv_bufferirpc_s_ss_iconv_errorirpc_s_ss_no_compat_codesetirpc_s_ss_no_compat_charsetsidce_cs_c_oki dce_cs_c_unknowni!dce_cs_c_notfoundi"dce_cs_c_cannot_open_filei#dce_cs_c_cannot_read_filei$dce_cs_c_cannot_allocate_memoryi%rpc_s_ss_cleanup_failedi&rpc_svc_desc_generali'rpc_svc_desc_mutexi(rpc_svc_desc_xmiti)rpc_svc_desc_recvi*rpc_svc_desc_dg_statei+rpc_svc_desc_canceli,rpc_svc_desc_orphani-rpc_svc_desc_cn_statei.rpc_svc_desc_cn_pkti/rpc_svc_desc_pkt_quotasi0rpc_svc_desc_authi1rpc_svc_desc_sourcei2rpc_svc_desc_statsi3rpc_svc_desc_memi4rpc_svc_desc_mem_typei5rpc_svc_desc_dg_pktlogi6rpc_svc_desc_thread_idi7rpc_svc_desc_timestampi8rpc_svc_desc_cn_errorsi9rpc_svc_desc_conv_threadi:rpc_svc_desc_pidi;rpc_svc_desc_atforki<rpc_svc_desc_cma_threadi=rpc_svc_desc_inheriti>rpc_svc_desc_dg_socketsi?rpc_svc_desc_timeri@rpc_svc_desc_threadsiArpc_svc_desc_server_calliBrpc_svc_desc_nsiiCrpc_svc_desc_dg_pktiDrpc_m_cn_ill_state_trans_saiErpc_m_cn_ill_state_trans_caiFrpc_m_cn_ill_state_trans_sgiGrpc_m_cn_ill_state_trans_cgiHrpc_m_cn_ill_state_trans_sriIrpc_m_cn_ill_state_trans_criJrpc_m_bad_pkt_typeiKrpc_m_prot_mismatchiLrpc_m_frag_toobigiMrpc_m_unsupp_stub_rtl_ifiNrpc_m_unhandled_callstateiOrpc_m_call_failediPrpc_m_call_failed_no_statusiQrpc_m_call_failed_errnoiRrpc_m_call_failed_siSrpc_m_call_failed_ciTrpc_m_errmsg_toobigiUrpc_m_invalid_srchattriVrpc_m_nts_not_foundiWrpc_m_invalid_accbytcntiXrpc_m_pre_v2_ifspeciYrpc_m_unk_ifspeciZrpc_m_recvbuf_toosmalli[rpc_m_unalign_authtrli\rpc_m_unexpected_exci]rpc_m_no_stub_datai^rpc_m_eventlist_fulli_rpc_m_unk_sock_typei`rpc_m_unimp_calliarpc_m_invalid_seqnumibrpc_m_cant_create_uuidicrpc_m_pre_v2_ssidrpc_m_dgpkt_pool_corruptrpc_m_dgpkt_bad_freerpc_m_lookaside_corruptrpc_m_alloc_failrpc_m_realloc_failrpc_m_cant_open_filerpc_m_cant_read_addrrpc_svc_desc_libidlrpc_m_ctxrundown_nomemrpc_m_ctxrundown_excrpc_s_fault_codeset_conv_errorrpc_s_no_call_activerpc_s_cannot_supportrpc_s_no_context_available)ieifigihiiijikiliminioipiqc                   @   s2   e Zd ZdZdddZdd Zdd Zd	d
 ZdS )DCERPCExceptionzh
	This is the exception every client should catch regardless of the underlying
	DCERPC Transport used.
	Nc                 C   sL   t |  || _|| _|dur!z|d | _W dS    || _Y dS || _dS )a`  
		:param string error_string: A string you want to show explaining the exception. Otherwise the default ones will be used
		:param integer error_code: the error_code if we're using a dictionary with error's descriptions
		:param NDR packet: if successfully decoded, the NDR packet of the response call. This could probably have useful
		information
		N	ErrorCode)	Exception__init__packeterror_string
error_code)selfr  r  r   r  /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/aiosmb/dcerpc/v5/rpcrt.pyr    s   

zDCERPCException.__init__c                 C      | j S N)r  r  r  r  r  get_error_code.     zDCERPCException.get_error_codec                 C   r  r  )r  r  r  r  r  
get_packet1  r  zDCERPCException.get_packetc                 C   s>   | j }| jd ur| jS |tv rt| }d| j |f S d| j  S )Nz&DCERPC Runtime Error: code: 0x%x - %s z.DCERPC Runtime Error: unknown error code: 0x%x)r  r  rpc_status_codes)r  keyerror_msg_shortr  r  r  __str__4  s   

zDCERPCException.__str__)NNN)__name__
__module____qualname____doc__r  r  r  r  r  r  r  r  r    s    
r  c                   @      e Zd ZdZdS )CtxItem))	ContextID<H=0)
TransItemsB=0)Padr  )AbstractSyntax20s=""TransferSyntaxr  Nr  r  r  	structurer  r  r  r  r  ?      r  c                   @   r  )CtxItemResult))Resultr  )Reasonr  r  Nr  r  r  r  r  r  H  r  r  c                   @   r  )SEC_TRAILER))	auth_typezB=10)
auth_levelr  )auth_pad_lenr  )
auth_rsvrdr  )auth_ctx_idz	<L=747920N)r  r  r  	commonHdrr  r  r  r  r  O  r  r  c                   @   s2   e Zd ZdZdZdZdddZdd	 Zd
d ZdS )MSRPCHeaderr   ))	ver_majorzB=5)	ver_minorr  )typer  )flagsr  )representationz<L=0x10)frag_lenzm<H=self._SIZE+len(auth_data)+(16 if (self["flags"] & 0x80) > 0 else 0)+len(pduData)+len(pad)+len(sec_trailer))auth_lenz<H=len(auth_data))call_idz<L=1))dataLenz	_-pduDatazOself["frag_len"]-self["auth_len"]-self._SIZE-(8 if self["auth_len"] > 0 else 0))pduData:)_padz_-padz_(4 - ((self._SIZE + (16 if (self["flags"] & 0x80) > 0 else 0) + len(self["pduData"])) & 3) & 3))padr  _sec_trailerz_-sec_trailerz 8 if self["auth_len"] > 0 else 0sec_trailerr  auth_dataLenz_-auth_datazself["auth_len"]	auth_datar  Nr   c                 C   sp   t | || |d u r6d| d< d| d< ttB | d< t| d< d| _d| d< d| d	< d| d
< d| d< d| d< d S d S )Nr   r  r   r  r  r  r      r  r  r  r  )r   r  PFC_FIRST_FRAGPFC_LAST_FRAGMSRPC_REQUEST_MSRPCHeader__frag_len_setr  data	alignmentr  r  r  r  p  s   zMSRPCHeader.__init__c                 C   s    | j | d t@ dkrd S d S )Nr  r   r   )_SIZEPFC_OBJECT_UUIDr  r  r  r  get_header_size~  s    zMSRPCHeader.get_header_sizec                 C   s$   | d dkrt | d | d< |  S )Nr  r  r  )lengetDatar  r  r  r  r    s   zMSRPCHeader.get_packetNr   )	r  r  r  r  r  r  r  r  r  r  r  r  r  r  X  s    
r  c                   @   $   e Zd ZdZejd ZdddZdS )MSRPCRequestHeader   )
alloc_hint<L=0ctx_idr  )op_numr  )_uuidz_-uuidz%16 if self["flags"] & 0x80 > 0 else 0)uuidr  Nr   c                 C   s6   t | || |d u rt| d< d| d< d| d< d S d S )Nr  r   r  r  r  )r  r  r	  r  r  r  r  r    s   zMSRPCRequestHeader.__init__r  r  r  r  r  r  r  r  r  r  r  r  r    s    
r  c                   @   r  )MSRPCRespHeaderr  )r  r  )cancel_count<B=0)paddingr"  Nr   c                 C   s.   t | || |d u rt| d< d| d< d S d S )Nr  r   r  )r  r  MSRPC_RESPONSE)r  aBufferr  r  r  r  r    s
   zMSRPCRespHeader.__init__r  r  r  r  r  r  r     s    
r   c                   @   s4   e Zd Zee ZdZd
ddZdd Zdd	 Z	dS )	MSRPCBind))	max_tfrag<H=4280)	max_rfragr(  assoc_groupr  ctx_numr  Reservedr  	Reserved2r  
_ctx_itemsz_-ctx_itemsz"self["ctx_num"]*self._CTX_ITEM_LEN	ctx_itemsr  Nr   c                 C   sH   t | || |d u rd| d< d| d< d| d< d| d< d| d	< g | _d S )
Ni  r'  r)  r   r+  r   r-  r  r5  )r   r  _MSRPCBind__ctx_itemsr  r  r  r  r    s   
zMSRPCBind.__init__c                 C   s   | j | d S r  )r6  append)r  itemr  r  r  
addCtxItem  s   zMSRPCBind.addCtxItemc                 C   s8   t | j| d< | jD ]}| d  | 7  < q
t| S )Nr-  r5  )r  r6  r  r   )r  ir  r  r  r    s   

zMSRPCBind.getDatar  )
r  r  r  r  r  _CTX_ITEM_LENr  r  r9  r  r  r  r  r  r&    s    


r&  c                   @   s@   e Zd ZdZee ZdZdddZdd Z	d	d
 Z
dd ZdS )MSRPCBindAck   ))r'  r  )r)  r  r*  )SecondaryAddrLenz<H&SecondaryAddr)SecondaryAddrz)PadLenz_-Padz1(4-((self["SecondaryAddrLen"]+self._SIZE) % 4))%4)r  r  r,  r.  r0  r2  r4  r  r   r  r  Nr   c                 C   sD   g | _ t| || |d u r d| d< d| d< d| d< d| d< d S d S )Nr  r  r5  r  r  )_MSRPCBindAck__ctx_itemsr  r  r  r  r  r  r    s   zMSRPCBindAck.__init__c                 C   r  r  rB  r  r  r  r  getCtxItems  r  zMSRPCBindAck.getCtxItemsc                 C   s   | j |d  S )Nr   rC  )r  indexr  r  r  
getCtxItem  s   zMSRPCBindAck.getCtxItemc                 C   sN   t | | | d }t| d D ]}t|}| j| |t|d  }qd S )Nr5  r-  )r   
fromStringranger  rB  r7  r  )r  r  r:  r8  r  r  r  rG    s   zMSRPCBindAck.fromStringr  )r  r  r  r  r  r  r;  r  r  rD  rF  rG  r  r  r  r  r<    s    

	r<  c                   @   s   e Zd ZdZdddZdS )MSRPCBindNak))RejectedReasonr  )SupportedVersionsr  Nr   c                 C   &   t | || |d u rd| d< d S d S )Nr  rK  )r   r  r  r  r  r  r       zMSRPCBindNak.__init__r  )r  r  r  r  r  r  r  r  r  rI    s    rI  c                   @   s    e Zd ZedZedZeZdS )DCERPC)z$8a885d04-1ceb-11c9-9fe8-08002b104860z2.0)z$71710533-BEBA-4937-8319-B5DBEF9CCC36z1.0N)r  r  r  r   	NDRSyntaxNDR64Syntaxtransfer_syntaxr  r  r  r  rN    s    rN  c                   @   s   e Zd ZdddZdd ZdS )DCERPC_RawCallr  Nc                 C   sB   t |  || d< || d< |d ur| d  tO  < || d< d S d S )Nr  r  r  r  )r  r  r  )r  r  r  r  r  r  r  r    s   
zDCERPC_RawCall.__init__c                 C   s   || d< d S )Nr  r  )r  r  r  r  r  setData  s   zDCERPC_RawCall.setData)r  N)r  r  r  r  rS  r  r  r  r  rR  
  s    
rR  c                   @   s2   e Zd ZdefdefdefdeffZd	ddZdS )
CommonHeaderVersion
EndiannessCommonHeaderLengthFillerNFc                 C   s>   t | || |d u rd| d< d| d< d| d< d| d< d S d S )	Nr   rU  r   rV  r   rW     L rX  r   r  r  r  isNDR64r  r  r  r    s   zCommonHeader.__init__NF)r  r  r  r   r   r   r  r  r  r  r  r  rT    s    rT  c                   @   s&   e Zd ZdefdeffZdddZdS )PrivateHeaderObjectBufferLengthrX  NFc                 C   rL  )NrY  rX  rZ  r[  r  r  r  r  +  rM  zPrivateHeader.__init__r]  )r  r  r  r   r  r  r  r  r  r  r^  &  
    r^  c                   @   s&   e Zd ZdefdeffZdddZdS )TypeSerialization1rT  r^  r   c                 C   sL   t t| |t t| | t | d  t | d  | d d< t| |S )NrT  r^  r_  )r  r   r  getDataReferents)r  soFarr  r  r  r  5  s   


zTypeSerialization1.getDataN)r   )r  r  r  rT  r^  r  r  r  r  r  r  ra  0  r`  ra  N)Jaiosmb.dcerpc.v5.structurer   aiosmb.dcerpc.v5.uuidr   aiosmb.dcerpc.v5.dtypesr   r   r   aiosmb.dcerpc.v5.ndrr   r	  
MSRPC_PINGr$  MSRPC_FAULTMSRPC_WORKINGMSRPC_NOCALLMSRPC_REJECT	MSRPC_ACKMSRPC_CL_CANCEL
MSRPC_FACKMSRPC_CANCELACK
MSRPC_BINDMSRPC_BINDACKMSRPC_BINDNAKMSRPC_ALTERCTXMSRPC_ALTERCTX_RMSRPC_AUTH3MSRPC_SHUTDOWNMSRPC_CO_CANCELMSRPC_ORPHANEDr  r  MSRPC_SUPPORT_SIGNMSRPC_PENDING_CANCELPFC_RESERVED_1PFC_CONC_MPXPFC_DID_NOT_EXECUTE	PFC_MAYBEr  RPC_C_AUTHN_NONERPC_C_AUTHN_GSS_NEGOTIATERPC_C_AUTHN_WINNTRPC_C_AUTHN_GSS_SCHANNELRPC_C_AUTHN_GSS_KERBEROSRPC_C_AUTHN_NETLOGONRPC_C_AUTHN_DEFAULTRPC_C_AUTHN_LEVEL_NONERPC_C_AUTHN_LEVEL_CONNECTRPC_C_AUTHN_LEVEL_CALLRPC_C_AUTHN_LEVEL_PKTRPC_C_AUTHN_LEVEL_PKT_INTEGRITYRPC_C_AUTHN_LEVEL_PKT_PRIVACYrpc_provider_reasonMSRPC_CONT_RESULT_ACCEPTMSRPC_CONT_RESULT_USER_REJECTMSRPC_CONT_RESULT_PROV_REJECTrpc_cont_def_resultr  r  r  r  r  r  r  r  r   r&  r<  rI  rN  rR  rT  r^  ra  r  r  r  r  <module>   s`  
	
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                 	  
                                               !  "  #  $  %  &  '  (  )  *  +  ,  -  .  /  0  1  2  3  4  5  6  7  8  9  :  ;  <  =  >  ?  @  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  [  \  ]  ^  _  `  a  b  c  d  e  f  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y  z  {  |  }  ~                                     	    
                                                                                             !    "    #    $    %    &    '    (    )    *    +    ,    -    .    /    0    1    2    3    4    5    6    7    8    9    :    ;    <    =    >    ?    @    A    B    C    D    E    F    G    H    I    J    K    L    M    N    O    P    Q    R    S    T    U    V    W    X    Y    Z    [    \    ]    ^    _    `    a    b    c    d    e    f    g    h    i    j    k    l    m    n    o    p    q    r    s    t    u    v    w    x    y    z    {    |    }    ~                                                         	      
                                                                                                               
   +(		3 -

