o
    j                     @   s  d dl mZ d dl mZ d dlZd dlmZmZ d dlmZ d dlm	Z	 d dl
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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$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2 d d	l3m4Z4 d d
l5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z= d dl>m?Z? d dl@mAZA G dd de?ZBeAdZCeAdZDeAdZEeAdZFeZGeZHe:ZIeZJeZKeZLeJZMe ZNG dd de8ZOeZPG dd de8ZQdZRdZSdZTdZUdZVdZWdZXG dd de6ZYG d d! d!e8ZZG d"d# d#e9Z[G d$d% d%e9Z\G d&d' d'e9Z]G d(d) d)e9Z^G d*d+ d+e9Z_G d,d- d-e9Z`G d.d/ d/e7ZaG d0d1 d1e6ZbG d2d3 d3e8ZcG d4d5 d5e8ZdG d6d7 d7e6ZeG d8d9 d9e8ZfG d:d; d;e6ZgG d<d= d=e8ZhG d>d? d?e6ZiG d@dA dAe8ZjG dBdC dCe7ZkG dDdE dEe8ZlG dFdG dGe6ZmG dHdI dIe6ZnG dJdK dKe6ZoG dLdM dMe7ZpG dNdO dOe6ZqG dPdQ dQe6ZrG dRdS dSe6ZsG dTdU dUe7ZtG dVdW dWe6ZuG dXdY dYe7ZvG dZd[ d[e6ZwG d\d] d]e7ZxG d^d_ d_e6ZyeZzG d`da dae7Z{G dbdc dce8Z|G ddde dee8Z}G dfdg dge6Z~G dhdi die;ZG djdk dke7ZG dldm dme8ZG dndo doe6ZG dpdq dqe8ZG drds dse=ZG dtdu due;ZG dvdw dwe6ZG dxdy dye8ZG dzde dee8Z}eZG d{d| d|e7ZG d}d~ d~e8ZG dd de6ZG dd de6ZeZG dd de6ZG dd de;ZG dd de6ZG dd de8ZeZG dd de7ZG dd de8ZG dd de6ZG dd de8ZG dd de6ZG dd de6ZG dd de7ZG dd de8ZG dd de6ZG dd de8ZG dd de6ZG dd de8ZG dd de<ZG dd de7ZG dd de7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Zi Zdd΄ ZddЄ ZG dd҄ deZG ddԄ deZG ddք deZdS )    )division)print_functionN)packunpack)LOG)hresult_errors)	DCOMCALL
DCOMANSWERIRemUnknown2PMInterfacePointer	INTERFACEMInterfacePointerMInterfacePointer_ARRAY
BYTE_ARRAYPPMInterfacePointer)LPWSTRULONGDWORDSHORTGUIDUSHORTLONGWSTRBYTELONGLONGFLOATDOUBLEHRESULTPSHORTPLONG	PLONGLONGPFLOATPDOUBLEPHRESULTCHAR	ULONGLONGINTUINTPCHARPUSHORTPULONG
PULONGLONGPINTPUINTNULL)Enum)	NDRSTRUCTNDRUniConformantArray
NDRPOINTERNDRENUM	NDRUSHORTNDRUNIONNDRUniConformantVaryingArrayNDR)DCERPCException)string_to_binc                   @   s   e Zd ZdddZdd ZdS )DCERPCSessionErrorNc                 C   s   t | ||| d S N)r8   __init__)selferror_string
error_codepacket rA   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/impacket/dcerpc/v5/dcom/oaut.pyr<   .   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'OAUT SessionError: code: 0x%x - %s - %sz+OAUT SessionError: unknown error code: 0x%x)r?   r   ERROR_MESSAGES)r=   error_msg_shorterror_msg_verboserA   rA   rB   __str__1   s
   
