o
    j>                    @   s:  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m	Z	 d dl
mZmZmZ d dlmZmZ d dlmZmZmZmZmZ d dlmZmZmZ d d	lmZ d d
l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Z0dZ1dZ2dZ3dZ4i 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d0d1d2d3d4Z5dZ6dZ7dZ8dZ9dZ:dZ;d5Z<d6Z=d7Z>d Z?dZ@dZAdZBdZCd8ZDd9ZEdZFdZGdZHdZIdZJdZKd:d;d<d=d>d?d@dAZLd ZMdZNdZOdZPdBdCdDdEZQi ddFddGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddei dfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~d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dddddd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/d0d1i d2d3d4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i dTdUdVdWdX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i dvdwdxdydz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*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAi 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i 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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*d+d,d-d.d/i d0d1d2d3d4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i dRdSdTdUdVdWdX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d{d|d}d~dddZRdZSdZTdHZUdJZVdLZWdNZXdPZYdRZZdTZ[dVZ\dXZ]dZZ^d\Z_d^Z`d`ZadbZbddZcdfZddhZedjZfdlZgdnZhdpZidrZjdtZkdvZldxZmdzZnd|Zod~ZpdZqdZrdZsdZtdZudZvdZwdZxdZydZzdZ{dZ|dZ}dZ~dZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ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Ȑd0Zɐd2Zʐd4Zːd6Z̐d8Z͐d:Zΐd<Zϐd>ZАd@ZѐdBZҐdDZӐdFZԐdHZՐdJZ֐dLZאdNZؐdPZِdRZڐdTZېdVZܐdXZݐdZZސd\Zߐd^Zd`ZdbZddZdfZdhZdjZdlZdnZdpZdrZdtZdvZdxZdzZd|Zd~ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ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Z&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0d Z1dZ2dZ3dZ4dZ5d
Z6dZ7dZ8dZ9dZ:dZ;dZ<dZ=dZ>dZ?dZ@d ZAd"ZBd$ZCd&ZDd(ZEd*ZFd,ZGd.ZHd0ZId2ZJd4ZKd6ZLd8ZMd:ZNd<ZOd>ZPd@ZQdBZRdDZSdFZTdHZUdJZVdLZWdNZXdPZYdRZZdTZ[dVZ\dXZ]dZZ^d\Z_d^Z`d`ZadbZbddZcdfZddhZedjZfdlZgdnZhdpZidrZjdtZkdvZldxZmdzZnd|Zod~ZpdZqdZrdZsdZtdZudZvdZwdZxdZydZz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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.ZȐd0Zɐd2Zʐd4Zːd6Z̐d8Z͐d:Zΐd<Zϐd>ZАd@ZѐdBZҐdDZӐdFZԐdHZՐdJZ֐dLZאdNZؐdPZِdRZڐdTZېdVZܐdXZݐdZZސd\Zߐd^Zd`ZdbZddZdfZdhZdjZdlZdnZdpZdrZdZdZdZdZdZdZdZdZdZdZdZdZWdZdZdZdZdZG dd deZG dd deZG dd deZG dd deZG dd deZ G dd de ZG dd de ZG dd deZG dd deZG dd de ZG dd deZG dd deZG dd dZG dd deZ	G dd deZ
G dd deZG dd deZG dd deZG dd deZG dd deZdS (      N)	unhexlify)ARC4)ntlmLOG)	Structurepackunpack)
kerberosv5gssapi)uuidtup_to_bingeneratestringver_to_binbin_to_uuidtupbin_to_string)UCHARULONGUSHORT)	NDRSTRUCT)hresult_errors)Thread                        	   
                                 zMSRPC REQUESTz
MSRPC PINGzMSRPC RESPONSEzMSRPC FAULTzMSRPC WORKINGzMSRPC NOCALLzMSRPC REJECTz	MSRPC ACKzMSRPC CL CANCELz
MSRPC FACKzMSRPC CANCELACKz
MSRPC BINDzMSRPC BINDACKzMSRPC BINDNAKzMSRPC ALTERCTXzMSRPC ALTERCTX RzMSRPC AUTH3zMSRPC SHUTDOWNzMSRPC CO CANCELzMSRPC ORPHANED)r&   r'   r(       @      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_bound  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)efghijklmnopqr  r  r  r  r  r  r  r  r  r  r  r  r  z6CB71C2C-9812-4540-)z$8A885D04-1CEB-11C9-9FE8-08002B1048602.0c                   @   s2   e Zd ZdZdddZdd Zdd Zd	d
 ZdS )DCERPCExceptionzq
    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/impacket/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_packet  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__  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    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  #  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  D  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_sizeR  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  U  s   zMSRPCHeader.get_packetNr   )	r  r  r  r-  r  r  r  r/  r  r  r  r  r  r  ,  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  i  s   zMSRPCRequestHeader.__init__r2  r  r  r  r-  r  r  r  r  r  r  r  r4  _  s    
r4  c                   @   r3  )MSRPCRespHeaderr5  )r6  r9  )cancel_count<B=0)paddingrA  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  y  s
   zMSRPCRespHeader.__init__r2  r>  r  r  r  r  r?  p  s    
r?  c                   @   D   e Zd Zee ZdZdddZdd Zdd	 Z	d
d Z
dd ZdS )	MSRPCBind)	max_tfrag<H=4280)	max_rfragrI  assoc_groupr8  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 )
N  rH  rJ  r   rL  r   rN  r%  rV  )r   r  _MSRPCBind__ctx_itemsr*  r  r  r  r    s   
zMSRPCBind.__init__c                 C      | j | d S r  )rX  appendr  itemr  r  r  
addCtxItem     zMSRPCBind.addCtxItemc                 C   r  r  rX  r  r  r  r  getCtxItems  r  zMSRPCBind.getCtxItemsc                 C      | j |d  S Nr   r_  r  indexr  r  r  
getCtxItem     zMSRPCBind.getCtxItemc                 C   8   t | j| d< | jD ]}| d  | 7  < q
t| S NrN  rV  )r0  rX  r1  r   r  ir  r  r  r1       

zMSRPCBind.getDatar2  r  r  r  r0  r  _CTX_ITEM_LENr  r  r]  r`  re  r1  r  r  r  r  rF    s    


rF  c                   @   rE  )MSRPCRelayBindrG  Nr   c                 C   s   t | || |d u rd| d< d| d< d| d< d| d< d| d	< g | _| d	 }tt| d
 | j D ]}| jt| || jd  }q1d S )NrW  rH  rJ  r   rL  r   rN  r%  rV  rT  )r   r  _MSRPCRelayBind__ctx_itemsrangeintrm  rZ  r  )r  r+  r,  ctx_items_datarj  r  r  r  r    s   zMSRPCRelayBind.__init__c                 C   rY  r  )ro  rZ  r[  r  r  r  r]    r^  zMSRPCRelayBind.addCtxItemc                 C   r  r  ro  r  r  r  r  r`    r  zMSRPCRelayBind.getCtxItemsc                 C   ra  rb  rs  rc  r  r  r  re    rf  zMSRPCRelayBind.getCtxItemc                 C   rg  rh  )r0  ro  r1  r   ri  r  r  r  r1    rk  zMSRPCRelayBind.getDatar2  rl  r  r  r  r  rn    s    

rn  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   )rH  r  rJ  r  rK  SecondaryAddrLenz<H&SecondaryAddrSecondaryAddrzPadLenz_-Padz1(4-((self["SecondaryAddrLen"]+self._SIZE) % 4))%4r  r  rM  rO  rQ  rS  rU  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  rV  r   r$  )_MSRPCBindAck__ctx_itemsr  r  r*  r  r  r  r    s   zMSRPCBindAck.__init__c                 C   r  r  r  r  r  r  r  r`    r  zMSRPCBindAck.getCtxItemsc                 C   ra  rb  r  rc  r  r  r  re    rf  zMSRPCBindAck.getCtxItemc                 C   N   t | | | d }t| d D ]}t|}| j| |t|d  }qd S NrV  rN  )r   
fromStringrp  r  r  rZ  r0  r  r+  rj  r\  r  r  r  r       zMSRPCBindAck.fromStringr2  )r  r  r  r-  r0  r  rm  r  r  r`  re  r  r  r  r  r  rt    s    

	rt  c                   @   sP   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d Zdd ZdS )MSRPCRelayBindAckru  )rv  rw  rK  rx  rz  r}  r  rM  rO  rQ  rS  rU  Nr   c                 C   s<   g | _ t| || |d u rd| d< d| d< d| d< d S d S )Nr%  r  rV  r   rN  )_MSRPCRelayBindAck__ctx_itemsr   r  r*  r  r  r  r    s   zMSRPCRelayBindAck.__init__c                 C   r  r  r  r  r  r  r  r`    r  zMSRPCRelayBindAck.getCtxItemsc                 C   ra  rb  r  rc  r  r  r  re    rf  zMSRPCRelayBindAck.getCtxItemc                 C   rY  r  )r  rZ  r[  r  r  r  r]    r^  zMSRPCRelayBindAck.addCtxItemc                 C   r  r  )r   r  rp  r  r  rZ  r0  r  r  r  r  r    r  zMSRPCRelayBindAck.fromStringc                 C   sn   t | d d | d< dd| d | j d  d  | d< t | j| d< | jD ]}| d  | 7  < q%t| S )	Nr{  r   ry   r   r  rN  rV  )r0  r-  r  r1  r   ri  r  r  r  r1  (  s   "

zMSRPCRelayBindAck.getDatar2  )r  r  r  r-  r0  r  rm  r  r  r`  re  r]  r  r1  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%  r  )r   r  r*  r  r  r  r  5     zMSRPCBindNak.__init__r2  )r  r  r  r  r  r  r  r  r  r  0  s    r  c                   @   s   e Zd ZedZedZe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dZd)ddZdd Zd*ddZdd  Zd!d" Zd*d#d$Zd+d&d'ZdS ),DCERPCz$8a885d04-1ceb-11c9-9fe8-08002b104860r  )z$71710533-BEBA-4937-8319-B5DBEF9CCC36z1.0c                 C   s(   || _ | d d | _|   d | _d S r2  )
_transport
set_ctx_id_max_user_fragset_default_max_fragment_size_ctxr  	transportr  r  r  r  A  s
   

