o
    j                    @   s~	  d dl mZ d dl mZ d dlZd dlmZ d dlmZmZ d dl	m
Z
mZmZmZmZmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZmZ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(m)Z)m*Z*m+Z+m,Z,m-Z- d dl.m/Z/ e#dZ0e#dZ1e#dZ2e#dZ3e#dZ4e#dZ5e#dZ6e#dZ7e#dZ8e#dZ9e#dZ:e#dZ;e#dZ<e#dZ=e#dZ>e$dZ?e$dZ@e$dZAe$dZBe$dZCe$dZDe$d ZEe$d!ZFe$d"ZGe$d#ZHd$ZId%ZJd&ZKd'ZLd(ZMd)ZNd*ZOd+ZPd,ZQd-ZRd%ZSd.ZTd/ZUd0ZVd1ZWd2ZXd3ZYd4ZZd5Z[d6Z\d7Z]d8Z^d9Z_d:Z`d;Zad<ZbG d=d> d>e-ZceZdG d?d@ d@eZeG dAdB dBeZfeZgeZheZieZjeZkeZleZmeZndCZod+Zpd-Zqd'ZrdDZsd+ZtdCZud+Zvd-Zwd+Zxd-Zyd'Zzd:Z{dCZ|dEZ}dEZ~dCZd)ZG dFdG dGeZG dHdI dIeZG dJdK dKeZG dLdM dMeZG dNdO dOeZG dPdQ dQeZG dRdS dSeZG dTdU dUeZG dVdW dWeZG dXdY dYeZG dZd[ d[eZG d\d] d]eZG d^d_ d_eZG d`da daeZG dbdc dceZG ddde deeZG dfdg dgeZG dhdi dieZG djdk dkeZG dldm dmeZG dndo doeZG dpdq dqeZG drds dseZG dtdu dueZG dvdw dweZG dxdy dyeZG dzd{ d{eZG d|d} d}eZG d~d deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd de'ZG dd deZG dd deZG dd deZG dd de'ZG dd de'ZG dd de'ZG dd deZG dd deZG dd de'ZG dd de'ZG dd de'ZG dd deZG dd deZG dd de'ZG dd deZG dd deZG dd de'ZG dd deZG dd deZG ddÄ deZG ddń deZG ddǄ deZG ddɄ de'ZG dd˄ deZG dd̈́ deZG ddτ deZG ddф deZeZG ddӄ de
ZG ddՄ de
ZG ddׄ de
ZG ddل de
ZG ddۄ de
ZG dd݄ de
ZG dd߄ de
ZG dd de
ZG dd de
ZG dd de
ZG dd de
ZG dd de
ZG dd de
ZG dd de
ZG dd de
ZG dd de
ZG dd de
ZG dd de
ZG dd de
ZG dd de
ZG dd deȃZG dd deɃZG dd deȃZG d d deɃZG dd deȃZG dd deɃZi ZG dd dZG dd	 d	ZG d
d dZG dd deZG dd deZG dd dZG dd dZG dd dZdS (      )division)print_functionNpack)Timercurrent_thread)NDRCALL	NDRSTRUCT
NDRPOINTERNDRUniConformantArrayNDRTLSTRUCTUNKNOWNDATA)LPWSTR	ULONGLONGHRESULTGUIDUSHORTWSTRDWORDLPLONGLONGPGUIDULONGUUIDWIDESTRNULL)hresult_errorsLOG)string_to_binuuidtup_to_bingenerate)TypeSerialization1RPC_C_AUTHN_LEVEL_PKT_INTEGRITYRPC_C_AUTHN_LEVEL_NONERPC_C_AUTHN_LEVEL_PKT_PRIVACYRPC_C_AUTHN_GSS_NEGOTIATERPC_C_AUTHN_WINNTDCERPCException)	transportz$000001a5-0000-0000-c000-000000000046z$00000338-0000-0000-c000-000000000046z$00000339-0000-0000-c000-000000000046z$00000334-0000-0000-c000-000000000046z$0000033b-0000-0000-c000-000000000046z$0000031c-0000-0000-c000-000000000046z$0000031b-0000-0000-c000-000000000046z$000001ad-0000-0000-c000-000000000046z$000001ab-0000-0000-c000-000000000046z$000001b6-0000-0000-c000-000000000046z$000001aa-0000-0000-c000-000000000046z$000001a6-0000-0000-c000-000000000046z$000001a4-0000-0000-c000-000000000046z$000001b9-0000-0000-c000-000000000046)z$4d9f4ab8-7d1c-11cf-861e-0020af6e7c570.0)z$000001A2-0000-0000-C000-000000000046r)   )z$000001A3-0000-0000-C000-000000000046r)   )z$000001c0-0000-0000-C000-000000000046r)   )z$99fcfec4-5260-101b-bbcb-00aa0021347ar)   )z$000001A0-0000-0000-C000-000000000046r)   )z$00000131-0000-0000-C000-000000000046r)   )z$00000143-0000-0000-C000-000000000046r)   )z$00000000-0000-0000-C000-000000000046r)   )z$00000001-0000-0000-C000-000000000046r)               	   
                                                       !   "   c                   @   s   e Zd ZdddZdd ZdS )DCERPCSessionErrorNc                 C   s   t | ||| d S N)r'   __init__)selferror_string
error_codepacket rJ   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/impacket/dcerpc/v5/dcomrt.pyrE   g   s   zDCERPCSessionError.__init__c                 C   sF   | j tjv rtj| j  d }tj| j  d }d| j ||f S d| j  S )Nr      z'DCOM SessionError: code: 0x%x - %s - %sz+DCOM SessionError: unknown error code: 0x%x)rH   r   ERROR_MESSAGES)rF   error_msg_shorterror_msg_verboserJ   rJ   rK   __str__j   s
   
zDCERPCSessionError.__str__)NNN)__name__
__module____qualname__rE   rP   rJ   rJ   rJ   rK   rC   f   s    
rC   c                   @      e Zd ZeZdS )	OID_ARRAYN)rQ   rR   rS   OIDitemrJ   rJ   rJ   rK   rU   x       rU   c                   @      e Zd ZdeffZdS )
POID_ARRAYDataN)rQ   rR   rS   rU   referentrJ   rJ   rJ   rK   rZ   {       rZ   rL   i   i   c                   @   s.   e Zd ZdefdeffZd	ddZdd ZdS )
handle_tcontext_handle_attributescontext_handle_uuidNFc                 C   s   t | || d| d< d S )N                   r`   r	   rE   rF   dataisNDR64rJ   rJ   rK   rE      s   zhandle_t.__init__c                 C   s   | d dkS )Nr`   ra   rJ   rF   rJ   rJ   rK   isNull      zhandle_t.isNullNF)rQ   rR   rS   r   r   	structurerE   rg   rJ   rJ   rJ   rK   r^      s    
r^   c                   @   s<   e Zd ZdZdZdefdeffZedddZdd	d
Z	dS )
COMVERSIONr*   r,   MajorVersionMinorVersionNc                 C   s$   |d ur|| _ |d ur|| _d S d S rD   )default_major_versiondefault_minor_version)clsmajor_versionminor_versionrJ   rJ   rK   set_default_version   s
   