zDCERPCSessionError.__str__)NNN)__name__
__module____qualname__r<   rG   rA   rA   rA   rB   r:   -   s    
r:   z$00020400-0000-0000-C000-000000000046z$00020401-0000-0000-C000-000000000046z$00020403-0000-0000-C000-000000000046z$00000000-0000-0000-0000-000000000000c                   @      e Zd ZdeffZdS )PDATEDataN)rH   rI   rJ   DATEreferentrA   rA   rA   rB   rL   S       rL   c                   @   rK   )PVARIANT_BOOLrM   N)rH   rI   rJ   VARIANT_BOOLrO   rA   rA   rA   rB   rQ   [   rP   rQ   rC            i   i   i   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 )DECIMAL	wReservedscalesignHi32Lo64N)rH   rI   rJ   WORDr   r   r%   	structurerA   rA   rA   rB   rV   n   s    rV   c                   @   rK   )PDECIMALrM   N)rH   rI   rJ   rV   rO   rA   rA   rA   rB   r^   w   rP   r^   c                   @   s   e Zd ZG dd deZdS )VARENUMc                   @   sT  e 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&e"e&B Z'ee&B Z(ee&B Z)ee&B Z*ee&B Z+ee&B Z,ee&B Z-ee&B Z.ee&B Z/e	e&B Z0e
e&B Z1ee&B Z2ee&B Z3ee&B Z4e%e&B Z5ee&B Z6ee&B Z7ee&B Z8ee&B Z9ee&B Z:ee&B Z;ee&B Z<ee&B Z=d%S )&zVARENUM.enumItemsr   rC   rS      rT            rU   	   
                                                               $   %   &   i    i @  N)>rH   rI   rJ   VT_EMPTYVT_NULLVT_I2VT_I4VT_R4VT_R8VT_CYVT_DATEVT_BSTRVT_DISPATCHVT_ERRORVT_BOOL
VT_VARIANT
VT_UNKNOWN
VT_DECIMALVT_I1VT_UI1VT_UI2VT_UI4VT_I8VT_UI8VT_INTVT_UINTVT_VOID
VT_HRESULTVT_PTRVT_SAFEARRAY	VT_CARRAYVT_USERDEFINEDVT_LPSTR	VT_LPWSTR	VT_RECORD
VT_INT_PTRVT_UINT_PTRVT_ARRAYVT_BYREFVT_RECORD_OR_VT_BYREFVT_UI1_OR_VT_BYREFVT_I2_OR_VT_BYREFVT_I4_OR_VT_BYREFVT_I8_OR_VT_BYREFVT_R4_OR_VT_BYREFVT_R8_OR_VT_BYREFVT_BOOL_OR_VT_BYREFVT_ERROR_OR_VT_BYREFVT_CY_OR_VT_BYREFVT_DATE_OR_VT_BYREFVT_BSTR_OR_VT_BYREFVT_UNKNOWN_OR_VT_BYREFVT_DISPATCH_OR_VT_BYREFVT_ARRAY_OR_VT_BYREFVT_VARIANT_OR_VT_BYREFVT_I1_OR_VT_BYREFVT_UI2_OR_VT_BYREFVT_UI4_OR_VT_BYREFVT_UI8_OR_VT_BYREFVT_INT_OR_VT_BYREFVT_UINT_OR_VT_BYREFVT_DECIMAL_OR_VT_BYREFrA   rA   rA   rB   	enumItems~   sx    r   N)rH   rI   rJ   r/   r   rA   rA   rA   rB   r_   }   s    r_   c                   @       e Zd ZdZG dd deZdS )SF_TYPE)rM   <Lc                   @   sR   e Zd ZejZejZejZ	ej
ZejZejZejZejZejZejZejdB ZdS )zSF_TYPE.enumItemsi   N)rH   rI   rJ   r_   r   SF_ERRORr   SF_I1r   SF_I2r   SF_I4r   SF_I8r   SF_BSTRr   
SF_UNKNOWNr   SF_DISPATCHr   
SF_VARIANTr   	SF_RECORD
SF_HAVEIIDrA   rA   rA   rB   r      s    r   NrH   rI   rJ   r]   r/   r   rA   rA   rA   rB   r          r   c                   @   r   )CALLCONVr   c                   @      e Zd ZdZdZdZdS )zCALLCONV.enumItemsrC   rS   rT   N)rH   rI   rJ   CC_CDECL	CC_PASCAL
CC_STDCALLrA   rA   rA   rB   r          r   Nr   rA   rA   rA   rB   r      r   r   c                   @   r   )FUNCKINDr   c                   @   r   )zFUNCKIND.enumItemsrC   r`   rT   N)rH   rI   rJ   FUNC_PUREVIRTUALFUNC_STATICFUNC_DISPATCHrA   rA   rA   rB   r      r   r   Nr   rA   rA   rA   rB   r      r   r   c                   @   r   )
INVOKEKINDr   c                   @   s   e Zd ZdZdZdZdZdS )zINVOKEKIND.enumItemsrC   rS   rT   rU   N)rH   rI   rJ   INVOKE_FUNCINVOKE_PROPERTYGETINVOKE_PROPERTYPUTINVOKE_PROPERTYPUTREFrA   rA   rA   rB   r      s
    r   Nr   rA   rA   rA   rB   r      r   r   c                   @   r   )TYPEKINDr   c                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
d	S )
zTYPEKIND.enumItemsr   rC   rS   r`   rT   ra   rb   rc   N)rH   rI   rJ   
TKIND_ENUMTKIND_RECORDTKIND_MODULETKIND_INTERFACETKIND_DISPATCHTKIND_COCLASSTKIND_ALIASTKIND_UNIONrA   rA   rA   rB   r      s    r   Nr   rA   rA   rA   rB   r      r   r   c                   @      e Zd ZdZdS )USHORT_ARRAY<HNrH   rI   rJ   itemrA   rA   rA   rB   r         r   c                   @   s<   e Zd ZdefdefdeffZdd Zdd Zdd
dZdS )FLAGGED_WORD_BLOBcBytesclSizeasDatac                 C   s|   |dkr7|}t  }|D ]}|d}|td|d  q|| j| d< t|d | d< t|| d< d | _d S t| ||S )	Nr   utf-16ler   r   rM   rS   r   r   )	listencodeappendr   fieldslendatar0   __setitem__)r=   keyvaluearrayletterencodedrA   rA   rB   r     s   