zDCERPC.__init__c                 C   r  r  )r  r  r  r  r  get_rpc_transportH  r  zDCERPC.get_rpc_transportc                 C   
   || _ d S r  )r  )r  r:  r  r  r  r  K     
zDCERPC.set_ctx_idc                 C   
   | j  S r  )r  connectr  r  r  r  r  N  r  zDCERPC.connectc                 C   r  r  )r  
disconnectr  r  r  r  r  Q  r  zDCERPC.disconnectc                 C   s   |dkr
|    d S || _d S )N)r  r  )r  fragment_sizer  r  r  set_max_fragment_sizeT  s   
zDCERPC.set_max_fragment_sizec                 C   s
   d| _ d S r2  )r  r  r  r  r  r  ]  s   
z$DCERPC.set_default_max_fragment_sizec                 C      t dNz+virtual method. Not implemented in subclassRuntimeErrorr  r+  r  r  r  senda     zDCERPC.sendc                 C   r  r  r  r  r  r  r  recvd  r  zDCERPC.recv c                 C   r  r  r  )r  newUIDbogus_bindsr  r  r  	alter_ctxg  r  zDCERPC.alter_ctxNc	           	      C      d S r  r  	r  usernamepassworddomainlmhashnthashaesKeyTGTTGSr  r  r  set_credentialsj     zDCERPC.set_credentialsc                 C   r  r  r  r  r
  r  r  r  set_auth_levelm  r  zDCERPC.set_auth_levelc                 C   r  r  r  r  r	  callbackr  r  r  set_auth_typep  r  zDCERPC.set_auth_typec                 C   s   dS r2  r  r  r  r  r  get_idempotents  r  zDCERPC.get_idempotentc                 C   r  r  r  )r  flagr  r  r  set_idempotentv  r  zDCERPC.set_idempotentc                 C   s2   t |dr| t|| |S | t|||S )Nr1  )hasattrr  DCERPC_RawCallr1  )r  functionbodyr=  r  r  r  cally  s   
zDCERPC.callTc                 C   s   | j | jkr|| j d}nd}| |j|| |  }t|j tj	|j }t
||jjd }|dd  dkrt|du rttd|dd  d }|tv rSt|d}	|	t
|d	}
z|||d
}W n   |
|d}	Y |	|
||d}	|	|||d
}|S )NTFResponses       <Lr   r  DCERPCSessionError)isNDR64)r  r  )transfer_syntaxNDR64SyntaxchangeTransferSyntaxr  opnumr  
__import__r  sysmodulesgetattr	__class__r  r   r  r  )r  requestr=  
checkErrorr  answermodule	respClassr  	exceptionsessionErrorClassresponser  r  r  r    s0   


zDCERPC.request)r  r  r  r  r  NNr  )NT)r  r  r  r   	NDRSyntaxr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  :  s*    	



r  c                   @   s   e Zd ZdS )	DCERPC_v4N)r  r  r  r  r  r  r  r    s    r  c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zd#ddZdd Z	dd Z
dd Zd$ddZd%ddZd&ddZdd Zdd  Zd'd!d"ZdS )(	DCERPC_v5c                 C   s   t | | t| _t| _d | _d| _d | _d | _	d| _
d| _d| _d| _d | _d | _d| _d| _d| _d| _d| _d| _d| _d| _td| _d| _d| _d | _d| _d| _d | _d| _ d | _!d S )Nr   r  Fr%  r  r   )"r  r  RPC_C_AUTHN_LEVEL_NONE_DCERPC_v5__auth_levelRPC_C_AUTHN_WINNT_DCERPC_v5__auth_type_DCERPC_v5__auth_type_callback_DCERPC_v5__auth_flags_DCERPC_v5__username_DCERPC_v5__password_DCERPC_v5__domain_DCERPC_v5__lmhash_DCERPC_v5__nthash_DCERPC_v5__aesKey_DCERPC_v5__TGT_DCERPC_v5__TGS_DCERPC_v5__aesNegociated_DCERPC_v5__clientSigningKey_DCERPC_v5__serverSigningKey_DCERPC_v5__clientSealingKey_DCERPC_v5__clientSealingHandle_DCERPC_v5__serverSealingKey_DCERPC_v5__serverSealingHandle_DCERPC_v5__sequencer   r  _DCERPC_v5__callidr  _DCERPC_v5__sessionKey_DCERPC_v5__max_xmit_size_DCERPC_v5__flags_DCERPC_v5__cipher_DCERPC_v5__confounder_DCERPC_v5__gssr  r  r  r  r    s<   

zDCERPC_v5.__init__c                 C   r  r  )r  )r  is_aesr  r  r  set_aes  r  zDCERPC_v5.set_aesc                 C   r  r  r  )r  session_keyr  r  r  set_session_key  r  zDCERPC_v5.set_session_keyc                 C   r  r  r   r  r  r  r  get_session_key  r  zDCERPC_v5.get_session_keyc                 C   r  r  )r  r  r  r  r  r    r  zDCERPC_v5.set_auth_levelNc                 C   s   || _ || _d S r  )r  r  r  r  r  r  r    s   
zDCERPC_v5.set_auth_typec                 C   r  r  )r  r  r  r  r  get_auth_type  r  zDCERPC_v5.get_auth_typec                 C   r  r  )r  )r  sizer  r  r  set_max_tfrag  r  zDCERPC_v5.set_max_tfragc                 C   s$   | j | j| j| j| j| j| j| jfS r  )r  r  r  r  r  r  r  r  r  r  r  r  get_credentials  s   $zDCERPC_v5.get_credentialsr  c	           	      C   s   |  t || _|| _|| _|| _|| _|| _|dks|dkrMt|d r)d| }t|d r3d| }zt	|| _
t	|| _W d S    || _
|| _Y d S d S )Nr  r   z0%s)r  RPC_C_AUTHN_LEVEL_CONNECTr  r  r  r  r  r  r0  r   r  r  r  r  r  r  r    s(   

zDCERPC_v5.set_credentialsr   r  c                 C   s  t  }| j}t|D ]0}t }||d< d|d< ||d< t td |d< t||d< || |  jd7  _|d7 }q
t }||d< t||d< ||d< d|d< || t }	t	|	d< |
 |	d< | j|	d	< |rmt|	d< | jtkr'| jd u s}| jd u r| j \| _| _| _| _| _| _| _| _| jtkrtjd
d
d| j d}
nH| jtkrddlm } |j!| jd d | jdd}
n.| jt"krt#$| j| j| j| j| j| j| j| j| j% | j& 
\| _'| _(}
nt)d| j t* }| j|d< | j|d< | jd |d< dt+|	, d  d }|dkr|	d  d| 7  < ||d< ||	d< |
|	d< | j-|	,  | j. }|dkr>t|}ndS |d t/ksN|d t0krUt1|
 }nX|d t2ksc|d t3kr|d t3kr~t4|
 }t5d|d d d d }n