zCOMVERSION.set_default_versionFc                 C   s2   t | || |d u r| j| d< | j| d< d S d S )Nrl   rm   )r	   rE   rn   ro   rc   rJ   rJ   rK   rE      s
   
zCOMVERSION.__init__NNri   )
rQ   rR   rS   rn   ro   r   rj   classmethodrs   rE   rJ   rJ   rJ   rK   rk      s    rk   c                   @   rY   )PCOMVERSIONr[   N)rQ   rR   rS   rk   r\   rJ   rJ   rJ   rK   rv      r]   rv   c                   @      e Zd ZdZdS )
BYTE_ARRAYcNrQ   rR   rS   rW   rJ   rJ   rJ   rK   rx      rX   rx   c                   @   "   e Zd ZdefdefdeffZdS )ORPC_EXTENTidsizerd   N)rQ   rR   rS   r   r   rx   rj   rJ   rJ   rJ   rK   r|      
    r|   c                   @   rY   )PORPC_EXTENTr[   N)rQ   rR   rS   r|   r\   rJ   rJ   rJ   rK   r      r]   r   c                   @   rT   )EXTENT_ARRAYN)rQ   rR   rS   r   rW   rJ   rJ   rJ   rK   r      rX   r   c                   @   rY   )PEXTENT_ARRAYr[   N)rQ   rR   rS   r   r\   rJ   rJ   rJ   rK   r      r]   r   c                   @   "   e Zd ZdefdefdeffZdS )ORPC_EXTENT_ARRAYr~   reservedextentN)rQ   rR   rS   r   r   rj   rJ   rJ   rJ   rK   r      r   r   c                   @   rY   )PORPC_EXTENT_ARRAYr[   N)rQ   rR   rS   r   r\   rJ   rJ   rJ   rK   r     r]   r   c                   @   s.   e Zd ZdefdefdefdefdeffZdS )ORPCTHISversionflags	reserved1cid
extensionsN)rQ   rR   rS   rk   r   CIDr   rj   rJ   rJ   rJ   rK   r         r   c                   @      e Zd ZdefdeffZdS )ORPCTHATr   r   N)rQ   rR   rS   r   r   rj   rJ   rJ   rJ   rK   r         r   c                   @   r   )MInterfacePointer	ulCntDataabDataN)rQ   rR   rS   r   rx   rj   rJ   rJ   rJ   rK   r     r   r   c                   @   rY   )PMInterfacePointerInternalr[   NrQ   rR   rS   r   r\   rJ   rJ   rJ   rK   r   $  r]   r   c                   @   rY   )PMInterfacePointerr[   Nr   rJ   rJ   rJ   rK   r   *  r]   r   c                   @   rY   )PPMInterfacePointerr[   N)rQ   rR   rS   r   r\   rJ   rJ   rJ   rK   r   /  r]   r   c                   @   s,   e Zd ZdefdefdeffZdddZdS )	OBJREF	signaturer   iidNFc                 C   &   t | || |d u rd| d< d S d S )NiMEOWr   rb   rc   rJ   rJ   rK   rE   ;     zOBJREF.__init__ri   )rQ   rR   rS   r   r   	commonHdrrE   rJ   rJ   rJ   rK   r   5  s    r   c                   @   s.   e Zd ZdefdefdefdefdeffZdS )	STDOBJREFr   cPublicRefsoxidoidipidN)rQ   rR   rS   r   OXIDrV   IPIDrj   rJ   rJ   rJ   rK   r   A  r   r   c                   @   s"   e Zd ZdefdfZdddZdS )OBJREF_STANDARDstd	saResAddr:NFc                 C   &   t | || |d u rt| d< d S d S Nr   )r   rE   FLAGS_OBJREF_STANDARDrc   rJ   rJ   rK   rE   P  r   zOBJREF_STANDARD.__init__ri   )rQ   rR   rS   r   rj   rE   rJ   rJ   rJ   rK   r   K  s
    r   c                   @   s(   e Zd ZdefdefdfZdddZdS )	OBJREF_HANDLERr   clsidr   NFc                 C   r   r   )r   rE   FLAGS_OBJREF_HANDLERrc   rJ   rJ   rK   rE   \  r   zOBJREF_HANDLER.__init__ri   )rQ   rR   rS   r   CLSIDrj   rE   rJ   rJ   rJ   rK   r   V      r   c                   @   s.   e Zd ZdefdefdefdfZd	ddZdS )
OBJREF_CUSTOMr   cbExtensionObjectReferenceSize)pObjectDatar   NFc                 C   r   r   )r   rE   FLAGS_OBJREF_CUSTOMrc   rJ   rJ   rK   rE   i  r   zOBJREF_CUSTOM.__init__ri   )rQ   rR   rS   r   r   rj   rE   rJ   rJ   rJ   rK   r   b  s    r   c                   @   s$   e Zd ZdefdefdefdfZdS )DATAELEMENTdataIDcbSize	cbRounded)r[   r   N)rQ   rR   rS   r   r   rj   rJ   rJ   rJ   rK   r   o  s    r   c                   @   s(   e Zd ZdefdefdfZdddZdS )	DUALSTRINGARRAYPACKEDwNumEntrieswSecurityOffset)aStringArrayr   r   c                 C   s   | d d S )Nr   r1   rJ   )rF   rd   offsetrJ   rJ   rK   
getDataLen}  rh   z DUALSTRINGARRAYPACKED.getDataLenNr   )rQ   rR   rS   r   rj   r   rJ   rJ   rJ   rK   r   w  r   r   c                   @   s>   e Zd ZdefdefdefdefdefdeffZdd	d
ZdS )OBJREF_EXTENDEDr   
Signature1r   nElms
Signature2ElmArrayNFc                 C   s>   t | || |d u rt| d< d| d< d| d< d| d< d S d S )Nr   iVYSNr   r   )r   rE   FLAGS_OBJREF_EXTENDEDrc   rJ   rJ   rK   rE     s   zOBJREF_EXTENDED.__init__ri   )	rQ   rR   rS   r   r   r   r   rj   rE   rJ   rJ   rJ   rK   r     s    r   c                   @   rw   )USHORT_ARRAY<HNrz   rJ   rJ   rJ   rK   r     rX   r   c                   @   rY   )PUSHORT_ARRAYr[   N)rQ   rR   rS   r   r\   rJ   rJ   rJ   rK   r     r]   r   c                   @   r   )DUALSTRINGARRAYr   r   r   N)rQ   rR   rS   r   r   rj   rJ   rJ   rJ   rK   r     r   r   c                   @   rY   )PDUALSTRINGARRAYr[   N)rQ   rR   rS   r   r\   rJ   rJ   rJ   rK   r     r]   r   c                   @   r   )STRINGBINDINGwTowerIdaNetworkAddrNrQ   rR   rS   r   r   rj   rJ   rJ   rJ   rK   r     r   r   c                   @   r   )SECURITYBINDING	wAuthnSvcReserved
aPrincNameNr   rJ   rJ   rJ   rK   r     r   r   c                   @   s*   e Zd ZdefdefdefdefdfZdS )PROPMARSHALHEADERr   policyIdr   cb)ctxPropertyr   N)rQ   rR   rS   r   r   r   rj   rJ   rJ   rJ   rK   r     s    r   c                   @   rT   )PROPMARSHALHEADER_ARRAYN)rQ   rR   rS   r   rW   rJ   rJ   rJ   rK   r     rX   r   c                   @   sR   e Zd Zdefdefdefdefdefdefdefdefd	efd
efdeffZdS )Contextrl   
MinVersion	ContextIdFlagsr   dwNumExtents	cbExtents	MshlFlagsCountFrozenPropMarshalHeaderN)rQ   rR   rS   r   r   r   r   rj   rJ   rJ   rJ   rK   r     s    r   c                   @   s(   e Zd ZdefdefdefdeffZdS )ErrorInfoStringdwMaxdwOffSetdwActualNameN)rQ   rR   rS   r   IIDr   rj   rJ   rJ   rJ   rK   r         r   c                
   @   sF   e Zd Zdefdefdefdefdefdefdefdefd	eff	Zd