zFLAGGED_WORD_BLOB.__setitem__c                 C   sD   |dkrd}| j d d D ]}|td|d7 }q|S t| |S )Nr    rM   r   r   )r   r   decoder0   __getitem__)r=   r   r   r   rA   rA   rB   r     s   zFLAGGED_WORD_BLOB.__getitem__Nr   c                 C   sL   |d u r| j j}d| }|dkrtd|  d}td|| d f dd d S )N r   z%sz%sasData: %sr   )end)	__class__rH   print)r=   msgindentindr   rA   rA   rB   dump#  s   zFLAGGED_WORD_BLOB.dump)Nr   )	rH   rI   rJ   r   r   r]   r   r   r  rA   rA   rA   rB   r     s    	r   c                   @   rK   )BSTRrM   N)rH   rI   rJ   r   rO   rA   rA   rA   rB   r  ,  rP   r  c                   @   rK   )PBSTRrM   N)rH   rI   rJ   r  rO   rA   rA   rA   rB   r  1  rP   r  c                   @   rK   )CURRENCYint64N)rH   rI   rJ   r   r]   rA   rA   rA   rB   r  7  rP   r  c                   @   rK   )	PCURRENCYrM   N)rH   rI   rJ   r  rO   rA   rA   rA   rB   r  <  rP   r  c                   @   (   e Zd ZdefdefdefdeffZdS )_wireBRECORDfFlagsr   pRecInfopRecordN)rH   rI   rJ   r   r   r   r]   rA   rA   rA   rB   r
  C      r
  c                   @   rK   )BRECORDrM   N)rH   rI   rJ   r
  rO   rA   rA   rA   rB   r  K  rP   r  c                   @      e Zd ZdefdeffZdS )SAFEARRAYBOUND	cElementslLboundN)rH   rI   rJ   r   r   r]   rA   rA   rA   rB   r  R      r  c                   @   rK   )PSAFEARRAYBOUNDrM   N)rH   rI   rJ   r  rO   rA   rA   rA   rB   r  X  rP   r  c                   @      e Zd ZeZdS )