t6|d }|d }|t7v rt)|d|t8v rt)dt8|  t)d| t)d |d  t|d |d! d D ]L}|9|}|d" dkrd#| }|t:;|d" d$|d"  7 }|d%7 }|9|d& }|t8;|d'| 7 }|d" |fd(kr|d)7 }t)||d | _<q|d* | _=| jtkr[| jtkr6tj>|
|d | j| j| j| j| j| j d+\}| _(|d, | _?n| jtkr?d }n| jt"krUt#@| j'| j(|d \| _'| _(}d| _A| jtBtCtDfv r| jtkr| j?tjE@ rtF| j?| j(| _GtF| j?| j(d-| _HtI| j?| j(| _JtI| j?| j(d-| _KtLM| jJ}|jN| _OtLM| jK}|jN| _Pn2| j(| _G| j(| _H| j(| _J| j(| _KtLM| jG}|jN| _O|jN| _Pn| jtkr| jtCkrd.| _Qnd/| _Qt* }| j|d< | j|d< | jd |d< |d urT| jt"kr+t }t|d< |
 |d< ||d< ||d< | jj-|, dd0 tRS| j'| _Td| _A| .  d| _An)t }tU|d< d1|d< ||d< |
 |d< |d	 | _| j|d	< | jj-|, dd0 |  jd7  _|S )2Nr  r   r  r  r  r  r  r  r  r  T)signingRequired
use_ntlmv2r   nrpcr  )r	  zUnsupported auth_type 0x%xr	  r
  5 r  r      r  r   r$  r  r  r  zBind context rejected: %s'Unknown DCE RPC fault status code: %.8xz(Unknown DCE RPC packet type received: %drN  r  zBind context %d rejected: z)Unknown DCE RPC context result code: %.4xz; r  zUnknown reason code: %.4x)r   r   zI (this usually means the interface isn't listening on the given endpoint)rJ  )r
  r  s   Serverr%  s   12345678)forceWriteAndxs       )VrF  r  rp  r  r   r   r   r]  r  
MSRPC_BINDr1  r  MSRPC_ALTERCTXr  r  r  r  r  r  r  r  r  r  r  r  r  r  r   getNTLMSSPType1doesSupportNTLMv2RPC_C_AUTHN_NETLOGONimpacket.dcerpc.v5r  getSSPType1RPC_C_AUTHN_GSS_NEGOTIATEr	   getKerberosType1getRemoteNameget_kdcHostr  r  r  r  r0  r  r  r  MSRPC_BINDACKMSRPC_ALTERCTX_Rrt  MSRPC_BINDNAKMSRPC_FAULTr?  r   r  r  rpc_provider_reasonre  rpc_cont_def_resultgetr  r  getNTLMSSPType3r  getKerberosType3r  r  RPC_C_AUTHN_LEVEL_PKT_INTEGRITYRPC_C_AUTHN_LEVEL_PKT_PRIVACY*NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITYSIGNKEYr  r  SEALKEYr  r  r   newencryptr  r  r  r
   GSSAPIr  MSRPC_AUTH3)r  
iface_uuidalterr  r  bindctxrj  r\  r  authr  r   r  srespbindRespstatus_codectxItemsmsgreasonr  cipher3cipher4cipherr  auth3r  r  r  r0    s*  



*





















zDCERPC_v5.bindc           
   	   C   s  | j |d< d|d< d|d< | jttfv r4t }| j|d< | j|d< d|d< | j d	 |d
< dt| d  d }|dkrK|d  d| 7  < ||d< | |d< d|d< |d }| jtkr| jt	kr| j
tj@ rt| j
| j| j| d d || j| j\}}n?t| j
| j| j||| j| j\}}n,| jtkrddlm}	 |	|| j| j| j| j\}}n| jtkr| j| j|| j\}}||d< n]| jtkr#| jt	kr| j
tj@ rt| j
| j| d d | j| j}n8t| j
| j|| j| j}n*| jtkrddlm}	 |	|| j| j| j| j}n| jtkr#| j| j|| j}| |d< ||d< |  jd7  _| jj| ||d d S )Nr:  r%  r   r$  r	  r
  r   r  r  r  r   r     s                   ir  r   r  	forceRecv)r  r  r%  r&  r  r  r0  r  r1  r  r  r   r'  SEALr  r  r  r  r  r  r  r  r  r  r  r  GSS_WrapSIGN
GSS_GetMICr  r  )
r  
rpc_packetr  r@  r   r  
plain_datasealedMessage	signaturer  r  r  r  _transport_send  s   







 


zDCERPC_v5._transport_sendc                 C   s  t |tdurt|j| }z|d dkr|d  tO  < W n   Y | j|d< | j|d< t|d |d< d	}| j	d
krEt
| j	| j}n| j}| jttfv rU|dkrUd}t|d d |krmd}|d | jkrm| jd }|r|d }d
}	 ||||  }|snE|d
kr|d  tO  < n	|d  t M  < |t|7 }|t|kr|d  tO  < n	|d  t M  < ||d< | j|d|d t@ d qvn| | |  jd7  _d S )NTr=  r%  r  r:  r  r  r7  Fr   r   r,   r   r?  )
isinstancer  r  OP_NUMr  r.  r  r  r0  r  minr  r  r%  r&  r&  r'  rI  )r  r+  should_fragmentr  r  offsettoSendr  r  r  r    sT   




zDCERPC_v5.sendc              	   C   s~  d}d}d}|s| j j|tjd}t|}t||d k r6|| j j||d t| d7 }t||d k s| }|d tkr|d |d krtd|||d  d }|tv r_t	t| |d	@ tv rmt	t|d	@  |t
jv rt
j| d }t
j| d
 }	t	d||	f t	d| |d t@ rd}nd
}||d  }
|d }|r|d7 }|
| d  }t|d}|
d |  }
|d tkr>| jtkr| jtj@ rt| j| j| j|
|
| j| j\}
}nt| j| j| j|
|
| j| j\}
}|  jd
7  _n| jtkr"ddlm} ||
|t|d  | j| j\}
}|  jd
7  _n| jtkr=| jdkr=| j j!| j|
| jd|d\}
}nk|d t"kr| jtkr{|dd  }| jtj@ rft#| j| j|
| j| j}nCt#| j| j|| j| j}|  jd
7  _n.| jtkrddlm} |dd  }|#|| j$| j| j| j}|  jd
7  _n| jtkr	 |d r|
d |d   }
||
7 }|r	|S )NFr   r%  )countr  r  r   r  i  r   z%s - %sr  r  Tr  r   r+  r
  r  init)	directionauthDatar!   r  )%r  r  r?  r-  r0  r/  r  r   r  r  r   ERROR_MESSAGESr'  r  r&  r  r  r  r   r'  rA  r  r  r  r  r  r  r  UNSEALr  r  r  r  
GSS_Unwrapr%  rC  r  )r  finishedr@  	retAnswerresponse_dataresponse_headeroffr6  r  error_msg_verboser  r  r$  r   rH  r  cfounderntlmsspr  r  r  r  G  s    





pzDCERPC_v5.recvc              
   C   s   |  | j}|| j| j| j| j| j| j| j	| j
 || j || j || jd  | j|_|j|d|t| 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  r0  r   r  )r  r  r  r  r  r  r  r    s   zDCERPC_v5.alter_ctxr  r  )r   r   r  )r   r   r   )r  r  r  r  r  r  r  r  r  r  r  r  r  r0  rI  r  r  r  r  r  r  r  r    s"    #


 
@R@vr  c                   @   s   e Zd ZdddZdd ZdS )r  r%  Nc                 C   sB   t |  || d< || d< |d ur| d  tO  < || d< d S d S )Nr;  r  r  r=  )r4  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  setData  s   zDCERPC_RawCall.setData)r%  N)r  r  r  r  ra  r  r  r  r  r    s    
r  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   rc  r%   rd  r   re     L rf  r   r  r  r+  r  r  r  r  r    s   zCommonHeader.__init__NF)r  r  r  r   r   r   r  r  r  r  r  r  rb    s    rb  c                   @   s&   e Zd ZdefdeffZdddZdS )PrivateHeaderObjectBufferLengthrf  NFc                 C   r  )Nrg  rf  rh  ri  r  r  r  r    r  zPrivateHeader.__init__rj  )r  r  r  r   r  r  r  r  r  r  rk    
    rk  c                   @   s&   e Zd ZdefdeffZdddZdS )TypeSerialization1rb  rk  r   c                 C   sL   t t| |t t| | t | d  t | d  | d d< t| |S )Nrb  rk  rl  )r0  r   r1  getDataReferents)r  soFarr  r  r  r1    s   