S )ORPC_ERROR_INFORMATION	dwVersiondwHelpContextr   dwSourceSignatureSourcedwDescriptionSignatureDescriptiondwHelpFileSignatureHelpFileN)rQ   rR   rS   r   r   r   rj   rJ   rJ   rJ   rK   r         r   c                   @   s.   e Zd ZdefdefdefdefdeffZdS )EntryHeader	Signature
cbEHBufferr   r   policyIDN)rQ   rR   rS   r   r   rj   rJ   rJ   rJ   rK   r     r   r   c                   @   rT   )EntryHeader_ARRAYN)rQ   rR   rS   r   rW   rJ   rJ   rJ   rK   r     rX   r   c                
   @   sR   e Zd Zdefdefdefdefdefdefdefdefd	efd
f
ZdddZdS )ORPC_CONTEXTSignatureVersionVersion	cPoliciescbBufferr   hrhrServerr   r   )
PolicyDatar   NFc                 C   r   )NiKUNAr   rb   rc   rJ   rJ   rK   rE     r   zORPC_CONTEXT.__init__ri   )rQ   rR   rS   r   r   rj   rE   rJ   rJ   rJ   rK   r     s    r   c                   @   rT   )CLSID_ARRAYN)rQ   rR   rS   r   rW   rJ   rJ   rJ   rK   r    rX   r  c                   @   rY   )PCLSID_ARRAYr[   N)rQ   rR   rS   r  r\   rJ   rJ   rJ   rK   r    r]   r  c                   @   rT   )DWORD_ARRAYN)rQ   rR   rS   r   rW   rJ   rJ   rJ   rK   r    rX   r  c                   @   rY   )PDWORD_ARRAYr[   N)rQ   rR   rS   r  r\   rJ   rJ   rJ   rK   r    r]   r  c                
   @   sP   e Zd Zdefdefdefdefdefdefdefdefd	eff	ZdddZ	dS )CustomHeader	totalSize
headerSize
dwReserveddestCtxcIfsclassInfoClsidpclsidpSizespdwReservedr   c                 C   s@   t t| |t t| | | d< t | d | d< t| |S )Nr
  r  r  )lenr!   getDatagetDataReferentsrF   soFarrJ   rJ   rK   r  (  s
   

zCustomHeader.getDataNr   )
rQ   rR   rS   r   r   r  r  r   rj   r  rJ   rJ   rJ   rK   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 )
ACTIVATION_BLOBdwSizer  r  Propertyr   c                 C   sN   t | d |t | d | t | d  | d< | d | d d< t| S )Nr  r  r  r	  )r  r  r  r   r  rJ   rJ   rK   r  6  s   

zACTIVATION_BLOB.getDataNr   )rQ   rR   rS   r   r  r   rj   r  rJ   rJ   rJ   rK   r  /  s    r  c                   @   rT   )	IID_ARRAYN)rQ   rR   rS   r   rW   rJ   rJ   rJ   rK   r  =  rX   r  c                   @   rY   )
PIID_ARRAYr[   N)rQ   rR   rS   r  r\   rJ   rJ   rJ   rK   r  @  r]   r  c                
   @   sF   e Zd Zdefdefdefdefdefdefdefdefd	eff	Zd