BSTR_ARRAYNrH   rI   rJ   r  r   rA   rA   rA   rB   r  ^  r   r  c                   @   rK   )PBSTR_ARRAYrM   N)rH   rI   rJ   r  rO   rA   rA   rA   rB   r  a  rP   r  c                   @   r  )SAFEARR_BSTRSizeaBstrN)rH   rI   rJ   r   r  r]   rA   rA   rA   rB   r  f  r  r  c                   @   r  )SAFEARR_UNKNOWNr  	apUnknownNrH   rI   rJ   r   r   r]   rA   rA   rA   rB   r  m  r  r  c                   @   r  )SAFEARR_DISPATCHr  
apDispatchNr  rA   rA   rA   rB   r   t  r  r   c                   @   r  )BRECORD_ARRAYN)rH   rI   rJ   r  r   rA   rA   rA   rB   r"  {  r   r"  c                   @   r  )SAFEARR_BRECORDr  aRecordN)rH   rI   rJ   r   r"  r]   rA   rA   rA   rB   r#  ~  r  r#  c                   @   "   e Zd ZdefdefdeffZdS )SAFEARR_HAVEIIDr  r  iidN)rH   rI   rJ   r   r   IIDr]   rA   rA   rA   rB   r&    
    r&  c                   @   r  )BYTE_SIZEDARRr   pDataN)rH   rI   rJ   r   r   r]   rA   rA   rA   rB   r*    r  r*  c                   @   r   )
WORD_ARRAYr   Nr   rA   rA   rA   rB   r,    r   r,  c                   @   r  )WORD_SIZEDARRr   r+  N)rH   rI   rJ   r   r,  r]   rA   rA   rA   rB   r-    r  r-  c                   @   r   )DWORD_ARRAYr   Nr   rA   rA   rA   rB   r.    r   r.  c                   @   r  )DWORD_SIZEDARRr   r+  N)rH   rI   rJ   r   r.  r]   rA   rA   rA   rB   r/    r  r/  c                   @   r   )HYPER_ARRAYz<QNr   rA   rA   rA   rB   r0    r   r0  c                   @   r  )HYPER_SIZEDARRr   r+  N)rH   rI   rJ   r   r0  r]   rA   rA   rA   rB   r1    r  r1  c                   @      e Zd ZdddZdS )VARIANT_ARRAYNFc                 C   s   t | || t| _d S r;   )r1   r<   VARIANTr   r=   r   isNDR64rA   rA   rB   r<     s   
zVARIANT_ARRAY.__init__NFrH   rI   rJ   r<   rA   rA   rA   rB   r3    s    r3  c                   @   rK   )PVARIANT_ARRAYrM   N)rH   rI   rJ   r3  rO   rA   rA   rA   rB   r9    rP   r9  c                   @   r2  )PVARIANTNFc                 C   s   t | || dtff| _d S )NrM   )r2   r<   r4  rO   r5  rA   rA   rB   r<     s   zPVARIANT.__init__r7  r8  rA   rA   rA   rB   r:    s    r:  c                   @   r  )SAFEARR_VARIANTr  aVariantN)rH   rI   rJ   r   r3  r]   rA   rA   rA   rB   r;    r  r;  c                   @   s~   e Zd ZdeffZejdefejde	fej
defejdefejdefejdefejdefejd	efejd
efejdefi
ZdS )SAFEARRAYUNIONtagBstrStr
UnknownStrDispatchStr
VariantStr	RecordStr
HaveIidStrByteStrWordStrLongStrHyperStrN)rH   rI   rJ   r   	commonHdrr   r   r  r   r  r   r   r   r;  r   r#  r   r&  r   r*  r   r-  r   r/  r   r1  unionrA   rA   rA   rB   r=    s    