zTypeSerialization1.getDataNr`  )r  r  r  rb  rk  r  r1  r  r  r  r  rn    rm  rn  c                   @   sx   e Zd ZdZdddZdd Zej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S )DCERPCServerz
    A minimalistic DCERPC Server, mainly used by the smbserver, for now. Might be useful
    for other purposes in the future, but we should do it way stronger.
    If you want to implement a DCE Interface Server, use this class as the base class
    Nc                 C   s   |r|| _ i | _d| _d| _d | _d| _t| _d S t	|  d| _
d| _i | _d| _d | _d | _ d| _d | _d| _t| _t | _| j| j| j
f d S )Nr%  r   rW  r   z	127.0.0.1)_clientSock_listenUUIDS
_boundUUID_callid	_max_frag_max_xmit_sizer   _DCERPCServer__logr   r  _listenPort_listenAddress_socksocketr0  r  client_socketr  r  r  r    s*   


zDCERPCServer.__init__c                 C   r  r  )rr  r}  r  r  r  set_client_socket  r  zDCERPCServer.set_client_socketc                 C   s   | j || d S r  )rx  log)r  r8  levelr  r  r  r    s   zDCERPCServer.logc                 C   sJ   i | j t|< || j t| d< || j t| d< | jd| tjd dS )aC  
        adds a call back to a UUID/opnum call
        
        :param uuid ifaceUUID: the interface UUID
        :param string secondaryAddr: the secondary address to answer as part of the bind request (e.g. \\PIPE\\srvsvc)
        :param dict callbacks: the callbacks for each opnum. Format is [opnum] = callback
        r{  	CallBackszCallback added for UUID %s V:%s)r  N)rs  r   r  loggingDEBUG)r  	ifaceUUIDsecondaryAddr	callbacksr  r  r  addCallbacks  s   zDCERPCServer.addCallbacksc                 C   s(   || _ t | _| j| j | jf d S r  )rz  r|  r{  r0  ry  )r  addrr  r  r  setListenAddress,     
zDCERPCServer.setListenAddressc                 C   s(   || _ t | _| j| j| j f d S r  )ry  r|  r{  r0  rz  )r  portNumr  r  r  setListenPort1  r  zDCERPCServer.setListenPortc                 C   s   | j  d S rb  )r{  getsocknamer  r  r  r  getListenPort6  rf  zDCERPCServer.getListenPortc           	      C   s   d}d}d}|sw| j tj}|dkrd S t|}t||d k r7|| j |d t| 7 }t||d k s!t|}|d t@ rCd}|d }|d }|rq|d7 }|| d  }t|d	}|d |  }|d
 rq|d |d
   }||7 }|r|S )NFr%  r  r  Tr  r  r   rQ  r  )rr  r  r?  r-  r0  r'  r  )	r  rX  rY  rZ  r[  r  r  r$  r   r  r  r  r  9  s4   
zDCERPCServer.recvc                 C   st   | j d 	 | j  \| _}z	 |  }|d u rn| |}|d ur(| | qW n	 ty3   Y nw | j  q)Nr   )	r{  listenacceptrr  r  processRequestr  r  close)r  addressr+  r  r  r  r  runZ  s$   


zDCERPCServer.runc                 C   s   | j }t|d | jd kr| jd }| j rt|| j }|rdt|d dkrd|d }d}	 ||||  }|s8n+d}|dkrB|tO }|t|7 }|t|krR|tO }||d< ||d< | j|  q-n| j|  |  j	d7  _	d S )Nr  r*   r   r   r  )
rv  r0  rw  rL  r&  r'  rr  r  r  ru  )r  r+  max_fragr  rN  rO  r  r  r  r  r  m  s2   
zDCERPCServer.sendc                 C   s  d}t  }t|d< |d |d< d|d< d|d< d|d< |d	 |d	< |d
 |d
< |d |d< d|d< d|d< |d }d}d|d< t|d D ]w}t}t|}	|t|	d  }|	d t|krd}
| jD ]"}|	d |kr| j|	d  d |d< t|d d |d< d}
|| _qbnd}
|
dkrt	}|
dkrt
dt|	d   |d  d7  < t }||d< |
|d< t||d< || 7 }qEdd|d t j d  d  |d< ||d< t| |d< | j|  d S )Nr  r  r  r   r  r  r%  r$  r  rH  rJ  i4  rL  rN  rV  ry  r  r   r  r{  r   z,Bind request for an unsupported interface %sr  r  Ar   r  )rt  r  rp  MSRPC_CONT_RESULT_USER_REJECTr  r0  r   rs  rt  MSRPC_CONT_RESULT_ACCEPTr   errorr   r  r1  r-  rr  r  )r  r  r0  r  r4  r+  rV  rj  resultr\  r9  j
itemResultr  r  r  r0    sZ   
	"zDCERPCServer.bindc                 C   s  t |}|d tkrt|d }| || d }|S |d tkrw| j| jd urwt|}t	|}t
|d< |d | j| j d v rV| j| j d |d  |d }||d< ntd|d t| jf  t|d< tdd|d< t||d< |S t	|}t|d< |S )	Nr  r  r;  r  z3Unsupported DCERPC opnum %d called for interface %sr  r<   r  )r  r  rF  r0  r(  rs  r"  rt  r4  r?  rC  r   r  r   r  r   r0  )r  r+  r  r0  r  r  
returnDatar  r  r  r    s*    
zDCERPCServer.processRequestr  )r  r  r  r  r  r  r  INFOr  r  r  r  r  r  r  r  r0  r  r  r  r  r  rq    s    
!9rq  (  r  r|  r  binasciir   Cryptodome.Cipherr   impacketr   r   impacket.structurer   r   r   impacket.krb5r	   r
   impacket.uuidr   r   r   r   r   impacket.dcerpc.v5.dtypesr   r   r   impacket.dcerpc.v5.ndrr   r   	threadingr   r(  
MSRPC_PINGrC  r  MSRPC_WORKINGMSRPC_NOCALLMSRPC_REJECT	MSRPC_ACKMSRPC_CL_CANCEL
MSRPC_FACKMSRPC_CANCELACKr  r  r  r  r  r-  MSRPC_SHUTDOWNMSRPC_CO_CANCELMSRPC_ORPHANED	MSRPC_RTSmsrpc_message_typer&  r'  MSRPC_SUPPORT_SIGNMSRPC_PENDING_CANCELPFC_RESERVED_1PFC_CONC_MPXPFC_DID_NOT_EXECUTE	PFC_MAYBEr.  RPC_C_AUTHN_NONEr  r  RPC_C_AUTHN_GSS_SCHANNELRPC_C_AUTHN_GSS_KERBEROSr  RPC_C_AUTHN_DEFAULTr  r  RPC_C_AUTHN_LEVEL_CALLRPC_C_AUTHN_LEVEL_PKTr%  r&  r   r  r  MSRPC_CONT_RESULT_PROV_REJECTMSRPC_CONT_RESULT_NEGOTIATE_ACKr!  r  %MSRPC_STATUS_CODE_RPC_S_ACCESS_DENIED4MSRPC_STATUS_CODE_AUTHENTICATION_TYPE_NOT_RECOGNIZED(MSRPC_STATUS_CODE_RPC_FAULT_CANT_PERFORM%MSRPC_STATUS_CODE_RPC_X_INVALID_BOUND&MSRPC_STATUS_CODE_RPC_S_CANNOT_SUPPORT%MSRPC_STATUS_CODE_RPC_X_BAD_STUB_DATA$MSRPC_STATUS_CODE_NCA_S_COMM_FAILURE$MSRPC_STATUS_CODE_NCA_S_OP_RNG_ERRORMSRPC_STATUS_CODE_NCA_S_UNK_IF'MSRPC_STATUS_CODE_NCA_S_WRONG_BOOT_TIME#MSRPC_STATUS_CODE_NCA_S_YOU_CRASHED#MSRPC_STATUS_CODE_NCA_S_PROTO_ERROR(MSRPC_STATUS_CODE_NCA_S_OUT_ARGS_TOO_BIG'MSRPC_STATUS_CODE_NCA_S_SERVER_TOO_BUSY-MSRPC_STATUS_CODE_NCA_S_FAULT_STRING_TOO_LONG(MSRPC_STATUS_CODE_NCA_S_UNSUPPORTED_TYPE-MSRPC_STATUS_CODE_NCA_S_FAULT_INT_DIV_BY_ZERO(MSRPC_STATUS_CODE_NCA_S_FAULT_ADDR_ERROR)MSRPC_STATUS_CODE_NCA_S_FAULT_FP_DIV_ZERO*MSRPC_STATUS_CODE_NCA_S_FAULT_FP_UNDERFLOW)MSRPC_STATUS_CODE_NCA_S_FAULT_FP_OVERFLOW)MSRPC_STATUS_CODE_NCA_S_FAULT_INVALID_TAG+MSRPC_STATUS_CODE_NCA_S_FAULT_INVALID_BOUND,MSRPC_STATUS_CODE_NCA_S_RPC_VERSION_MISMATCH%MSRPC_STATUS_CODE_NCA_S_UNSPEC_REJECT!MSRPC_STATUS_CODE_NCA_S_BAD_ACTID*MSRPC_STATUS_CODE_NCA_S_WHO_ARE_YOU_FAILED+MSRPC_STATUS_CODE_NCA_S_MANAGER_NOT_ENTERED$MSRPC_STATUS_CODE_NCA_S_FAULT_CANCEL&MSRPC_STATUS_CODE_NCA_S_FAULT_ILL_INST&MSRPC_STATUS_CODE_NCA_S_FAULT_FP_ERROR*MSRPC_STATUS_CODE_NCA_S_FAULT_INT_OVERFLOW$MSRPC_STATUS_CODE_NCA_S_FAULT_UNSPEC1MSRPC_STATUS_CODE_NCA_S_FAULT_REMOTE_COMM_FAILURE(MSRPC_STATUS_CODE_NCA_S_FAULT_PIPE_EMPTY)MSRPC_STATUS_CODE_NCA_S_FAULT_PIPE_CLOSED(MSRPC_STATUS_CODE_NCA_S_FAULT_PIPE_ORDER-MSRPC_STATUS_CODE_NCA_S_FAULT_PIPE_DISCIPLINE-MSRPC_STATUS_CODE_NCA_S_FAULT_PIPE_COMM_ERROR)MSRPC_STATUS_CODE_NCA_S_FAULT_PIPE_MEMORY.MSRPC_STATUS_CODE_NCA_S_FAULT_CONTEXT_MISMATCH.MSRPC_STATUS_CODE_NCA_S_FAULT_REMOTE_NO_MEMORY/MSRPC_STATUS_CODE_NCA_S_INVALID_PRES_CONTEXT_ID/MSRPC_STATUS_CODE_NCA_S_UNSUPPORTED_AUTHN_LEVEL(MSRPC_STATUS_CODE_NCA_S_INVALID_CHECKSUM#MSRPC_STATUS_CODE_NCA_S_INVALID_CRC*MSRPC_STATUS_CODE_NCA_S_FAULT_USER_DEFINED,MSRPC_STATUS_CODE_NCA_S_FAULT_TX_OPEN_FAILED0MSRPC_STATUS_CODE_NCA_S_FAULT_CODESET_CONV_ERROR.MSRPC_STATUS_CODE_NCA_S_FAULT_OBJECT_NOT_FOUND,MSRPC_STATUS_CODE_NCA_S_FAULT_NO_CLIENT_STUBMSRPC_STATUS_CODE_RPC_S_MOD$MSRPC_STATUS_CODE_RPC_S_OP_RNG_ERROR*MSRPC_STATUS_CODE_RPC_S_CANT_CREATE_SOCKET(MSRPC_STATUS_CODE_RPC_S_CANT_BIND_SOCKET#MSRPC_STATUS_CODE_RPC_S_NOT_IN_CALLMSRPC_STATUS_CODE_RPC_S_NO_PORT'MSRPC_STATUS_CODE_RPC_S_WRONG_BOOT_TIME(MSRPC_STATUS_CODE_RPC_S_TOO_MANY_SOCKETS(MSRPC_STATUS_CODE_RPC_S_ILLEGAL_REGISTER!MSRPC_STATUS_CODE_RPC_S_CANT_RECVMSRPC_STATUS_CODE_RPC_S_BAD_PKT&MSRPC_STATUS_CODE_RPC_S_UNBOUND_HANDLE#MSRPC_STATUS_CODE_RPC_S_ADDR_IN_USE'MSRPC_STATUS_CODE_RPC_S_IN_ARGS_TOO_BIG'MSRPC_STATUS_CODE_RPC_S_STRING_TOO_LONG(MSRPC_STATUS_CODE_RPC_S_TOO_MANY_OBJECTS+MSRPC_STATUS_CODE_RPC_S_BINDING_HAS_NO_AUTH-MSRPC_STATUS_CODE_RPC_S_UNKNOWN_AUTHN_SERVICE!MSRPC_STATUS_CODE_RPC_S_NO_MEMORY$MSRPC_STATUS_CODE_RPC_S_CANT_NMALLOC$MSRPC_STATUS_CODE_RPC_S_CALL_FAULTED#MSRPC_STATUS_CODE_RPC_S_CALL_FAILED$MSRPC_STATUS_CODE_RPC_S_COMM_FAILURE)MSRPC_STATUS_CODE_RPC_S_RPCD_COMM_FAILURE-MSRPC_STATUS_CODE_RPC_S_ILLEGAL_FAMILY_REBIND&MSRPC_STATUS_CODE_RPC_S_INVALID_HANDLE$MSRPC_STATUS_CODE_RPC_S_CODING_ERROR(MSRPC_STATUS_CODE_RPC_S_OBJECT_NOT_FOUND)MSRPC_STATUS_CODE_RPC_S_CTHREAD_NOT_FOUND'MSRPC_STATUS_CODE_RPC_S_INVALID_BINDING*MSRPC_STATUS_CODE_RPC_S_ALREADY_REGISTERED*MSRPC_STATUS_CODE_RPC_S_ENDPOINT_NOT_FOUND+MSRPC_STATUS_CODE_RPC_S_INVALID_RPC_PROTSEQ+MSRPC_STATUS_CODE_RPC_S_DESC_NOT_REGISTERED)MSRPC_STATUS_CODE_RPC_S_ALREADY_LISTENING#MSRPC_STATUS_CODE_RPC_S_NO_PROTSEQS.MSRPC_STATUS_CODE_RPC_S_NO_PROTSEQS_REGISTERED#MSRPC_STATUS_CODE_RPC_S_NO_BINDINGS*MSRPC_STATUS_CODE_RPC_S_MAX_DESCS_EXCEEDED%MSRPC_STATUS_CODE_RPC_S_NO_INTERFACES'MSRPC_STATUS_CODE_RPC_S_INVALID_TIMEOUT'MSRPC_STATUS_CODE_RPC_S_CANT_INQ_SOCKET&MSRPC_STATUS_CODE_RPC_S_INVALID_NAF_ID&MSRPC_STATUS_CODE_RPC_S_INVAL_NET_ADDR"MSRPC_STATUS_CODE_RPC_S_UNKNOWN_IF(MSRPC_STATUS_CODE_RPC_S_UNSUPPORTED_TYPE(MSRPC_STATUS_CODE_RPC_S_INVALID_CALL_OPT MSRPC_STATUS_CODE_RPC_S_NO_FAULT&MSRPC_STATUS_CODE_RPC_S_CANCEL_TIMEOUT&MSRPC_STATUS_CODE_RPC_S_CALL_CANCELLED+MSRPC_STATUS_CODE_RPC_S_INVALID_CALL_HANDLE*MSRPC_STATUS_CODE_RPC_S_CANNOT_ALLOC_ASSOC&MSRPC_STATUS_CODE_RPC_S_CANNOT_CONNECT*MSRPC_STATUS_CODE_RPC_S_CONNECTION_ABORTED)MSRPC_STATUS_CODE_RPC_S_CONNECTION_CLOSED%MSRPC_STATUS_CODE_RPC_S_CANNOT_ACCEPT+MSRPC_STATUS_CODE_RPC_S_ASSOC_GRP_NOT_FOUND,MSRPC_STATUS_CODE_RPC_S_STUB_INTERFACE_ERROR&MSRPC_STATUS_CODE_RPC_S_INVALID_OBJECT$MSRPC_STATUS_CODE_RPC_S_INVALID_TYPE(MSRPC_STATUS_CODE_RPC_S_INVALID_IF_OPNUM1MSRPC_STATUS_CODE_RPC_S_DIFFERENT_SERVER_INSTANCE&MSRPC_STATUS_CODE_RPC_S_PROTOCOL_ERROR$MSRPC_STATUS_CODE_RPC_S_CANT_RECVMSG.MSRPC_STATUS_CODE_RPC_S_INVALID_STRING_BINDING)MSRPC_STATUS_CODE_RPC_S_CONNECT_TIMED_OUT(MSRPC_STATUS_CODE_RPC_S_CONNECT_REJECTED+MSRPC_STATUS_CODE_RPC_S_NETWORK_UNREACHABLE,MSRPC_STATUS_CODE_RPC_S_CONNECT_NO_RESOURCES,MSRPC_STATUS_CODE_RPC_S_REM_NETWORK_SHUTDOWN-MSRPC_STATUS_CODE_RPC_S_TOO_MANY_REM_CONNECTS'MSRPC_STATUS_CODE_RPC_S_NO_REM_ENDPOINT%MSRPC_STATUS_CODE_RPC_S_REM_HOST_DOWN(MSRPC_STATUS_CODE_RPC_S_HOST_UNREACHABLE/MSRPC_STATUS_CODE_RPC_S_ACCESS_CONTROL_INFO_INV+MSRPC_STATUS_CODE_RPC_S_LOC_CONNECT_ABORTED-MSRPC_STATUS_CODE_RPC_S_CONNECT_CLOSED_BY_REM(MSRPC_STATUS_CODE_RPC_S_REM_HOST_CRASHED/MSRPC_STATUS_CODE_RPC_S_INVALID_ENDPOINT_FORMAT+MSRPC_STATUS_CODE_RPC_S_UNKNOWN_STATUS_CODE(MSRPC_STATUS_CODE_RPC_S_UNKNOWN_MGR_TYPE-MSRPC_STATUS_CODE_RPC_S_ASSOC_CREATION_FAILED.MSRPC_STATUS_CODE_RPC_S_ASSOC_GRP_MAX_EXCEEDED.MSRPC_STATUS_CODE_RPC_S_ASSOC_GRP_ALLOC_FAILED(MSRPC_STATUS_CODE_RPC_S_SM_INVALID_STATE*MSRPC_STATUS_CODE_RPC_S_ASSOC_REQ_REJECTED&MSRPC_STATUS_CODE_RPC_S_ASSOC_SHUTDOWN-MSRPC_STATUS_CODE_RPC_S_TSYNTAXES_UNSUPPORTED,MSRPC_STATUS_CODE_RPC_S_CONTEXT_ID_NOT_FOUND*MSRPC_STATUS_CODE_RPC_S_CANT_LISTEN_SOCKET MSRPC_STATUS_CODE_RPC_S_NO_ADDRS(MSRPC_STATUS_CODE_RPC_S_CANT_GETPEERNAME&MSRPC_STATUS_CODE_RPC_S_CANT_GET_IF_ID-MSRPC_STATUS_CODE_RPC_S_PROTSEQ_NOT_SUPPORTED%MSRPC_STATUS_CODE_RPC_S_CALL_ORPHANED*MSRPC_STATUS_CODE_RPC_S_WHO_ARE_YOU_FAILED&MSRPC_STATUS_CODE_RPC_S_UNKNOWN_REJECT/MSRPC_STATUS_CODE_RPC_S_TYPE_ALREADY_REGISTERED/MSRPC_STATUS_CODE_RPC_S_STOP_LISTENING_DISABLED#MSRPC_STATUS_CODE_RPC_S_INVALID_ARG%MSRPC_STATUS_CODE_RPC_S_NOT_SUPPORTED-MSRPC_STATUS_CODE_RPC_S_WRONG_KIND_OF_BINDING,MSRPC_STATUS_CODE_RPC_S_AUTHN_AUTHZ_MISMATCH#MSRPC_STATUS_CODE_RPC_S_CALL_QUEUED*MSRPC_STATUS_CODE_RPC_S_CANNOT_SET_NODELAY%MSRPC_STATUS_CODE_RPC_S_NOT_RPC_TOWER*MSRPC_STATUS_CODE_RPC_S_INVALID_RPC_PROTID)MSRPC_STATUS_CODE_RPC_S_INVALID_RPC_FLOOR$MSRPC_STATUS_CODE_RPC_S_CALL_TIMEOUT*MSRPC_STATUS_CODE_RPC_S_MGMT_OP_DISALLOWED+MSRPC_STATUS_CODE_RPC_S_MANAGER_NOT_ENTERED1MSRPC_STATUS_CODE_RPC_S_CALLS_TOO_LARGE_FOR_WK_EP'MSRPC_STATUS_CODE_RPC_S_SERVER_TOO_BUSY-MSRPC_STATUS_CODE_RPC_S_PROT_VERSION_MISMATCH1MSRPC_STATUS_CODE_RPC_S_RPC_PROT_VERSION_MISMATCH+MSRPC_STATUS_CODE_RPC_S_SS_NO_IMPORT_CURSOR(MSRPC_STATUS_CODE_RPC_S_FAULT_ADDR_ERROR.MSRPC_STATUS_CODE_RPC_S_FAULT_CONTEXT_MISMATCH,MSRPC_STATUS_CODE_RPC_S_FAULT_FP_DIV_BY_ZERO&MSRPC_STATUS_CODE_RPC_S_FAULT_FP_ERROR)MSRPC_STATUS_CODE_RPC_S_FAULT_FP_OVERFLOW*MSRPC_STATUS_CODE_RPC_S_FAULT_FP_UNDERFLOW&MSRPC_STATUS_CODE_RPC_S_FAULT_ILL_INST-MSRPC_STATUS_CODE_RPC_S_FAULT_INT_DIV_BY_ZERO*MSRPC_STATUS_CODE_RPC_S_FAULT_INT_OVERFLOW+MSRPC_STATUS_CODE_RPC_S_FAULT_INVALID_BOUND)MSRPC_STATUS_CODE_RPC_S_FAULT_INVALID_TAG)MSRPC_STATUS_CODE_RPC_S_FAULT_PIPE_CLOSED-MSRPC_STATUS_CODE_RPC_S_FAULT_PIPE_COMM_ERROR-MSRPC_STATUS_CODE_RPC_S_FAULT_PIPE_DISCIPLINE(MSRPC_STATUS_CODE_RPC_S_FAULT_PIPE_EMPTY)MSRPC_STATUS_CODE_RPC_S_FAULT_PIPE_MEMORY(MSRPC_STATUS_CODE_RPC_S_FAULT_PIPE_ORDER1MSRPC_STATUS_CODE_RPC_S_FAULT_REMOTE_COMM_FAILURE.MSRPC_STATUS_CODE_RPC_S_FAULT_REMOTE_NO_MEMORY$MSRPC_STATUS_CODE_RPC_S_FAULT_UNSPEC$MSRPC_STATUS_CODE_UUID_S_BAD_VERSION'MSRPC_STATUS_CODE_UUID_S_SOCKET_FAILURE(MSRPC_STATUS_CODE_UUID_S_GETCONF_FAILURE#MSRPC_STATUS_CODE_UUID_S_NO_ADDRESS MSRPC_STATUS_CODE_UUID_S_OVERRUN'MSRPC_STATUS_CODE_UUID_S_INTERNAL_ERROR%MSRPC_STATUS_CODE_UUID_S_CODING_ERROR,MSRPC_STATUS_CODE_UUID_S_INVALID_STRING_UUID"MSRPC_STATUS_CODE_UUID_S_NO_MEMORY'MSRPC_STATUS_CODE_RPC_S_NO_MORE_ENTRIES(MSRPC_STATUS_CODE_RPC_S_UNKNOWN_NS_ERROR0MSRPC_STATUS_CODE_RPC_S_NAME_SERVICE_UNAVAILABLE'MSRPC_STATUS_CODE_RPC_S_INCOMPLETE_NAME'MSRPC_STATUS_CODE_RPC_S_GROUP_NOT_FOUND+MSRPC_STATUS_CODE_RPC_S_INVALID_NAME_SYNTAX'MSRPC_STATUS_CODE_RPC_S_NO_MORE_MEMBERS*MSRPC_STATUS_CODE_RPC_S_NO_MORE_INTERFACES,MSRPC_STATUS_CODE_RPC_S_INVALID_NAME_SERVICE'MSRPC_STATUS_CODE_RPC_S_NO_NAME_MAPPING)MSRPC_STATUS_CODE_RPC_S_PROFILE_NOT_FOUND!MSRPC_STATUS_CODE_RPC_S_NOT_FOUND"MSRPC_STATUS_CODE_RPC_S_NO_UPDATES%MSRPC_STATUS_CODE_RPC_S_UPDATE_FAILED)MSRPC_STATUS_CODE_RPC_S_NO_MATCH_EXPORTED'MSRPC_STATUS_CODE_RPC_S_ENTRY_NOT_FOUND/MSRPC_STATUS_CODE_RPC_S_INVALID_INQUIRY_CONTEXT+MSRPC_STATUS_CODE_RPC_S_INTERFACE_NOT_FOUND.MSRPC_STATUS_CODE_RPC_S_GROUP_MEMBER_NOT_FOUND,MSRPC_STATUS_CODE_RPC_S_ENTRY_ALREADY_EXISTS&MSRPC_STATUS_CODE_RPC_S_NSINIT_FAILURE/MSRPC_STATUS_CODE_RPC_S_UNSUPPORTED_NAME_SYNTAX(MSRPC_STATUS_CODE_RPC_S_NO_MORE_ELEMENTS(MSRPC_STATUS_CODE_RPC_S_NO_NS_PERMISSION,MSRPC_STATUS_CODE_RPC_S_INVALID_INQUIRY_TYPE1MSRPC_STATUS_CODE_RPC_S_PROFILE_ELEMENT_NOT_FOUND0MSRPC_STATUS_CODE_RPC_S_PROFILE_ELEMENT_REPLACED+MSRPC_STATUS_CODE_RPC_S_IMPORT_ALREADY_DONE%MSRPC_STATUS_CODE_RPC_S_DATABASE_BUSY.MSRPC_STATUS_CODE_RPC_S_INVALID_IMPORT_CONTEXT*MSRPC_STATUS_CODE_RPC_S_UUID_SET_NOT_FOUND-MSRPC_STATUS_CODE_RPC_S_UUID_MEMBER_NOT_FOUND.MSRPC_STATUS_CODE_RPC_S_NO_INTERFACES_EXPORTED+MSRPC_STATUS_CODE_RPC_S_TOWER_SET_NOT_FOUND.MSRPC_STATUS_CODE_RPC_S_TOWER_MEMBER_NOT_FOUND*MSRPC_STATUS_CODE_RPC_S_OBJ_UUID_NOT_FOUND(MSRPC_STATUS_CODE_RPC_S_NO_MORE_BINDINGS(MSRPC_STATUS_CODE_RPC_S_INVALID_PRIORITY%MSRPC_STATUS_CODE_RPC_S_NOT_RPC_ENTRY.MSRPC_STATUS_CODE_RPC_S_INVALID_LOOKUP_CONTEXT+MSRPC_STATUS_CODE_RPC_S_BINDING_VECTOR_FULL&MSRPC_STATUS_CODE_RPC_S_CYCLE_DETECTED)MSRPC_STATUS_CODE_RPC_S_NOTHING_TO_EXPORT+MSRPC_STATUS_CODE_RPC_S_NOTHING_TO_UNEXPORT+MSRPC_STATUS_CODE_RPC_S_INVALID_VERS_OPTION#MSRPC_STATUS_CODE_RPC_S_NO_RPC_DATA"MSRPC_STATUS_CODE_RPC_S_MBR_PICKED/MSRPC_STATUS_CODE_RPC_S_NOT_ALL_OBJS_UNEXPORTED%MSRPC_STATUS_CODE_RPC_S_NO_ENTRY_NAME+MSRPC_STATUS_CODE_RPC_S_PRIORITY_GROUP_DONE'MSRPC_STATUS_CODE_RPC_S_PARTIAL_RESULTS$MSRPC_STATUS_CODE_RPC_S_NO_ENV_SETUP"MSRPC_STATUS_CODE_TWR_S_UNKNOWN_SA%MSRPC_STATUS_CODE_TWR_S_UNKNOWN_TOWER'MSRPC_STATUS_CODE_TWR_S_NOT_IMPLEMENTED+MSRPC_STATUS_CODE_RPC_S_MAX_CALLS_TOO_SMALL-MSRPC_STATUS_CODE_RPC_S_CTHREAD_CREATE_FAILED+MSRPC_STATUS_CODE_RPC_S_CTHREAD_POOL_EXISTS,MSRPC_STATUS_CODE_RPC_S_CTHREAD_NO_SUCH_POOL/MSRPC_STATUS_CODE_RPC_S_CTHREAD_INVOKE_DISABLED'MSRPC_STATUS_CODE_EPT_S_CANT_PERFORM_OP!MSRPC_STATUS_CODE_EPT_S_NO_MEMORY(MSRPC_STATUS_CODE_EPT_S_DATABASE_INVALID#MSRPC_STATUS_CODE_EPT_S_CANT_CREATE#MSRPC_STATUS_CODE_EPT_S_CANT_ACCESS-MSRPC_STATUS_CODE_EPT_S_DATABASE_ALREADY_OPEN%MSRPC_STATUS_CODE_EPT_S_INVALID_ENTRY%MSRPC_STATUS_CODE_EPT_S_UPDATE_FAILED'MSRPC_STATUS_CODE_EPT_S_INVALID_CONTEXT&MSRPC_STATUS_CODE_EPT_S_NOT_REGISTERED*MSRPC_STATUS_CODE_EPT_S_SERVER_UNAVAILABLE+MSRPC_STATUS_CODE_RPC_S_UNDERSPECIFIED_NAME)MSRPC_STATUS_CODE_RPC_S_INVALID_NS_HANDLE%MSRPC_STATUS_CODE_RPC_S_UNKNOWN_ERROR/MSRPC_STATUS_CODE_RPC_S_SS_CHAR_TRANS_OPEN_FAIL0MSRPC_STATUS_CODE_RPC_S_SS_CHAR_TRANS_SHORT_FILE*MSRPC_STATUS_CODE_RPC_S_SS_CONTEXT_DAMAGED*MSRPC_STATUS_CODE_RPC_S_SS_IN_NULL_CONTEXT&MSRPC_STATUS_CODE_RPC_S_SOCKET_FAILURE1MSRPC_STATUS_CODE_RPC_S_UNSUPPORTED_PROTECT_LEVEL(MSRPC_STATUS_CODE_RPC_S_INVALID_CHECKSUM+MSRPC_STATUS_CODE_RPC_S_INVALID_CREDENTIALS-MSRPC_STATUS_CODE_RPC_S_CREDENTIALS_TOO_LARGE)MSRPC_STATUS_CODE_RPC_S_CALL_ID_NOT_FOUND(MSRPC_STATUS_CODE_RPC_S_KEY_ID_NOT_FOUND*MSRPC_STATUS_CODE_RPC_S_AUTH_BAD_INTEGRITY(MSRPC_STATUS_CODE_RPC_S_AUTH_TKT_EXPIRED$MSRPC_STATUS_CODE_RPC_S_AUTH_TKT_NYV#MSRPC_STATUS_CODE_RPC_S_AUTH_REPEAT#MSRPC_STATUS_CODE_RPC_S_AUTH_NOT_US%MSRPC_STATUS_CODE_RPC_S_AUTH_BADMATCH!MSRPC_STATUS_CODE_RPC_S_AUTH_SKEW$MSRPC_STATUS_CODE_RPC_S_AUTH_BADADDR'MSRPC_STATUS_CODE_RPC_S_AUTH_BADVERSION%MSRPC_STATUS_CODE_RPC_S_AUTH_MSG_TYPE%MSRPC_STATUS_CODE_RPC_S_AUTH_MODIFIED%MSRPC_STATUS_CODE_RPC_S_AUTH_BADORDER&MSRPC_STATUS_CODE_RPC_S_AUTH_BADKEYVER"MSRPC_STATUS_CODE_RPC_S_AUTH_NOKEY%MSRPC_STATUS_CODE_RPC_S_AUTH_MUT_FAIL)MSRPC_STATUS_CODE_RPC_S_AUTH_BADDIRECTION#MSRPC_STATUS_CODE_RPC_S_AUTH_METHOD#MSRPC_STATUS_CODE_RPC_S_AUTH_BADSEQ(MSRPC_STATUS_CODE_RPC_S_AUTH_INAPP_CKSUM*MSRPC_STATUS_CODE_RPC_S_AUTH_FIELD_TOOLONG#MSRPC_STATUS_CODE_RPC_S_INVALID_CRC*MSRPC_STATUS_CODE_RPC_S_BINDING_INCOMPLETE,MSRPC_STATUS_CODE_RPC_S_KEY_FUNC_NOT_ALLOWED0MSRPC_STATUS_CODE_RPC_S_UNKNOWN_STUB_RTL_IF_VERS+MSRPC_STATUS_CODE_RPC_S_UNKNOWN_IFSPEC_VERS,MSRPC_STATUS_CODE_RPC_S_PROTO_UNSUPP_BY_AUTH1MSRPC_STATUS_CODE_RPC_S_AUTHN_CHALLENGE_MALFORMED.MSRPC_STATUS_CODE_RPC_S_PROTECT_LEVEL_MISMATCHMSRPC_STATUS_CODE_RPC_S_NO_MEPV+MSRPC_STATUS_CODE_RPC_S_STUB_PROTOCOL_ERROR.MSRPC_STATUS_CODE_RPC_S_CLASS_VERSION_MISMATCH*MSRPC_STATUS_CODE_RPC_S_HELPER_NOT_RUNNING)MSRPC_STATUS_CODE_RPC_S_HELPER_SHORT_READ(MSRPC_STATUS_CODE_RPC_S_HELPER_CATATONIC&MSRPC_STATUS_CODE_RPC_S_HELPER_ABORTED%MSRPC_STATUS_CODE_RPC_S_NOT_IN_KERNEL)MSRPC_STATUS_CODE_RPC_S_HELPER_WRONG_USER'MSRPC_STATUS_CODE_RPC_S_HELPER_OVERFLOW(MSRPC_STATUS_CODE_RPC_S_DG_NEED_WAY_AUTH0MSRPC_STATUS_CODE_RPC_S_UNSUPPORTED_AUTH_SUBTYPE)MSRPC_STATUS_CODE_RPC_S_WRONG_PICKLE_TYPE%MSRPC_STATUS_CODE_RPC_S_NOT_LISTENING%MSRPC_STATUS_CODE_RPC_S_SS_BAD_BUFFER(MSRPC_STATUS_CODE_RPC_S_SS_BAD_ES_ACTION+MSRPC_STATUS_CODE_RPC_S_SS_WRONG_ES_VERSION*MSRPC_STATUS_CODE_RPC_S_FAULT_USER_DEFINED0MSRPC_STATUS_CODE_RPC_S_SS_INCOMPATIBLE_CODESETS-MSRPC_STATUS_CODE_RPC_S_TX_NOT_IN_TRANSACTION&MSRPC_STATUS_CODE_RPC_S_TX_OPEN_FAILED+MSRPC_STATUS_CODE_RPC_S_PARTIAL_CREDENTIALS.MSRPC_STATUS_CODE_RPC_S_SS_INVALID_CODESET_TAG%MSRPC_STATUS_CODE_RPC_S_MGMT_BAD_TYPE-MSRPC_STATUS_CODE_RPC_S_SS_INVALID_CHAR_INPUT,MSRPC_STATUS_CODE_RPC_S_SS_SHORT_CONV_BUFFER&MSRPC_STATUS_CODE_RPC_S_SS_ICONV_ERROR,MSRPC_STATUS_CODE_RPC_S_SS_NO_COMPAT_CODESET-MSRPC_STATUS_CODE_RPC_S_SS_NO_COMPAT_CHARSETSMSRPC_STATUS_CODE_DCE_CS_C_OK"MSRPC_STATUS_CODE_DCE_CS_C_UNKNOWN#MSRPC_STATUS_CODE_DCE_CS_C_NOTFOUND+MSRPC_STATUS_CODE_DCE_CS_C_CANNOT_OPEN_FILE+MSRPC_STATUS_CODE_DCE_CS_C_CANNOT_READ_FILE1MSRPC_STATUS_CODE_DCE_CS_C_CANNOT_ALLOCATE_MEMORY)MSRPC_STATUS_CODE_RPC_S_SS_CLEANUP_FAILED&MSRPC_STATUS_CODE_RPC_SVC_DESC_GENERAL$MSRPC_STATUS_CODE_RPC_SVC_DESC_MUTEX#MSRPC_STATUS_CODE_RPC_SVC_DESC_XMIT#MSRPC_STATUS_CODE_RPC_SVC_DESC_RECV'MSRPC_STATUS_CODE_RPC_SVC_DESC_DG_STATE%MSRPC_STATUS_CODE_RPC_SVC_DESC_CANCEL%MSRPC_STATUS_CODE_RPC_SVC_DESC_ORPHAN'MSRPC_STATUS_CODE_RPC_SVC_DESC_CN_STATE%MSRPC_STATUS_CODE_RPC_SVC_DESC_CN_PKT)MSRPC_STATUS_CODE_RPC_SVC_DESC_PKT_QUOTAS#MSRPC_STATUS_CODE_RPC_SVC_DESC_AUTH%MSRPC_STATUS_CODE_RPC_SVC_DESC_SOURCE$MSRPC_STATUS_CODE_RPC_SVC_DESC_STATS"MSRPC_STATUS_CODE_RPC_SVC_DESC_MEM'MSRPC_STATUS_CODE_RPC_SVC_DESC_MEM_TYPE(MSRPC_STATUS_CODE_RPC_SVC_DESC_DG_PKTLOG(MSRPC_STATUS_CODE_RPC_SVC_DESC_THREAD_ID(MSRPC_STATUS_CODE_RPC_SVC_DESC_TIMESTAMP(MSRPC_STATUS_CODE_RPC_SVC_DESC_CN_ERRORS*MSRPC_STATUS_CODE_RPC_SVC_DESC_CONV_THREAD"MSRPC_STATUS_CODE_RPC_SVC_DESC_PID%MSRPC_STATUS_CODE_RPC_SVC_DESC_ATFORK)MSRPC_STATUS_CODE_RPC_SVC_DESC_CMA_THREAD&MSRPC_STATUS_CODE_RPC_SVC_DESC_INHERIT)MSRPC_STATUS_CODE_RPC_SVC_DESC_DG_SOCKETS$MSRPC_STATUS_CODE_RPC_SVC_DESC_TIMER&MSRPC_STATUS_CODE_RPC_SVC_DESC_THREADS*MSRPC_STATUS_CODE_RPC_SVC_DESC_SERVER_CALL"MSRPC_STATUS_CODE_RPC_SVC_DESC_NSI%MSRPC_STATUS_CODE_RPC_SVC_DESC_DG_PKT-MSRPC_STATUS_CODE_RPC_M_CN_ILL_STATE_TRANS_SA-MSRPC_STATUS_CODE_RPC_M_CN_ILL_STATE_TRANS_CA-MSRPC_STATUS_CODE_RPC_M_CN_ILL_STATE_TRANS_SG-MSRPC_STATUS_CODE_RPC_M_CN_ILL_STATE_TRANS_CG-MSRPC_STATUS_CODE_RPC_M_CN_ILL_STATE_TRANS_SR-MSRPC_STATUS_CODE_RPC_M_CN_ILL_STATE_TRANS_CR$MSRPC_STATUS_CODE_RPC_M_BAD_PKT_TYPE%MSRPC_STATUS_CODE_RPC_M_PROT_MISMATCH#MSRPC_STATUS_CODE_RPC_M_FRAG_TOOBIG*MSRPC_STATUS_CODE_RPC_M_UNSUPP_STUB_RTL_IF+MSRPC_STATUS_CODE_RPC_M_UNHANDLED_CALLSTATE#MSRPC_STATUS_CODE_RPC_M_CALL_FAILED-MSRPC_STATUS_CODE_RPC_M_CALL_FAILED_NO_STATUS)MSRPC_STATUS_CODE_RPC_M_CALL_FAILED_ERRNO%MSRPC_STATUS_CODE_RPC_M_CALL_FAILED_S%MSRPC_STATUS_CODE_RPC_M_CALL_FAILED_C%MSRPC_STATUS_CODE_RPC_M_ERRMSG_TOOBIG(MSRPC_STATUS_CODE_RPC_M_INVALID_SRCHATTR%MSRPC_STATUS_CODE_RPC_M_NTS_NOT_FOUND)MSRPC_STATUS_CODE_RPC_M_INVALID_ACCBYTCNT%MSRPC_STATUS_CODE_RPC_M_PRE_V2_IFSPEC"MSRPC_STATUS_CODE_RPC_M_UNK_IFSPEC(MSRPC_STATUS_CODE_RPC_M_RECVBUF_TOOSMALL'MSRPC_STATUS_CODE_RPC_M_UNALIGN_AUTHTRL&MSRPC_STATUS_CODE_RPC_M_UNEXPECTED_EXC$MSRPC_STATUS_CODE_RPC_M_NO_STUB_DATA&MSRPC_STATUS_CODE_RPC_M_EVENTLIST_FULL%MSRPC_STATUS_CODE_RPC_M_UNK_SOCK_TYPE"MSRPC_STATUS_CODE_RPC_M_UNIMP_CALL&MSRPC_STATUS_CODE_RPC_M_INVALID_SEQNUM(MSRPC_STATUS_CODE_RPC_M_CANT_CREATE_UUID!MSRPC_STATUS_CODE_RPC_M_PRE_V2_SS*MSRPC_STATUS_CODE_RPC_M_DGPKT_POOL_CORRUPT&MSRPC_STATUS_CODE_RPC_M_DGPKT_BAD_FREE)MSRPC_STATUS_CODE_RPC_M_LOOKASIDE_CORRUPT"MSRPC_STATUS_CODE_RPC_M_ALLOC_FAIL$MSRPC_STATUS_CODE_RPC_M_REALLOC_FAIL&MSRPC_STATUS_CODE_RPC_M_CANT_OPEN_FILE&MSRPC_STATUS_CODE_RPC_M_CANT_READ_ADDR%MSRPC_STATUS_CODE_RPC_SVC_DESC_LIBIDL(MSRPC_STATUS_CODE_RPC_M_CTXRUNDOWN_NOMEM&MSRPC_STATUS_CODE_RPC_M_CTXRUNDOWN_EXC0MSRPC_STATUS_CODE_RPC_S_FAULT_CODESET_CONV_ERROR&MSRPC_STATUS_CODE_RPC_S_NO_CALL_ACTIVE,MSRPC_STATUS_CODE_RPC_S_NO_CONTEXT_AVAILABLE*MSRPC_BIND_TIME_FEATURE_NEGOTIATION_PREFIXSMSRPC_BIND_TIME_FEATURE_NEGOTIATION_SECURITY_CONTEXT_MULTIPLEXING_SUPPORTED_BITMASKOMSRPC_BIND_TIME_FEATURE_NEGOTIATION_KEEP_CONNECTION_ON_ORPHAN_SUPPORTED_BITMASKMSRPC_STANDARD_NDR_SYNTAXr  r  r  r  r  r  r4  r?  rF  rn  rt  r  r  r  r  r  r  rb  rk  rn  rq  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'*-3
g    *