S )InstantiationInfoDataclassIdclassCtx	actvflagsfIsSurrogatecIIDinstFlagpIIDthisSizeclientCOMVersionN)	rQ   rR   rS   r   r   r   r  rk   rj   rJ   rJ   rJ   rK   r  E  r   r  c                   @   sT   e Zd Zdefdefdefdefdefdefdefdefd	efd
efd
efdfZdS )SpecialPropertiesDatadwSessionIdfRemoteThisSessionIdfClientImpersonatingfPartitionIDPresentdwDefaultAuthnLvlguidPartition
dwPRTFlagsdwOrigClsctxdwFlags	Reserved0)r   z32s=""N)rQ   rR   rS   r   r   r   r   rj   rJ   rJ   rJ   rK   r&  S  s    r&  c                   @   s(   e Zd ZdefdefdefdeffZdS )InstanceInfoDatafileNamemodeifdROTifdStgN)rQ   rR   rS   r   r   r   rj   rJ   rJ   rJ   rK   r1  k  r   r1  c                   @   r{   )customREMOTE_REQUEST_SCM_INFOClientImpLevelcRequestedProtseqspRequestedProtseqsN)rQ   rR   rS   r   r   r   rj   rJ   rJ   rJ   rK   r6  t  r   r6  c                   @   rY   )PcustomREMOTE_REQUEST_SCM_INFOr[   N)rQ   rR   rS   r6  r\   rJ   rJ   rJ   rK   r:  {  r]   r:  c                   @   r   )ScmRequestInfoDatar  remoteRequestN)rQ   rR   rS   r   r:  rj   rJ   rJ   rJ   rK   r;    r   r;  c                   @   s4   e Zd ZdefdefdefdefdefdeffZdS )ActivationContextInfoDataclientOK
bReserved1dwReserved1dwReserved2pIFDClientCtxpIFDPrototypeCtxN)rQ   rR   rS   r   r   r   rj   rJ   rJ   rJ   rK   r=    s    r=  c                   @   s(   e Zd ZdefdefdefdeffZdS )LocationInfoDatamachineName	processIdapartmentId	contextIdN)rQ   rR   rS   r   r   rj   rJ   rJ   rJ   rK   rD    r   rD  c                   @   s(   e Zd ZdefdefdefdeffZdS )COSERVERINFOr@  pwszNamer  rA  N)rQ   rR   rS   r   r   r   rj   rJ   rJ   rJ   rK   rI    r   rI  c                   @   rY   )PCOSERVERINFOr[   N)rQ   rR   rS   rI  r\   rJ   rJ   rJ   rK   rK    r]   rK  c                   @   r{   )SecurityInfoDatadwAuthnFlagspServerInfor  N)rQ   rR   rS   r   rK  r   rj   rJ   rJ   rJ   rK   rL    r   rL  c                   @   .   e Zd ZdefdefdefdefdeffZdS )customREMOTE_REPLY_SCM_INFOOxidpdsaOxidBindingsipidRemUnknown	authnHintserverVersionN)	rQ   rR   rS   r   r   r   r   rk   rj   rJ   rJ   rJ   rK   rP    r   rP  c                   @   rY   )PcustomREMOTE_REPLY_SCM_INFOr[   N)rQ   rR   rS   rP  r\   rJ   rJ   rJ   rK   rV    r]   rV  c                   @   r   )ScmReplyInfoDatar  remoteReplyN)rQ   rR   rS   r   rV  rj   rJ   rJ   rJ   rK   rW    r   rW  c                   @   rT   )HRESULT_ARRAYN)rQ   rR   rS   r   rW   rJ   rJ   rJ   rK   rY    rX   rY  c                   @   rY   )PHRESULT_ARRAYr[   N)rQ   rR   rS   rY  r\   rJ   rJ   rJ   rK   rZ    r]   rZ  c                   @   rT   )MInterfacePointer_ARRAYN)rQ   rR   rS   r   rW   rJ   rJ   rJ   rK   r[    rX   r[  c                   @   rT   )PMInterfacePointer_ARRAYN)rQ   rR   rS   r   rW   rJ   rJ   rJ   rK   r\    rX   r\  c                   @   rY   )PPMInterfacePointer_ARRAYr[   N)rQ   rR   rS   r\  r\   rJ   rJ   rJ   rK   r]    r]   r]  c                   @   (   e Zd ZdefdefdefdeffZdS )PropsOutInfor  piid	phresults
ppIntfDataN)rQ   rR   rS   r   r  rZ  r]  rj   rJ   rJ   rJ   rK   r_    r   r_  c                   @   s"   e Zd ZdefdefdeffZdS )REMINTERFACEREFr   r   cPrivateRefsN)rQ   rR   rS   r   r   rj   rJ   rJ   rJ   rK   rc    r   rc  c                   @   rT   )REMINTERFACEREF_ARRAYN)rQ   rR   rS   rc  rW   rJ   rJ   rJ   rK   re    rX   re  c                   @   r   )REMQIRESULThResultr   N)rQ   rR   rS   r   r   rj   rJ   rJ   rJ   rK   rf    r   rf  c                   @   rY   )PREMQIRESULTr[   N)rQ   rR   rS   rf  r\   rJ   rJ   rJ   rK   rh    r]   rh  c                   @   rY   )DCOMCALLORPCthisN)rQ   rR   rS   r   r   rJ   rJ   rJ   rK   ri    r]   ri  c                   @   rY   )
DCOMANSWERORPCthatN)rQ   rR   rS   r   r   rJ   rJ   rJ   rK   rk    r]   rk  c                   @   &   e Zd ZdZdefdefdeffZdS )ResolveOxidr   pOxidr8  arRequestedProtseqsNrQ   rR   rS   opnumr   r   r   rj   rJ   rJ   rJ   rK   rn        rn  c                   @   r^  )ResolveOxidResponseppdsaOxidBindingspipidRemUnknown
pAuthnHint	ErrorCodeN)rQ   rR   rS   r   r   r   error_status_trj   rJ   rJ   rJ   rK   rt    r   rt  c                   @   s   e Zd ZdZdeffZdS )
SimplePingrL   pSetIdN)rQ   rR   rS   rr  SETIDrj   rJ   rJ   rJ   rK   rz    s    rz  c                   @   rY   )SimplePingResponserx  NrQ   rR   rS   ry  rj   rJ   rJ   rJ   rK   r}  #  r]   r}  c                   @   s8   e Zd ZdZdefdefdefdefdefdeffZdS )	ComplexPingr1   r{  SequenceNum	cAddToSetcDelFromSetAddToSet
DelFromSetN)rQ   rR   rS   rr  r|  r   rZ   rj   rJ   rJ   rJ   rK   r  )  s    r  c                   @   r{   )ComplexPingResponser{  pPingBackoffFactorrx  N)rQ   rR   rS   r|  r   ry  rj   rJ   rJ   rJ   rK   r  4  r   r  c                   @      e Zd ZdZdZdS )ServerAliver2   rJ   NrQ   rR   rS   rr  rj   rJ   rJ   rJ   rK   r  <      r  c                   @   rY   )ServerAliveResponserx  Nr~  rJ   rJ   rJ   rK   r  A  r]   r  c                   @   rm  )ResolveOxid2r3   ro  r8  rp  Nrq  rJ   rJ   rJ   rK   r  G  rs  r  c                   @   rO  )ResolveOxid2Responseru  rv  rw  pComVersionrx  N)	rQ   rR   rS   r   r   r   rk   ry  rj   rJ   rJ   rJ   rK   r  O  r   r  c                   @   r  )ServerAlive2r*   rJ   Nr  rJ   rJ   rJ   rK   r  Y  r  r  c                   @   r^  )ServerAlive2Responser  ppdsaOrBindings	pReservedrx  N)rQ   rR   rS   rk   r   r   ry  rj   rJ   rJ   rJ   rK   r  ^  r   r  c                   @   sP   e Zd ZdZdefdefdefdefdefdefdefd	e	fd
e
fdeff
ZdS )RemoteActivationr   rj  ClsidpwszObjectNamepObjectStorager7  Mode
InterfacespIIDsr8  aRequestedProtseqsN)rQ   rR   rS   rr  r   r   r   r   r   r  r   r   rj   rJ   rJ   rJ   rK   r  g  s    r  c                   @   sL   e Zd Zdefdefdefdefdefdefde	fde
fd	efd
eff
ZdS )RemoteActivationResponserl  ro  ru  rv  rw  pServerVersionphrppInterfaceDatapResultsrx  N)rQ   rR   rS   r   r   r   r   r   rk   r   r\  rY  ry  rj   rJ   rJ   rJ   rK   r  v  s    r  c                   @       e Zd ZdZdefdeffZdS )RemoteGetClassObjectr2   rj  pActPropertiesNrQ   rR   rS   rr  r   r   rj   rJ   rJ   rJ   rK   r    
    r  c                   @   r{   )RemoteGetClassObjectResponserl  ppActPropertiesrx  NrQ   rR   rS   r   r   ry  rj   rJ   rJ   rJ   rK   r    r   r  c                   @   s&   e Zd ZdZdefdefdeffZdS )RemoteCreateInstancer3   rj  	pUnkOuterr  Nr  rJ   rJ   rJ   rK   r    rs  r  c                   @   r{   )RemoteCreateInstanceResponserl  r  rx  Nr  rJ   rJ   rJ   rK   r    r   r  c                   @   s,   e Zd ZdZdefdefdefdeffZdS )RemQueryInterfacer2   ripidcRefscIidsiidsN)	rQ   rR   rS   rr  REFIPIDr   r   r  rj   rJ   rJ   rJ   rK   r    s    r  c                   @   r   )RemQueryInterfaceResponseppQIResultsrx  N)rQ   rR   rS   rh  ry  rj   rJ   rJ   rJ   rK   r    r   r  c                   @   r  )	RemAddRefr3   cInterfaceRefsInterfaceRefsNrQ   rR   rS   rr  r   re  rj   rJ   rJ   rJ   rK   r    r  r  c                   @   r   )RemAddRefResponser  rx  N)rQ   rR   rS   r  ry  rj   rJ   rJ   rJ   rK   r    r   r  c                   @   r  )