r=  c                   @   r  )SAFEARRAYBOUND_ARRAYN)rH   rI   rJ   r  r   rA   rA   rA   rB   rK    r   rK  c                   @   rK   )PSAFEARRAYBOUND_ARRAYrM   N)rH   rI   rJ   rK  rO   rA   rA   rA   rB   rL    rP   rL  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 )	SAFEARRAYcDims	fFeatures
cbElementscLocksuArrayStructs	rgsaboundN)rH   rI   rJ   r   r   r=  rK  r]   rA   rA   rA   rB   rM    s    rM  c                   @   rK   )
PSAFEARRAYrM   N)rH   rI   rJ   rM  rO   rA   rA   rA   rB   rT    rP   rT  c                   @      e Zd ZdZdZdS )EMPTYr   rA   N)rH   rI   rJ   alignr]   rA   rA   rA   rB   rV        rV  c                   @   s<  e Zd ZdeffZi ejdefejde	fej
defejdefejdefejdefejdefejd	efejd
efejdefejdefejdefejdefejde fej!de"fej#de"fej$defi ej%de&fej'de(fej)de*fej+de,fej-de.fej/de0fej1de2fej3de4fej5de6fej7de8fej9de:fej;de:fej<de=fej>de?fej@d eAfejBd!eCfejDd"efejEd#eFfejGd$eHfejId%eJfejKd&eLfejMd'eNfejOd(ePfejQd)eRfejSd*eTfejUd+eVfejWd,eXfejYd-eZfej[d.e\fej]d/e\fiZ^d0S )1varUnionr>  llVallValbValiValfltValdblValboolValscodecyValdatebstrValpunkValpdispValparraybrecValpbValpiValplValpllValpfltValpdblValpboolValpscodepcyValpdatepbstrValppunkVal	ppdispValpparraypvarValcValuiValulValullValintValuintValdecValpcValpuiValpulValpullValpintValpuintValpdecValemptynullN)_rH   rI   rJ   r   rI  r_   r   r   r   r   r   r   r   r   r   r   r   r   r   rR   r   r   r   r  r   rN   r   r  r   r   r   r   rM  r   r  r   r   r   r   r   r   r   r    r   r!   r   r"   r   rQ   r   r#   r   r  r   rL   r   r  r   r   r   r   rT  r   r:  r   r$   r   r   r   r   r%   r   r&   r   r'   r   rV   r   r(   r   r)   r   r*   r   r+   r   r,   r   r-   r   r^   r}   rV  r~   rJ  rA   rA   rA   rB   rY    s    








	























 
!
"
#












rY  c                   @   sB   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fZdd	 Zd
S )wireVARIANTStrr   rpcReservedvt
wReserved1
wReserved2
wReserved3	_varUnionc                 C      dS )NrU   rA   r=   rA   rA   rB   getAlignmentG     zwireVARIANTStr.getAlignmentN)rH   rI   rJ   r   r   rY  r]   r  rA   rA   rA   rB   r  <  s    
r  c                   @   rK   )r4  rM   N)rH   rI   rJ   r  rO   rA   rA   rA   rB   r4  J  rP   r4  c                   @   rK   )r:  rM   N)rH   rI   rJ   r4  rO   rA   rA   rA   rB   r:  O  rP   c                   @   r   )DISPID_ARRAYr   Nr   rA   rA   rA   rB   r  X  r   r  c                   @   rK   )PDISPID_ARRAYrM   N)rH   rI   rJ   r  rO   rA   rA   rA   rB   r  [  rP   r  c                   @   s(   e Zd ZdefdefdefdeffZdS )
DISPPARAMSrgvargrgdispidNamedArgscArgs
cNamedArgsN)rH   rI   rJ   r9  r  r'   r]   rA   rA   rA   rB   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 )	EXCEPINFOwCoderW   
bstrSourcebstrDescriptionbstrHelpFiledwHelpContext
pvReservedpfnDeferredFillInra  N)	rH   rI   rJ   r\   r  r   r   r   r]   rA   rA   rA   rB   r  i  s    r  c                   @   r2  )	ARRAYDESCNFc                 C   s*   t | || dtfdtfdtff| _d S )N	tdescElemrN  rgbounds)r0   r<   TYPEDESCr   rK  r]   r5  rA   rA   rB   r<     s
   
zARRAYDESC.__init__r7  r8  rA   rA   rA   rB   r  z  s    r  c                   @   s$   e Zd ZdZdeffZdddZdS )tdUnionTr>  NFc              
   C   sH   t j| d ||d tjdtftjdtftjdtftjdt	fdd i| _
d S )Nr6  topLevellptdesclpadeschreftypedefault)r5   r<   r_   r   	PTYPEDESCr   r   r  r   HREFTYPErJ  )r=   r   r6  r  rA   rA   rB   r<     s   