RemReleaser*   r  r  Nr  rJ   rJ   rJ   rK   r    r  r  c                   @   rY   )RemReleaseResponserx  Nr~  rJ   rJ   rJ   rK   r    r]   r  c                   @   s   e Zd ZdZdZi Zi Zi Zi Zdddddddde	ddddfddZ
edd Zed	d
 Zedd Zdd Zdd Zdd Zdd Zdd ZdS )DCOMConnectiona*  
    This class represents a DCOM Connection. It is in charge of establishing the 
    DCE connection against the portmap, and then launch a thread that will be 
    pinging the objects created against the target.
    In theory, there should be a single instance of this class for every target
    N Fc                 C   sf   || _ || _|| _|| _|| _|| _|| _|| _|	| _|
| _	d | _
|| _|| _|| _|| _|   d S rD   )_DCOMConnection__target_DCOMConnection__userName_DCOMConnection__password_DCOMConnection__domain_DCOMConnection__lmhash_DCOMConnection__nthash_DCOMConnection__aesKey_DCOMConnection__TGT_DCOMConnection__TGS_DCOMConnection__authLevel_DCOMConnection__portmap_DCOMConnection__oxidResolver_DCOMConnection__doKerberos_DCOMConnection__kdcHost_DCOMConnection__remoteHostinitConnection)rF   targetusernamepassworddomainlmhashnthashaesKeyTGTTGS	authLeveloxidResolver
doKerberoskdcHost
remoteHostrJ   rJ   rK   rE     s    zDCOMConnection.__init__c                 C   h   |t jv du rt t j|< t j| | |t jv du r2i t j|< t t j| d< dt j| d< d S d S NFoidsr   setid)r  OID_ADDsetaddOID_SETrp   r  r   rJ   rJ   rK   addOid     
zDCOMConnection.addOidc                 C   r  r  )r  OID_DELr  r  r  r  rJ   rJ   rK   delOid  r  zDCOMConnection.delOidc              
   C   s  zt jD ]z}t }t }|t jv rt j| }t j|= |t jv r(t j| }t j|= tt j| }t|dks;t|dkrtdt j| v rJt j| d }nd}||d||}t j| d  |8  < t j| d  |O  < |d t j| d< q|	t j| d  qW n t
y } ztt| W Y d }~nd }~ww tdt jt _zt j  W d S  t
y } zt|ddk r|W Y d }~d S d }~ww )Nr   r  r  r{  x    threads can only be started once)r  r  r  r  r  IObjectExporterPORTMAPSr  r  rz  	Exceptionr   errorstrr   
pingServer	PINGTIMERstartfind)rp   r  	addedOidsdeletedOidsobjExportersetIdresperJ   rJ   rK   r    sF   




zDCOMConnection.pingServerc              
   C   st   | j du r8tjd u rtdtjt_ztj  W d S  ty7 } zt|ddk r,|W Y d }~d S d }~ww d S )NTr  r  r   )	r  r  r  r   r  r  r  r  r  )rF   r  rJ   rJ   rK   	initTimer7  s   

zDCOMConnection.initTimerc              
   C   s   d| j  }t|}| jr|| j || j  t|drAt| jdkrA|	| j| j
| j| j| j| j| j| j || j| j | | _| j| j | jdu rX| jt | j  | jtj| j < d S )Nzncacn_ip_tcp:%sset_credentialsr   T)r  r(   DCERPCTransportFactoryr  setRemoteHostsetRemoteNamehasattrr  r  r  r  r  r  r  r  r  r  set_kerberosr  r  get_dce_rpcr  set_auth_levelr  set_auth_typer%   connectr  r  )rF   stringBindingrpctransportrJ   rJ   rK   r  A  s    




zDCOMConnection.initConnectionc                 C   s"   t | j}|||}|   |S rD   )IRemoteSCMActivatorr  r  r  )rF   r   r   scm
iInterfacerJ   rJ   rK   CoCreateInstanceExU  s   
z!DCOMConnection.CoCreateInstanceExc                 C   s   t j| j S rD   )r  r  r  rf   rJ   rJ   rK   r  [  rh   zDCOMConnection.get_dce_rpcc                 C   s   | j tj v rtj| j = | j tj v rtj| j = tjr1ttjdkr1tj  tj  d t_| j t	j
v r@t	j
| j  t j= | j  d S )Nr   )r  r  r  keysr  r  r  canceljoin	INTERFACECONNECTIONSr   namer  
disconnectrf   rJ   rJ   rK   r  ^  s   



zDCOMConnection.disconnect)rQ   rR   rS   __doc__r  r  r  r  r  r$   rE   ru   r  r  r  r  r  r  r  r  rJ   rJ   rJ   rK   r    s*    


	
	
+
r  c                   @   sD   e Z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 )CLASS_INSTANCEc                 C   s   || _ || _t| _t| _d S rD   )_CLASS_INSTANCE__stringBindings_CLASS_INSTANCE__ORPCthisr&   _CLASS_INSTANCE__authTyper$   _CLASS_INSTANCE__authLevel)rF   rj  r  rJ   rJ   rK   rE   n  s   
zCLASS_INSTANCE.__init__c                 C      | j S rD   )r  rf   rJ   rJ   rK   get_ORPCthiss     zCLASS_INSTANCE.get_ORPCthisc                 C   r  rD   )r  rf   rJ   rJ   rK   get_string_bindingsu  r  z"CLASS_INSTANCE.get_string_bindingsc                 C   s6   t | j  k rtk rn | jS | jtkrtS tS | jS rD   )r#   r  r$   r  r&   r"   rf   rJ   rJ   rK   get_auth_levelw  s   
zCLASS_INSTANCE.get_auth_levelc                 C   
   || _ d S rD   )r  )rF   levelrJ   rJ   rK   r   ~     
zCLASS_INSTANCE.set_auth_levelc                 C   r  rD   r  rf   rJ   rJ   rK   get_auth_type  r  zCLASS_INSTANCE.get_auth_typec                 C   r  rD   r  )rF   authTyperJ   rJ   rK   r    r  zCLASS_INSTANCE.set_auth_typeN)
rQ   rR   rS   rE   r  r  r  r   r  r  rJ   rJ   rJ   rK   r  m  s    r  c                   @   s   e Zd Zi Z		d(ddZdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd)d"d#Zd*d$d%Zd&d' ZdS )+r  Nc	           	      C   s   |d ur)|  | _| | _| | _| | _| | _	|
 | _| | _d S |d u r1td|| _|| _|| _|| _|| _	|| _|| _| jtjv dur^i tj| j< i tj| j t j< |d uri| | d S d S )Nz	No targetT)
get_target_INTERFACE__targetget_iPid_INTERFACE__iPidget_oid_INTERFACE__oidget_oxid_INTERFACE__oxidget_cinstance_INTERFACE__cinstance
get_objRef_INTERFACE__objRefget_ipidRemUnknown_INTERFACE__ipidRemUnknownr  r  r  r   r  process_interface)	rF   	cinstanceobjRefrS  iPidr   r   r  interfaceInstancerJ   rJ   rK   rE     s.   





zINTERFACE.__init__c                 C   s   t |d }d }|tkrt|}n"|tkrt|}n|tkr#t|}n|tkr,t|}nt	
d|  |tkrn|d d t@ dkrLt| j|d d  |d d | _|d d | _|d d | _| jd u rp|  tdd S d S )	Nr   Unknown OBJREF Type! 0x%xr   r   r   r   r   zOXID is None)r   r   r   r   r   r   r   r   r   r   r  SORF_NOPINGr  r  r"  r$  r&  r(  dumpr  )rF   rd   
objRefTyper1  rJ   rJ   rK   r/    s,   




zINTERFACE.process_interfacec                 C   r  rD   r(  rf   rJ   rJ   rK   r'    r  zINTERFACE.get_oxidc                 C   r  rD   r8  )rF   r   rJ   rJ   rK   set_oxid  r  zINTERFACE.set_oxidc                 C   r  rD   r&  rf   rJ   rJ   rK   r%    r  zINTERFACE.get_oidc                 C   r  rD   r:  )rF   r   rJ   rJ   rK   set_oid  r  zINTERFACE.set_oidc                 C   r  rD   )r"  rf   rJ   rJ   rK   r!    r  zINTERFACE.get_targetc                 C   r  rD   r$  rf   rJ   rJ   rK   r#    r  zINTERFACE.get_iPidc                 C   r  rD   r<  )rF   r2  rJ   rJ   rK   set_iPid  r  zINTERFACE.set_iPidc                 C   r  rD   r,  rf   rJ   rJ   rK   r+    r  zINTERFACE.get_objRefc                 C   r  rD   r>  )rF   r1  rJ   rJ   rK   
set_objRef  r  zINTERFACE.set_objRefc                 C   r  rD   )r.  rf   rJ   rJ   rK   r-    r  zINTERFACE.get_ipidRemUnknownc                 C   s   t j| j t j | j d S Ndce)r  r  r"  r   r  r(  rf   rJ   rJ   rK   r    s   zINTERFACE.get_dce_rpcc                 C   r  rD   r*  rf   rJ   rJ   rK   r)    r  zINTERFACE.get_cinstancec                 C   r  rD   rB  )rF   r0  rJ   rJ   rK   set_cinstance  r  zINTERFACE.set_cinstancec              	   C   s>   z	t | j W dS    z
| jd W Y dS    Y Y dS )Nr   TF)socket	inet_atonr"  indexrf   rJ   rJ   rK   is_fqdn  s   zINTERFACE.is_fqdnc                 C   s  | j tjv du rt jtj| j  v rk| jtj| j  t j v du rktj| j  t j | j d }tj| j  t j | j d }||krFd S ||}|tj| j  t j | j d< |tj| j  t j | j d< d S |   }d }| 	 }t
d|  |f  |D ]f}t
d|d   |d dkr|d d	d
kr|d d	\}	}
}d	| }n|d }	d}|	 |   d
krd|d d d  } n|r|	 |   dd
 d
krd|  |f } nqt
d|  |d u rtdt|}tj| j    r$|tj| j     |tj| j     t|drK|jtj| j     |tj| j    tj| j     | d |! }|d u r]td|"| j#$  |%| j#&  |'  |d u rztd|(| | jd u rtdi tj| j  t j< i tj| j  t j | j< |tj| j  t j | j d< |tj| j  t j | j d< d S td)NTrA  currentBindingz$Target system is %s and isFQDN is %szStringBinding: %sr   r   r,   [r   r  zncacn_ip_tcp:.zncacn_ip_tcp:%s%szStringBinding chosen: %sz+Can't find a valid stringBinding to connectr  i,  zIID is NonezOXID NONE, something wrong!!!zNo connection created))r"  r  r  r   r  r(  	alter_ctxr)  r  rG  r   debugr!  r  	partitionupperr  r(   r  r  r  get_rpc_transportget_kerberosr  getRemoteHostr  getRemoteNamer  r  get_credentialsr  get_kdcHostset_connect_timeoutr  r   r*  r  r  r  r  bind)rF   r   rA  rH  newDcestringBindingsr  isTargetFQDN
strBindingbinding_bindingPortdcomInterfacerJ   rJ   rK   r    st   
"
(




"zINTERFACE.connectc              
   C   s   |    |d< d|d d< | | |  }z	|||}W |S  tyH } zt|ddkrCt|d }|d7 }|d7 }t| d }~ww )Nrj  r   r   RPC_E_DISCONNECTED
ziDCOM keep-alive pinging it might not be working as expected. You can't be idle for more than 14 minutes!
z(You should exit the app and start again
)	r)  r  r  r  requestr  r  r  r'   )rF   reqr   uuidrA  r  r  msgrJ   rJ   rK   rb  T  s    
	zINTERFACE.requestc                 C   s"   t j| j t j | j d  S r@  )r  r  r"  r   r  r(  r  rf   rJ   rJ   rK   r  e  s   "zINTERFACE.disconnect)NNNNNNNNrD   rt   )rQ   rR   rS   r  rE   r/  r'  r9  r%  r;  r!  r#  r=  r+  r?  r-  r  r)  rC  rG  r  rb  r  rJ   rJ   rJ   rK   r    s.    


^r  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
IRemUnknownc                 C   s&   t | _tj| |d | |  d S )N)r3  )IID_IRemUnknown_iidr  rE   r9  r'  rF   	interfacerJ   rJ   rK   rE   k  s   zIRemUnknown.__init__c              
   C   s   t  }|   |d< d|d d< |  |d< ||d< t||d< |D ]}t }||d< |d | q#| |t| 	 }t
t|  d | 	 |d	 d
 d |d	 d
 d |d	 d
 d |  dS )Nrj  r   r   r  r  r  r[   r  r  r   r   r   )r   r   r  )r  r)  r  r#  r  r   appendrb  rg  r-  IRemUnknown2r  r!  )rF   r  r  rb  r   rh  r  rJ   rJ   rK   r  r  s"   zIRemUnknown.RemQueryInterfacec                 C   sh   t  }|   |d< d|d d< d|d< t }|  |d< d|d< |d | | |t|  }|S 	Nrj  r   r   rL   r  r   r   r  )	r  r)  r  rc  r#  rk  rb  rg  r-  rF   rb  elementr  rJ   rJ   rK   r    s   zIRemUnknown.RemAddRefc                 C   s|   t  }|   |d< d|d d< d|d< t }|  |d< d|d< |d | | |t|  }t	