ztdUnion.__init__NFF)rH   rI   rJ   notAlignr   rI  r<   rA   rA   rA   rB   r    s
    r  c                   @   s$   e Zd ZdefdeffZdd ZdS )r  vtTyper  c                 C   r  )NrT   rA   r  rA   rA   rB   r    r  zTYPEDESC.getAlignmentN)rH   rI   rJ   r  r_   r]   r  rA   rA   rA   rB   r    s
    r  c                   @   s    e Zd ZdeffZdddZdS )r  rM   NFc                 C   s>   t j| d |dd}|d u rtdd| jd< d S | | d S )NFr  rC   i  
ReferentID)r2   r<   randomrandintr   
fromString)r=   r   r6  r  retrA   rA   rB   r<     s   zPTYPEDESC.__init__r  )rH   rI   rJ   r  rO   r<   rA   rA   rA   rB   r    s    r  c                   @   r  )SCODE_ARRAYN)rH   rI   rJ   SCODEr   rA   rA   rA   rB   r    r   r  c                   @   rK   )PSCODE_ARRAYrM   N)rH   rI   rJ   r  rO   rA   rA   rA   rB   r    rP   r  c                   @   r  )PARAMDESCEXr   varDefaultValueN)rH   rI   rJ   r   r4  r]   rA   rA   rA   rB   r    r  r  c                   @   rK   )PPARAMDESCEXrM   N)rH   rI   rJ   r  rO   rA   rA   rA   rB   r    rP   r  c                   @   r  )	PARAMDESCpparamdescexwParamFlagsN)rH   rI   rJ   r  r   r]   rA   rA   rA   rB   r    r  r  c                   @   r  )ELEMDESCtdesc	paramdescN)rH   rI   rJ   r  r  r]   rA   rA   rA   rB   r    r  r  c                   @   r  )ELEMDESC_ARRAYN)rH   rI   rJ   r  r   rA   rA   rA   rB   r    r   r  c                   @   rK   )PELEMDESC_ARRAYrM   N)rH   rI   rJ   r  rO   rA   rA   rA   rB   r    rP   r  c                   @   sX   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effZdS )FUNCDESCmemid
lReserved1lprgelemdescParamfunckindinvkindcallconvcParams
cParamsOptoVft
cReserved2elemdescFunc
wFuncFlagsN)rH   rI   rJ   MEMBERIDr  r  r   r   r   r   r  r\   r]   rA   rA   rA   rB   r    s    r  c                   @   rK   )
LPFUNCDESCrM   N)rH   rI   rJ   r  rO   rA   rA   rA   rB   r    rP   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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efde	ffZdS )TYPEATTRguidlciddwReserved1dwReserved2dwReserved3lpstrReserved4cbSizeInstancetypeKindcFuncscVars
cImplTypes	cbSizeVftcbAlignment
wTypeFlagswMajorVerNumwMinorVerNum
tdescAliasdwReserved5dwReserved6N)rH   rI   rJ   r   LCIDr   LPOLESTRr   r   r\   r  r]   rA   rA   rA   rB   r    s*    r  c                   @   rK   )	PTYPEATTRrM   N)rH   rI   rJ   r  rO   rA   rA   rA   rB   r    rP   r  c                   @   r  )BSTR_ARRAY_CVNr  rA   rA   rA   rB   r    r   r  c                   @   r   )
UINT_ARRAYr   Nr   rA   rA   rA   rB   r    r   r  c                   @   r  )OLESTR_ARRAYN)rH   rI   rJ   r  r   rA   rA   rA   rB   r    r   r  c                   @      e Zd ZdZdeffZdS )IDispatch_GetTypeInfoCountr`   pwszMachineNameN)rH   rI   rJ   opnumr   r]   rA   rA   rA   rB   r  &      r  c                   @   r  )"IDispatch_GetTypeInfoCountResponsepctinfo	ErrorCodeN)rH   rI   rJ   r   error_status_tr]   rA   rA   rA   rB   r  ,  r  r  c                   @       e Zd ZdZdefdeffZdS )IDispatch_GetTypeInforT   iTInfor  N)rH   rI   rJ   r  r   r   r]   rA   rA   rA   rB   r  3  
    r  c                   @   r  )IDispatch_GetTypeInfoResponseppTInfor  NrH   rI   rJ   r   r  r]   rA   rA   rA   rB   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 )IDispatch_GetIDsOfNamesra   riid	rgszNamescNamesr  N)	rH   rI   rJ   r  REFIIDr  r'   r  r]   rA   rA   rA   rB   r  A  s    r  c                   @   r  )IDispatch_GetIDsOfNamesResponsergDispIdr  N)rH   rI   rJ   r  r  r]   rA   rA   rA   rB   r  J  r  r  c                	   @   sD   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fZd
S )IDispatch_Invokerb   dispIdMemberr  r  dwFlagspDispParamscVarRefrgVarRefIdxrgVarRefN)rH   rI   rJ   r  DISPIDr  r  r   r  r'   r  r3  r]   rA   rA   rA   rB   r  Q  s    r  c                   @   s(   e Zd ZdefdefdefdeffZdS )IDispatch_InvokeResponse
pVarResult
pExcepInfopArgErrr  N)rH   rI   rJ   r4  r  r'   r  r]   rA   rA   rA   rB   r  ^  r  r  c                   @   rU  )ITypeInfo_GetTypeAttrr`   rA   NrH   rI   rJ   r  r]   rA   rA   rA   rB   r  g  rX  r  c                   @   r%  )ITypeInfo_GetTypeAttrResponse
ppTypeAttr	pReservedr  N)rH   rI   rJ   r  r   r  r]   rA   rA   rA   rB   r  l  r)  r  c                   @   rU  )ITypeInfo_GetTypeComprT   rA   Nr  rA   rA   rA   rB   r  t  rX  r  c                   @   r  )ITypeInfo_GetTypeCompResponseppTCompr  Nr  rA   rA   rA   rB   r  y  r  r  c                   @   r  )ITypeInfo_GetFuncDescra   indexN)rH   rI   rJ   r  r'   r]   rA   rA   rA   rB   r    r  r  c                   @   r%  )ITypeInfo_GetFuncDescResponse
ppFuncDescr  r  N)rH   rI   rJ   r  r   r  r]   rA   rA   rA   rB   r    r)  r  c                   @   r  )ITypeInfo_GetNamesrc   r  	cMaxNamesN)rH   rI   rJ   r  r  r'   r]   rA   rA   rA   rB   r    r  r  c                   @   r%  )ITypeInfo_GetNamesResponsergBstrNamespcNamesr  N)rH   rI   rJ   r  r'   r  r]   rA   rA   rA   rB   r    r)  r  c                   @   r  )ITypeInfo_GetDocumentationrg   r  refPtrFlagsN)rH   rI   rJ   r  r  r   r]   rA   rA   rA   rB   r"    r  r"  c                   @   r	  )"ITypeInfo_GetDocumentationResponse	pBstrNamepBstrDocStringpdwHelpContextr  N)rH   rI   rJ   r  r   r  r]   rA   rA   rA   rB   r$    r  r$  c           
      C   s  t  }|  }|d dkrtd i S |  }| }t|d d D ]a}||}||d d d}t	|d	 d d
  |
  t	d |d dkro|d	 d d
 }i ||< td|d D ]}	d|| |d	 |	 d
 < q`|d d tkr|d d d d || d< q$|S )Nr  r   zCAutomation Server does not support type information for this objectr  r  r  r     r   r   zP================================================================================r!  rC   r   r  r  r  r  )dictGetTypeInfoCountr   errorGetTypeInfoGetTypeAttrrangeGetFuncDescGetNamesr   r  r.   )

iInterfacemethodstypeInfoCount	iTypeInfo	iTypeAttrxfuncDescnamesnameparamrA   rA   rB   enumerateMethods  s,   

r;  c                 C   s(   | t kr| S | dd  dkr| d S | S )N )r.   )stringrA   rA   rB   checkNullString  s
   r?  c                   @   s   e Zd Zdd ZdS )	ITypeCompc                 C      t | | t| _d S r;   )r
   r<   IID_ITypeComp_iidr=   	interfacerA   rA   rB   r<        
zITypeComp.__init__Nr8  rA   rA   rA   rB   r@    s    r@  c                   @   s@   e Zd Zdd Zdd Zdd Zdd Zdd
dZdddZdS )	ITypeInfoc                 C   rA  r;   )r
   r<   IID_ITypeInforC  rD  rA   rA   rB   r<     rF  zITypeInfo.__init__c                 C       t  }| j|| j|  d}|S Nr'  uuid)r  requestrC  get_iPidr=   rM  resprA   rA   rB   r-       zITypeInfo.GetTypeAttrc                 C   sJ   t  }| j|| j|  d}tt|  d|d d |  | 	 dS )NrK      r  abDatatarget)
r  rM  rC  rN  r@  r   get_cinstancejoinget_ipidRemUnknown
get_targetrO  rA   rA   rB   GetTypeComp  s   .zITypeInfo.GetTypeCompc                 C   s(   t  }||d< | j|| j|  d}|S )Nr  rK  )r  rM  rC  rN  )r=   r  rM  rP  rA   rA   rB   r/    s   zITypeInfo.GetFuncDescre   c                 C   0   t  }||d< ||d< | j|| j|  d}|S )Nr  r  rK  )r  rM  rC  rN  )r=   r  r  rM  rP  rA   rA   rB   r0    
   zITypeInfo.GetNames   c                 C   r[  )Nr  r#  rK  )r"  rM  rC  rN  )r=   r  r#  rM  rP  rA   rA   rB   GetDocumentation  r\  zITypeInfo.GetDocumentationN)re   )r]  )	rH   rI   rJ   r<   r-  rZ  r/  r0  r^  rA   rA   rA   rB   rG    s    
rG  c                   @   s6   e Zd Zdd Zdd Zdd Zddd	Zd
d ZdS )	IDispatchc                 C   rA  r;   )r
   r<   IID_IDispatchrC  rD  rA   rA   rB   r<     rF  zIDispatch.__init__c                 C   rI  rJ  )r  rM  rC  rN  rO  rA   rA   rB   r*     rQ  zIDispatch.GetTypeInfoCountc                 C   sZ   t  }d|d< d|d< | j|| j|  d}tt|  d|d d |  | 	 dS )	Nr   r  r  rK  rR  r  rS  rT  )
r  rM  rC  rN  rG  r   rV  rW  rX  rY  rO  rA   rA   rB   r,  %  s
   .zIDispatch.GetTypeInfor   c           	      C   s   t  }t|d< |D ]}t }t||d< |d | q	t||d< ||d< | j|| j|  d}t	 }|d D ]}|| q8|S )Nr  rM   r   r  r  rK  r  )
r  IID_NULLr  r?  r   r   rM  rC  rN  r   )	r=   r   r  rM  r9  tmpNamerP  IDsidrA   rA   rB   GetIDsOfNames,  s   zIDispatch.GetIDsOfNamesc           
      C   s`   t  }||d< t|d< ||d< ||d< ||d< ||d< ||d< ||d< | j|| j|  d	}	|	S )