|  |   |S rm  )r  r)  r  rc  r#  rk  rb  rg  r-  r  r  r!  r%  rn  rJ   rJ   rK   r    s   zIRemUnknown.RemReleaseN)rQ   rR   rS   rE   r  r  r  rJ   rJ   rJ   rK   rf  j  s
    rf  c                   @   s   e Zd Zdd ZdS )rl  c                 C   s   t | | t| _d S rD   )rf  rE   IID_IRemUnknown2rh  ri  rJ   rJ   rK   rE     s   
zIRemUnknown2.__init__N)rQ   rR   rS   rE   rJ   rJ   rJ   rK   rl    s    rl  c                   @   sN   e Zd Zdd Zdd Zdd Zddg g fdd	Zd
d Zdd Zdd Z	dS )r  c                 C   r  rD   )_IObjectExporter__portmaprF   rA  rJ   rJ   rK   rE     r  zIObjectExporter.__init__c                 C      | j   | j t t }||d< t||d< |D ]	}|d | q| j |}ddd |d d D }|d |d d	 d
  }d}t	 }	|sq|dd dkr^|dd
 dkr^d}nt
|}
|	|
 |t|
d  }|rK|	S )Nro  r8  rp      c                 s       | ]}t d |V  qdS r   Nr   .0xrJ   rJ   rK   	<genexpr>      z.IObjectExporter.ResolveOxid.<locals>.<genexpr>ru  r   r   r1   Fr   rL       T)rq  r  rW  IID_IObjectExporterrn  r  rk  rb  r  listr   rF   ro  rp  rb  protSeqr  OxidsstrBindingsdonerY  r\  rJ   rJ   rK   rn    (   
 
zIObjectExporter.ResolveOxidc                 C   s4   | j   | j t t }||d< | j |}|S )Nr{  )rq  r  rW  r}  rz  rb  )rF   r  rb  r  rJ   rJ   rK   rz    s   
zIObjectExporter.SimplePingr   c           	      C   s   | j   | j t t }||d< ||d< t||d< t||d< t|dkr<|D ]}t }||d< |d | q*nt|d< t|dkrZ|D ]}t }||d< |d | qHnt|d< | j 	|}|S )	Nr{  r  r  r  r   r[   r  r  )
rq  r  rW  r}  r  r  rV   rk  r   rb  )	rF   r  sequenceNumaddToSet
delFromSetrb  r   oidnr  rJ   rJ   rK   r    s.   
zIObjectExporter.ComplexPingc                 C   s,   | j   | j t t }| j |}|S rD   )rq  r  rW  r}  r  rb  )rF   rb  r  rJ   rJ   rK   r    s
   
zIObjectExporter.ServerAlivec                 C   rs  )Nro  r8  rp  rt  c                 s   ru  rv  r   rw  rJ   rJ   rK   rz    r{  z/IObjectExporter.ResolveOxid2.<locals>.<genexpr>ru  r   r   r1   Fr   rL   r|  T)rq  r  rW  r}  r  r  rk  rb  r  r~  r   r  rJ   rJ   rK   r    r  zIObjectExporter.ResolveOxid2c                 C   s   | j   | j t t }| j |}ddd |d d D }|d |d d d  }d}t }|s[|d	d
 dkrH|d
d dkrHd}nt|}|	| |t
|d  }|r5|S )Nrt  c                 s   ru  rv  r   rw  rJ   rJ   rK   rz    r{  z/IObjectExporter.ServerAlive2.<locals>.<genexpr>r  r   r   r1   Fr   rL   r|  T)rq  r  rW  r}  r  rb  r  r~  r   rk  r  )rF   rb  r  r  r  r  rY  r\  rJ   rJ   rK   r  
  s    
 
zIObjectExporter.ServerAlive2N)
rQ   rR   rS   rE   rn  rz  r  r  r  r  rJ   rJ   rJ   rK   r    s    	r  c                   @   s   e Zd Zdd Zdd ZdS )IActivationc                 C   r  rD   )_IActivation__portmaprr  rJ   rJ   rK   rE   !  r  zIActivation.__init__c                 C   s  | j t t }t |d< t|d< d|d< t }||d< t|d< t|d< d|d	< d
|d< d|d< t }||d< |d | d|d< |d d | j 	|}|d }d
dd |d d D }|d |d d d  }	||d d d d  }
d}t }|s|	d
d dkr|	dd dkrd}nt|	}|| |	t|d  }	|rd}|st|
dk rd}n|
d
d dkr|
dd dkrd}nt|
}|
t|d  }
|rt||}tt|d
|d d
 d || j   dS )Nr   r   rL   r   r  r  r  r1   r7  r   r  r  r[   r  r8  r  r,   rv  rt  c                 s   ru  rv  r   rw  rJ   rJ   rK   rz  B  r{  z/IActivation.RemoteActivation.<locals>.<genexpr>ru  r   r   Fr|  Tr  r   r  )r  rW  IID_IActivationr   r    r   r  r   rk  rb  r  r~  r   r  r   r  rl  r  rP  rS  )rF   clsIdr   rj  rb  rh  r  rS  r  r  securityBindingsr  rY  r\  
secBindingclassInstancerJ   rJ   rK   r  %  sX   
 
 
	zIActivation.RemoteActivationN)rQ   rR   rS   rE   r  rJ   rJ   rJ   rK   r     s    r  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )r  c                 C   r  rD   )_IRemoteSCMActivator__portmaprr  rJ   rJ   rK   rE   a  r  zIRemoteSCMActivator.__init__c           #      C   s$  | j t t }t |d< t|d< d|d< t }||d< t }d|d d< t|d d	< t }t	|d
< |d d 
| t }t|d
< |d d 
| t }t|d
< |d d 
| t }t|d
< |d d 
| d}t }||d< d|d< t }	||	d
< |d 
|	 t }
| |  }dt|d  d }t|| |
d
< |d d 
|
 |
d
 |d< ||d|  7 }t }t|d< t|d< t }
| |  }dt|d  d }t|| |
d
< |d d 
|
 ||d|  7 }t }t|d< t }
t| |
d
< |d d 
|
 || |  7 }t }t|d	< d|d d< |d d 
d t }
| |  }dt|d  d }t|| |
d
< |d d 
|
 ||d|  7 }||d< t }td d |d< t|d< | |d< t|d d |d < t| |d! d"< t| |d! d#< | j |}td|d$ d# d }d }|tkrtd|d$ d# }n:|tkrt d|d$ d# }n)|t!krt"d|d$ d# }n|t#krt$d|d$ d# }nt%&d%|  t|d }|d 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 }|d |d' d+ d- d  }||d' d+ d- d d  }d.}t }|s|d&d d/kr|dd d/krd0}nt*|}|
| |t|d  }|rwd.}|st|dk rd0}n!|d&d d/kr|dd d/krd0}nt+|} |t| d  }|rt, }!|!(|}|!)||d   t-||}"|".|d' d1  |"/| j 0  t1t2|"d|!d2 d& d# || j 3 4 d3S )4Nr   r   rL   r   rj  r1   r  r  r  r[   r  rt  r  r!  r#  r-   r  r$     rB  rC  rE  r<  r8  r9  r,   r  r   r   r   r   r  r   r   r  r4  r   rX  rS  c                 s   ru  rv  r   rw  rJ   rJ   rK   rz    r{  z;IRemoteSCMActivator.RemoteGetClassObject.<locals>.<genexpr>rR  r   r   Fr|  TrT  rb  r  )5r  rW  IID_IRemoteSCMActivatorr   r    r   r  r  r   CLSID_InstantiationInfork  CLSID_ActivationContextInfoCLSID_ServerLocationInfoCLSID_ScmRequestInfor  r   r   r  r  r  r=  rD  r;  r   IID_IActivationPropertiesInCLSID_ActivationPropertiesInr~  rb  r   r  r   r   r   r   r   r   r   r   r  rW  
fromStringfromStringReferentsr   r   r_  r  r   r  r  rl  r  rP  rS  #rF   r  r   rj  rb  activationBLOBr   
propertiesinstantiationInforh  dword	marshaledpadactivationInfolocationInfoscmInfoobjrefcustomr  r7  r1  activationBlob
propOutputscmReplyscmrr~   rS  r  r  r  r  rY  r\  r  propsOutr  rJ   rJ   rK   r  d  s   




 $
 $
$


z(IRemoteSCMActivator.RemoteGetClassObjectc           #      C   s,  | j t t }t |d< t|d< d|d< t }||d< t|d< t }d|d d	< t|d d
< t }t	|d< |d d 
| t }t|d< |d d 
| t }t|d< |d d 
| t }t|d< |d d 
| d}t }||d< d|d< t }	||	d< |d 
|	 t }
| |  }dt|d  d }t|| |
d< |d d 
|
 |
d |d< ||d|  7 }t }t|d< t|d< t }
| |  }dt|d  d }t|| |
d< |d d 
|
 ||d|  7 }t }t|d< t }
t| |
d< |d d 
|
 || |  7 }t }t|d
< d|d d< |d d 
d t }
| |  }dt|d  d }t|| |
d< |d d 
|
 ||d|  7 }||d< t }td d |d< t|d< | |d < t|d  d |d!< t| |d" d#< t| |d" d$< | j |}td|d% d$ d }d }|tkrtd|d% d$ }n:|tkrt d|d% d$ }n)|t!krt"d|d% d$ }n|t#krt$d|d% d$ }nt%&d&|  t|d  }|d 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 }|d |d( d, d. d  }||d( d, d. d d  }d/}t }|s|d'd d0kr|dd d0krd1}nt*|}|
| |t|d  }|r{d/}|st|dk rd1}n!|d'd d0kr|dd d0krd1}nt+|} |t| d  }|rt, }!|!(|}|!)||d   t-||}"|".|d( d2  |"/| j 0  t1t2|"d|!d3 d' d$ || j 3 4 d4S )5Nr   r   rL   r   rj  r  r1   r  r  r  r[   r  rt  r  r!  r#  r-   r  r$  r  rB  rC  rE  r<  r8  r9  r,   r  r  r   r   r   r   r  r   r   r  r4  r   rX  rS  c                 s   ru  rv  r   rw  rJ   rJ   rK   rz    r{  z;IRemoteSCMActivator.RemoteCreateInstance.<locals>.<genexpr>rR  r   r   Fr|  TrT  rb  r  )5r  rW  r  r   r    r   r  r  r   r  rk  r  r  r  r  r   r   r  r  r  r=  rD  r;  r   r  r  r~  rb  r   r  r   r   r   r   r   r   r   r   r  rW  r  r  r   r   r_  r  r   r  r  rl  r  rP  rS  r  rJ   rJ   rK   r    s   




 $
 $
$


z(IRemoteSCMActivator.RemoteCreateInstanceN)rQ   rR   rS   rE   r  r  rJ   rJ   rJ   rK   r  `  s
     !r  )
__future__r   r   rD  structr   	threadingr   r   impacket.dcerpc.v5.ndrr   r	   r
   r   r   r   impacket.dcerpc.v5.dtypesr   r   r   r   r   r   r   r   r   r   r   r   r   r   impacketr   r   impacket.uuidr   r   r    impacket.dcerpc.v5.rpcrtr!   r"   r#   r$   r%   r&   r'   impacket.dcerpc.v5r(   r  r  CLSID_ActivationPropertiesOutCLSID_CONTEXT_EXTENSIONCLSID_ContextMarshalerCLSID_ERROR_EXTENSIONCLSID_ErrorObjectCLSID_InstanceInfor  CLSID_PropsOutInfoCLSID_ScmReplyInfor  CLSID_SecurityInfor  CLSID_SpecialSystemPropertiesr  r  IID_IActivationPropertiesOutIID_IContextr}  r  rg  rp  IID_IUnknownIID_IClassFactoryTOWERID_OSI_TP4TOWERID_OSI_CLNSTOWERID_DOD_TCPTOWERID_DOD_UDPTOWERID_DOD_IPTOWERID_RPC_connectionlessTOWERID_RPC_connectionorientedTOWERID_DNA_Session_ControlTOWERID_DNA_Session_Control_V3TOWERID_DNA_NSP_TransportTOWERID_DNA_RoutingTOWERID_Named_PipesTOWERID_NetBIOS_11TOWERID_NetBEUITOWERID_Netware_SPXTOWERID_Netware_IPXTOWERID_Appletalk_StreamTOWERID_Appletalk_DatagramTOWERID_AppletalkTOWERID_NetBIOS_19TOWERID_VINES_SPPTOWERID_VINES_IPCTOWERID_StreetTalkTOWERID_Unix_Domain_socketTOWERID_nullTOWERID_NetBIOS_22rC   rV   rU   rZ   r|  ry  r   r   r   PIIDr   r   r   r   r   r   r5  CTXMSHLFLAGS_BYVALCPFLAG_PROPAGATECPFLAG_EXPOSECPFLAG_ENVOYACTVFLAGS_DISABLE_AAA ACTVFLAGS_ACTIVATE_32_BIT_SERVER ACTVFLAGS_ACTIVATE_64_BIT_SERVERACTVFLAGS_NO_FAILURE_LOGSPD_FLAG_USE_CONSOLE_SESSIONMAX_REQUESTED_INTERFACESMAX_REQUESTED_PROTSEQSMIN_ACTPROP_LIMITMAX_ACTPROP_LIMITr^   rk   rv   rx   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r&  r1  r6  r:  r;  r=  rD  rI  rK  rL  rP  rV  rW  rY  rZ  r[  r\  r]  r_  rc  re  rf  rh  r  ri  rk  rn  rt  rz  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  OPNUMSr  r  r  rf  rl  r  r  r  rJ   rJ   rJ   rK   <module>   s    @$	


								
		  e6z@