Nr  r  r  r  r  r	  r
  r  rK  )r  ra  rM  rC  rN  )
r=   r  r  r  r  r	  r
  r  rM  rP  rA   rA   rB   Invoke<  s   zIDispatch.InvokeN)r   )rH   rI   rJ   r<   r*  r,  re  rf  rA   rA   rA   rB   r_    s    
r_  )
__future__r   r   r  structr   r   impacketr   r   impacket.dcerpc.v5.dcomrtr   r	   r
   r   r   r   r   r   r   impacket.dcerpc.v5.dtypesr   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.   impacket.dcerpc.v5.enumr/   impacket.dcerpc.v5.ndrr0   r1   r2   r3   r4   r5   r6   r7   impacket.dcerpc.v5.rpcrtr8   impacket.uuidr9   r:   r`  rH  rB  ra  r  r  r\   r(  r  OLESTRr  rN   rL   rR   rQ   DISPATCH_METHODDISPATCH_PROPERTYGETDISPATCH_PROPERTYPUTDISPATCH_PROPERTYPUTREFDISPATCH_zeroVarResultDISPATCH_zeroExcepInfoDISPATCH_zeroArgErrrV   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/  r0  r1  r  r3  r9  r:  r;  r=  rK  rL  rM  rT  rV  rY  r  r4  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$  OPNUMSr;  r?  r@  rG  r_  rA   rA   rA   rB   <module>   s
  ,(	?&	
6				!	$