o
    j                    @   sx  d dl mZ d dl mZ d dlmZmZmZ d dlmZ d dl	Z	d dl
Z	d dlZd dlZd dl	mZ d dlmZ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 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, d dl-m.Z. d dl/m0Z0m1Z1 d dl2m3Z3m4Z4 d dl5m6Z6m7Z7 dddZ8G dd de.Z9dZ:dZ;dZ<dZ=dZ>dZ?dZ@dZAdZBdZCdZDdZEdZFdZGdZHdZIddd d!d"d#d$d%d&d'd(d)ZJd ddd*dd+d,d-d.d/d0d1ZKG d2d3 d3e6ZLeLZMeLZNG d4d5 d5e6ZOdZPePZQeQZRG d6d7 d7e6ZSG d8d9 d9e6ZTdZUd:ZVG d;d< d<eWZXG d=d> d>e,ZYi eYjZj[d?eYj\j[deYj]j[d@eYj^j[dAeYj_j[dBeYj`j[deYjaj[dCeYjbj[dDeYjcj[dEeYjdj[dFeYjej[dAeYjfj[ePeYjgj[ePeYjhj[ePeYjij[dAeYjjj[ePZki eYjZj[dGeYj\j[dHeYj]j[dIeYj^j[dJeYj_j[dKeYj`j[dLeYjaj[dMeYjbj[dNeYjcj[dOeYjdj[dPeYjej[dQeYjfj[dReYjgj[dSeYjhj[dTeYjij[dUeYjjj[dVZleYjij[eYjej[eYjZj[eYj\j[eYj]j[eYj^j[eYj_j[eYj`j[eYjaj[eYjbj[eYjcj[eYjdj[fZmeQZndZoeUZpG dWdX dXe6ZqeqZrG dYdZ dZe6ZsG d[d\ d\e6ZtetZudZveQZwePZxG d]d^ d^e6ZydZzdAZ{dZ|dZ}etZ~G d_d` d`e6ZdaZG dbdc dce6ZdZG ddde dee6ZeZG dfdg dge6ZdAZdAZeQZdZdhZdZePZeZePZeZeZeZeZG didj dje6ZG dkdl dle6ZG dmdn dne6ZeZdZeQZdZeZG dodp dpeZdZG dqdr dre6ZG dsdt dte6ZeZG dudv dve6ZeZeZG dwdx dxe6ZG dydz dze6ZG d{d| d|e6ZG d}d~ d~e6Ze3dZe3dZe3dZe4dZe4dZe4dZe4dZe4dZe4dZe4dZe4dZe4dZe4dZe4dZe4dZe"Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZG 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 de6ZG dd de6ZG dd de6ZG dd de6ZG dd de6ZG dd deZG dd deZG dd deZG dd de6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 d d deZG dd deZG dd deZG dd deZ G dd	 d	eZG d
d deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZ	G dd deZ
G dd deZG dd deZG d d! d!eZG d"d# d#eZG d$d% d%eZG d&d' d'eZG d(d) d)eZG d*d+ d+eZG d,d- d-eZG d.d/ d/eZG d0d1 d1eZG d2d3 d3eZG d4d5 d5eZG d6d7 d7eZG d8d9 d9eZG d:d; d;eZG d<d= d=eZG d>d? d?eZG d@dA dAeZG dBdC dCeZG dDdE dEeZG dFdG dGeZ G dHdI dIeZ!G dJdK dKeZ"G dLdM dMeZ#G dNdO dOeZ$G dPdQ dQeZ%G dRdS dSeZ&G dTdU dUeZ'G dVdW dWeZ(G dXdY dYeZ)G dZd[ d[eZ*G d\d] d]eZ+G d^d_ d_eZ,G d`da daeZ-G dbdc dceZ.G ddde deeZ/G dfdg dgeZ0G dhdi dieZ1G djdk dkeZ2G dldm dmeZ3G dndo doeZ4G dpdq dqeZ5G drds dseZ6G dtdu dueZ7G dvdw dweZ8G dxdy dyeZ9G dz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@G dd deZAG dd deZBG dd deZCG dd deZDG dd deZEG dd deZFG dd deZGG dd deZHG dd deZIG dd deZJG dd deZKG dd deZLG dd deZMG dd deZNG dd deZOG dd deZPG dd deZQG dd deZRG dd deZSG dd deZTG dd deZUG dd deZVG dd deZWG dd deZXG dd deZYi ZZdd Z[G dd deZ\G dd deZ]G dd deZ^G ddÄ deZ_G dĐdń deZ`G dƐdǄ deZaG dȐdɄ deZbG dʐd˄ deZcG d̐d̈́ deZdeedk	rdϐZfdS dS (      )division)print_function)unpackcalcsizepack)partialN)OrderedDict)	NDRSTRUCTNDRUniConformantArray
NDRPOINTERNDRUniConformantVaryingArrayNDRUNIONNDRENUM)	DCOMCALL
DCOMANSWERIRemUnknownPMInterfacePointer	INTERFACEPMInterfacePointer_ARRAY
BYTE_ARRAYPPMInterfacePointerOBJREF_CUSTOM)BSTR)	ULONGDWORDNULLLPWSTRLONGHRESULTPGUIDLPCSTRGUID)Enum)DCERPCException)hresult_errorsLOG)string_to_binuuidtup_to_bin)	Structurehexdumpc                 C   s   d}t | tjjrEtdd t|  D }t|  D ]&\}}dd|  d|tt	|   t	| }||d t
||| d 7 }q|S t | tjjrjt | t	sj| D ]}|dd|  d t
||d	 d 7 }qS|S t	| }|S )
N c                 S   s   g | ]}t t|qS  )lenstr).0xr+   r+   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/impacket/dcerpc/v5/dcom/wmi.py
<listcomp>3   s    z$format_structure.<locals>.<listcomp>
 z: )levelz-    )
isinstancecollectionsabcMappingmaxlistkeysitemsr,   r-   format_structureIterable)dr4   r/   lenkkvkey_texter+   r+   r0   r>   0   s   (&r>   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packetr+   r+   r0   rH   ?   s   zDCERPCSessionError.__init__c                 C   sl   | j tjv rtj| j  d }tj| j  d }d| j ||f S zd| j t| j jf W S    d| j   Y S )Nr      z&WMI SessionError: code: 0x%x - %s - %sz"WMI Session Error: code: 0x%x - %sz*WMI SessionError: unknown error code: 0x%x)rK   r$   ERROR_MESSAGES
WBEMSTATUS	enumItemsname)rI   error_msg_shorterror_msg_verboser+   r+   r0   __str__B   s   zDCERPCSessionError.__str__)NNN)__name__
__module____qualname__rH   rT   r+   r+   r+   r0   rF   >   s    
rF   rM             @      B=0r5   z<L=0x12345678<L=0"keyNADAreadwritevolatileproviderdynamiccimwin32r   CIMTYPE)r   rM   rX      r5               	   
   ri   rj   rk   rl   rm   rn   ro   )r_   r`   ra   rb   rc   rd   re   rf   rg   r   rh   c                   @   s0   e Zd ZdeffZdZdZd
ddZdd	 ZdS )ENCODED_STRINGEncoded_String_Flag))	Characterz))rr   uNr   c                 C   s   t | || |d urN| | d| _d| _t|dkrL| d dkr>|  j| j7  _|dd  d}|d |d d  }n| j| _d| _| | d S d S | j| _d | _	d S )Nr+   FrM   rq   r       T)
r(   rH   
fromString	structure	isUnicoder,   tasciifindtunicodedata)rI   r|   	alignmentindexr+   r+   r0   rH      s    

zENCODED_STRING.__init__c                 C   s*   |dkr| j r| jd dS t| |S )Nrr   utf-16le)rx   fieldsdecoder(   __getitem__)rI   r`   r+   r+   r0   r      s   zENCODED_STRING.__getitem__Nr   )	rU   rV   rW   ENCODED_STRING_FLAG	commonHdrry   r{   rH   r   r+   r+   r+   r0   rp      s    
rp   c                   @       e Zd ZddefddeffZdS )
DECORATIONDecServerName:DecNamespaceNameN)rU   rV   rW   DEC_SERVER_NAMEDEC_NAMESPACE_NAMErw   r+   r+   r+   r0   r          r   c                   @   (   e Zd ZdefdefdefdeffZdS )CLASS_HEADEREncodingLengthReservedOctetClassNameRefNdTableValueTableLengthN)rU   rV   rW   ENCODING_LENGTHRESERVED_OCTETCLASS_NAME_REFNDTABLE_VALUE_TABLE_LENGTHrw   r+   r+   r+   r0   r          r   c                   @      e Zd ZdefddfZdS )DERIVATION_LISTr   )_ClassNameEncodingz_-ClassNameEncodingself["EncodingLength"]-4)ClassNameEncodingr   N)rU   rV   rW   r   rw   r+   r+   r+   r0   r      s
    r   i    c                   @   s   e Zd Zdd ZdS )EnumTypec                 C   s   | j | jS rG   )rP   value)rI   attrr+   r+   r0   __getattr__      zEnumType.__getattr__N)rU   rV   rW   r   r+   r+   r+   r0   r      s    r   c                   @   s   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 S )!CIM_TYPE_ENUMrY      rX      ri            r5   rj      rm   e   f   g      i   i   i   i   i   i	   i
   i   i   i   i   ie   if   ig   i   N)#rU   rV   rW   CIM_TYPE_SINT8CIM_TYPE_UINT8CIM_TYPE_SINT16CIM_TYPE_UINT16CIM_TYPE_SINT32CIM_TYPE_UINT32CIM_TYPE_SINT64CIM_TYPE_UINT64CIM_TYPE_REAL32CIM_TYPE_REAL64CIM_TYPE_BOOLEANCIM_TYPE_STRINGCIM_TYPE_DATETIMECIM_TYPE_REFERENCECIM_TYPE_CHAR16CIM_TYPE_OBJECTCIM_ARRAY_SINT8CIM_ARRAY_UINT8CIM_ARRAY_SINT16CIM_ARRAY_UINT16CIM_ARRAY_SINT32CIM_ARRAY_UINT32CIM_ARRAY_SINT64CIM_ARRAY_UINT64CIM_ARRAY_REAL32CIM_ARRAY_REAL64CIM_ARRAY_BOOLEANCIM_ARRAY_STRINGCIM_ARRAY_DATETIMECIM_ARRAY_REFERENCECIM_ARRAY_CHAR16CIM_ARRAY_OBJECTr+   r+   r+   r0   r      sB    r   zb=0z<h=0z<H=0z<l=0z<q=0z<Q=0z<f=0z<d=0sint8uint8sint16uint16sint32uint32sint64uint64real32real64boolstringdatetime	referencechar16objectc                   @   s"   e Zd ZdeffZedd ZdS )ENCODED_VALUEQualifierNamec                 C   sn  |t tB  @ }|t @ }|dkr5||d  }|t @ rttd d }ttd d |d | d }||d  }t }t| d d }	t|	}
|tjj	kru|d| d  }t
|D ]}t|}||d  |t| d  }qY|}|S |tjj	kr||| d  }t
|D ]$}t|}t }|d |d< |d |d< || ||d d d  }q|}|S t
|D ]}|t|	|d |
 d  ||
d  }q|}|S |tjj	kr|d	krd
}|S d}|S |tjj	krt|}t }|d |d< |d |d< |}|S |tjj	tjj	tjj	fvr|}|S z	t|d }W |S  ty4   t jtjkr3td t|  w d S )N    r   r5   rr   r   ObjectEncodingLengthObjectBlocki  TrueFalsezUnicode Error: dumping heapData)CIM_ARRAY_FLAG	Inheritedr   HEAPREFr   r;   CIM_TYPES_REFr   r   r   rangerp   appendr,   getDatar   METHOD_SIGNATURE_BLOCKENCODING_UNITr   r   r   r   r   UnicodeDecodeErrorlogging	getLoggerr4   DEBUGr%   debugr)   )clscimTypeentryheappTypeheapDatadataSizenumItemsarrayunpackStrArraydataSizeArray_itemmsbunitr   r+   r+   r0   getValueG  s~   




zENCODED_VALUE.getValueN)rU   rV   rW   QUALIFIER_NAMErw   classmethodr  r+   r+   r+   r0   r   B  s
    r   c                   @   s,   e Zd ZdefdefdeffZdddZdS )		QUALIFIERr   QualifierFlavorQualifierTypeNr   c                 C   sR   t | || |d ur$| | dt| d t @  ff| _| | d S d | _d S )NQualifierValuer  )r(   rH   rv   r   r   rw   r|   rI   r|   r}   r+   r+   r0   rH     s   

zQUALIFIER.__init__r   )rU   rV   rW   r  QUALIFIER_FLAVORQUALIFIER_TYPEr   rH   r+   r+   r+   r0   r    s    r  c                   @   s"   e Zd ZdefddfZdd ZdS )QUALIFIER_SETr   )
_Qualifierz_-Qualifierr   )	Qualifierr   c                 C   s   | d }t  }t|dkrRt|}|d dkrd}n|d d@ r)t|d d@  }nt||d d  d }t|d	 |d
 |}|||< |t|d  }t|dks|S )Nr  r   r   r               rr   r  r	  )dictr,   r  DICTIONARY_REFERENCErp   r   r  )rI   r   r|   
qualifiersitemnqNamer   r+   r+   r0   getQualifiers  s   zQUALIFIER_SET.getQualifiersN)rU   rV   rW   r   rw   r  r+   r+   r+   r0   r    s    r  c                   @      e Zd ZdefdeffZdS )PropertyLookupPropertyNameRefPropertyInfoRefN)rU   rV   rW   PROPERTY_NAME_REFPROPERTY_INFO_REFrw   r+   r+   r+   r0   r        r  c                   @   s0   e Zd ZdefdefdefdefddeffZdS )PROPERTY_INFOPropertyTypeDeclarationOrderValueTableOffsetClassOfOriginPropertyQualifierSetr   N)	rU   rV   rW   PROPERTY_TYPEDECLARATION_ORDERVALUE_TABLE_OFFSETCLASS_OF_ORIGINPROPERTY_QUALIFIER_SETrw   r+   r+   r+   r0   r     s    r   i @  c                   @   s,   e Zd Zee ZdefddfZdd ZdS )PROPERTY_LOOKUP_TABLEPropertyCount)_PropertyLookupz_-PropertyLookupz-self["PropertyCount"]*self.PropertyLookupSize)r  r   c                 C   s  | d }t  }t| d D ]}t  }t|}|d d@ r%t|d d@  }nt||d d  d }t||d d  }|d }	|	t M }	|	t M }	t|	 }
|
|d	< ||d
< |d |d< |d |d< |d t@ |d< d |d< t  }|d d }t	|dkrt
|}|d d@ rt|d d@  }nt||d d  d }t|d |d |}|t	|d  }|||< t	|dks|||d< |||< || jd  }qttt| dd dS )Nr  r,  r  r  r  rr   r  r!  styperQ   typer"  order	inheritedr   r%  r  r   r   r  r	  r  c                 S   s   | d d S )NrM   r0  r+   r/   r+   r+   r0   <lambda>      z5PROPERTY_LOOKUP_TABLE.getProperties.<locals>.<lambda>r`   )r  r   r  r  rp   r   r   r   CIM_TYPE_TO_NAMEr,   r  r   r  PropertyLookupSizer   sortedr;   r=   )rI   r   	propTable
propertiespropertypropItemDictpropItempropNamepropInfor   sTyper  qualifiersBufrecordqualifierNamequalifierValuer+   r+   r0   getProperties  sD   


z#PROPERTY_LOOKUP_TABLE.getPropertiesN)	rU   rV   rW   r,   r  r7  PROPERTY_COUNTrw   rE  r+   r+   r+   r0   r+    s    
r+  c                   @   r   )HEAP
HeapLength)	_HeapItemz
_-HeapItemzself["HeapLength"]&0x7fffffff)HeapItemr   N)rU   rV   rW   HEAP_LENGTHrw   r+   r+   r+   r0   rG  "  s
    rG  c                	   @   sP   e Zd Zddefddefddefddefddddefd	d
f	Zdd Z	dd Z
dS )
CLASS_PARTClassHeaderr   DerivationListClassQualifierSetPropertyLookupTable)_NdTable_ValueTable_-NdTable_ValueTablez.self["ClassHeader"]["NdTableValueTableLength"]NdTable_ValueTabler   	ClassHeap)_Garbagez	_-Garbagez/self["ClassHeader"]["EncodingLength"]-len(self))Garbagez:=b""c                 C   s   | d  | d d S )NrO  rU  rJ  r  rI   r+   r+   r0   r  <  s   zCLASS_PART.getQualifiersc                    s0  | d d }| d  | d d  tt   fddd}t d d d }| d	 |d  }|D ]b} | d
 ttB  @ } | d
 t@ rOtd d }nt| d d }t	|}zt
||d | d }	W n   td d}	Y |	dkr|	dkrt | d
 |	|}
d|
  | d< ||d  }q3 S )NrU  rJ  rP  c                        |  d S Nr0  r+   rB   r:  r+   r0   r3  B  r4  z*CLASS_PART.getProperties.<locals>.<lambda>r5  rM   r5   rT  r/  r   r   z getProperties: Error unpacking!!r   z%sr   )rE  r8  r;   r<   r,   r   r   r   r   r   r   r%   errorr   r  )rI   r   sorted_propsvalueTableOff
valueTabler`   r   	unpackStrr   	itemValuer   r+   r]  r0   rE  ?  s*   
zCLASS_PART.getPropertiesN)rU   rV   rW   r   r   CLASS_QUALIFIER_SETr+  
CLASS_HEAPr   r  rE  r+   r+   r+   r0   rL  0  s    rL  z3s=b''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fZ
dS )	METHOD_DESCRIPTION
MethodNameMethodFlagsMethodPaddingMethodOriginMethodQualifiersInputSignatureOutputSignatureN)rU   rV   rW   METHOD_NAMEMETHOD_FLAGSMETHOD_PADDINGMETHOD_ORIGINMETHOD_QUALIFIERSINPUT_SIGNATUREOUTPUT_SIGNATURErw   r+   r+   r+   r0   rf    s    rf  c                   @   s@   e Zd Zee Zdefdefdefdddde	ffZ
dd	 Zd
S )METHODS_PARTr   MethodCountMethodCountPadding)_MethodDescriptionz_-MethodDescriptionz.self["MethodCount"]*self.MethodDescriptionSize)MethodDescriptionr   
MethodHeapr   c                 C   sv  t  }| d }| d d }t| d D ]}t  }t|}|d t@ r#	 t||d d  d |d< |d	 |d
< |d dkrPt||d d  }||}||d< |d dkr}t||d d  }	|	d dkry|	d d d  |d< |	d |d< nd |d< |d dkrt||d d  }
|
d dkr|
d d d  |d< |
d |d< nd |d< |t	|d  }|||d < q|S )Nry  rz  rJ  rv  rh  rg  rr   rQ   rj  originrk  r   r  rl  r   r   r   	ClassTypeCurrentClassInParamsInParamsRawrm  	OutParamsOutParamsRaw)
r   r   rf  WBEM_FLAVOR_ORIGIN_PROPAGATEDrp   r  r  r   rE  r,   )rI   methodsr|   r   method
methodDictr  qualifiersSetr  inputSignatureoutputSignaturer+   r+   r0   
getMethods  s:   
zMETHODS_PART.getMethodsN)rU   rV   rW   r,   rf  MethodDescriptionSizer   METHOD_COUNTMETHOD_COUNT_PADDINGMETHOD_HEAPrw   r  r+   r+   r+   r0   ru    s    
	ru  c                   @   s@   e Zd ZddefddeffZdd Zdd Zdd	 Zd
d Z	dS )CLASS_AND_METHODS_PART	ClassPartr   MethodsPartc                 C   s   | d d d }| d d d }|dkrdS ||d  }|s dS t |d	 }| d d
 d }t|dkrRt |d	 }|d| 7 }|tt |d d  }t|dks4|S )Nr  rM  r   rU  rJ  r   Noner*   rr   rN  r   r   z : %s r5   )rp   r,   )rI   
pClassNamecHeapbuffer	classNamederivationList
superClassr+   r+   r0   getClassName  s   z#CLASS_AND_METHODS_PART.getClassNamec                 C      | d   S Nr  rX  rY  r+   r+   r0   r    r   z$CLASS_AND_METHODS_PART.getQualifiersc                 C   r  r  )rE  rY  r+   r+   r0   rE    s   z$CLASS_AND_METHODS_PART.getPropertiesc                 C   r  )Nr  )r  rY  r+   r+   r0   r    r   z!CLASS_AND_METHODS_PART.getMethodsN)
rU   rV   rW   rL  ru  rw   r  r  rE  r  r+   r+   r+   r0   r    s    r  c                   @   s    e Zd ZddeffZdd ZdS )CURRENT_CLASS_NO_METHODSr  r   c                 C   s   dS )Nr+   r+   rY  r+   r+   r0   r    s   z#CURRENT_CLASS_NO_METHODS.getMethodsN)rU   rV   rW   rL  rw   r  r+   r+   r+   r0   r    s    r  c                   @   s,   e Zd ZdeffZddeffZdddZdS )	INSTANCE_PROP_QUALIFIER_SETInstPropQualSetFlagQualifierSetr   Nr   c                 C   sR   t | || d| _|d ur$| | | d dkrtd| | d S d | _d S )Nr+   r  rX   z self['InstPropQualSetFlag'] == 2)r(   rH   rw   rv   	Exceptionr|   r
  r+   r+   r0   rH     s   

z$INSTANCE_PROP_QUALIFIER_SET.__init__r   )rU   rV   rW   INST_PROP_QUAL_SET_FLAGr   r  tailrH   r+   r+   r+   r0   r    s    r  c                   @   r   )INSTANCE_QUALIFIER_SETr  r   InstancePropQualifierSetN)rU   rV   rW   r  r  rw   r+   r+   r+   r0   r    r   r  c                
   @   sd   e Zd Zddefdefdefdefddddefd	deffZ	dddZ
dd Zedd Zdd Zd
S )INSTANCE_TYPEr}  r   r   InstanceFlagsInstanceClassName)rQ  rR  zKself["CurrentClass"]["ClassPart"]["ClassHeader"]["NdTableValueTableLength"]rS  InstanceQualifierSetInstanceHeapNr   c                 C   s`   t | || d| _|d ur+| | | d d d d d d d | _| | d S d | _d S )Nr+   r}  r  rP  r,  rM   r5   )r(   rH   rw   rv   NdTableSizer|   r
  r+   r+   r0   rH   ,  s   
"
zINSTANCE_TYPE.__init__c                 C   s~   t |d d d }| d d | }dd t|D }|D ]}||| d  }t|d@ || d< t|d@ || d	< q|S )
NrM   r5   rT  c                 S   s"   g | ]}d D ]}||? d@ qqS ))r   rX   r5   rk   ri   r+   )r.   byteshiftr+   r+   r0   r1   <  s   " z2INSTANCE_TYPE.__processNdTable.<locals>.<listcomp>r0  null_defaultrX   inherited_default)r,   six	iterbytesr   )rI   r:  
octetCountpackedNdTableunpackedNdTabler`   ndEntryr+   r+   r0   __processNdTable9  s   zINSTANCE_TYPE.__processNdTablec                 C   s   | d t  @ tv o| d  S )Nr/  r  )r   CIM_NUMBER_TYPES)propr+   r+   r0   __isNonNullNumberD  s   zINSTANCE_TYPE.__isNonNullNumberc                    s0  | d d }|   }| d |d  }tt   fddd}|D ]r} | d ttB  @ } | d t@ r?td d }nt| d d }t|}	zt	||d |	 d	 }
W n   t
d
 d}
Y |
d	kso|  | rt | d |
|}| | d< n | d d	krd  | d< ||	d  }q# S )Nr  rJ  rT  c                    rZ  r[  r+   r\  r]  r+   r0   r3  L  r4  z)INSTANCE_TYPE.getValues.<locals>.<lambda>r5  r/  r   r   zgetValues: Error Unpacking!r   r   r1  )_INSTANCE_TYPE__processNdTabler8  r;   r<   r   r   r   r   r   r   r%   r^  _INSTANCE_TYPE__isNonNullNumberr   r  )rI   r:  r   r`  ra  r_  r`   r   rb  r   rc  r   r+   r]  r0   	getValuesH  s,   

zINSTANCE_TYPE.getValuesr   )rU   rV   rW   r  r   INSTANCE_FLAGSINSTANCE_CLASS_NAMEr  INSTANCE_HEAPr   rH   r  staticmethodr  r  r+   r+   r+   r0   r    s    

r  c                   @   r   )
CLASS_TYPEParentClassr   r}  N)rU   rV   rW   PARENT_CLASSCURRENT_CLASSrw   r+   r+   r+   r0   r  j  r   r  c                   @   sp   e Zd ZdeffZddeffZddeffZdde	ffZ
ddd	Zd
d ZdddZdddZdd Zdd ZdS )OBJECT_BLOCKObjectFlags
Decorationr   InstanceTyper|  Nr   c                 C   s   t | || d | _d | _|d urHd| _t|dd d@ r&|  j| j7  _t|dd d@ r9|  j| j7  _n|  j| j7  _| 	| d S d | _
d S )Nr+   r   rM   r5   )r(   rH   ctParent	ctCurrentrw   ord
decoration	classTypeinstanceTyperv   r|   r
  r+   r+   r0   rH     s   
zOBJECT_BLOCK.__init__c                 C   s   | d t @ rdS dS )Nr  FT)	CIM_CLASSrY  r+   r+   r0   
isInstance  s   zOBJECT_BLOCK.isInstancec              	   C   s
  |  }|D ]}td|  q| }td|  | }|d ur&||}|D ]}|| d }|D ]}|dkrBtd||| f  q2td|| d || d f d	d
 || d d ur|| d t @ }	|	tjjkrqtd q(|	tj	jkr|| d dkrtd|| d   q(tdt
dd tt|| d D   q(td|| d   q(td q(t  | }
|
D ]}|
| d D ]}td|  q|
| d d u r|
| d d u rtdd|f  |
| d d u rt|
| d dkrtd|
| d d d |f  qd}|
| d d ur%d|
| d v r%|
| d d d }td||f d	d
 |
| d d urR|
| d D ]}td|
| d | d |f  q>|
| d d urz|
| d D ]}|dkrxtd|
| d | d |f  qatd qtd d S ) Nz[%s]zclass %s 
{r  rh   z		[%s(%s)]z	%s %sr.  rQ   r3   )endr   r/  z= IWbemClassObject
r   z= %s
c                 s   s    | ]}d V  qdS )IWbemClassObjectNr+   )r.   r   r+   r+   r0   	<genexpr>  s    z*OBJECT_BLOCK.printClass.<locals>.<genexpr>r2   z	[%s]r~  r  z
	%s %s();
voidrM   ReturnValuer  z	%s %s(
z		[in]    %s %s,z		[out]    %s %s,z	);
})r  printr  rE  r  r   r   r   r   r   r;   r   r,   r  )rI   pClass	cInstancer  	qualifierr  r:  pNamer  r   r  
methodNamereturnValuer+   r+   r0   
printClass  sb   
$
,
 ("$
 
zOBJECT_BLOCK.printClassc                 C   s`   t  }| |d< | |d< | |d< | |d< |d ur*||d |d< |S d |d< |S )NrQ   r  r:  r  values)r   r  r  rE  r  r  )rI   r  r  	classDictr+   r+   r0   
parseClass  s   zOBJECT_BLOCK.parseClassc                 C   s   | d t @ dkr!| d d }| }|d ur| || d | _d S | d d }| d d }| }|d ur;| || _| }|d urK| || _d S d S Nr  r   r  r}  r|  r  )r  r  r  r  r  rI   r  currentNamer  
parentNamer+   r+   r0   parseObject  s   zOBJECT_BLOCK.parseObjectc                 C   s   | d t @ dkr | d d }| }|d ur| || d  d S | d d }| d d }| }|d ur9| | | }|d urH| | d S d S r  )r  r  r  r  r+   r+   r0   printInformation  s   
zOBJECT_BLOCK.printInformationr   rG   )rU   rV   rW   OBJECT_FLAGSr   r   r  r  r  r  r  rH   r  r  r  r  r  r+   r+   r+   r0   r  q  s    


Cr  c                   @   s.   e Zd ZdeffZdddeffZd	ddZdS )
r   r   )_ObjectBlock_-ObjectBlockzself["EncodingLength"]r   r   Nr   c                 C   sZ   t | || |d ur(| | | d dkr!d| _|  j| j7  _| | d S d | _d S )Nr   r   r+   )r(   rH   rv   rw   r  r|   r
  r+   r+   r0   rH     s   

zMETHOD_SIGNATURE_BLOCK.__init__r   )rU   rV   rW   r   r   r  r  rH   r+   r+   r+   r0   r     s    r   c                   @   s&   e Zd ZdefdefdddeffZdS )r   	Signaturer   )r  r  zself["ObjectEncodingLength"]r   r   N)rU   rV   rW   	SIGNATUREOBJECT_ENCODING_LENGTHr  rw   r+   r+   r+   r0   r   (  s    r   z$8BC3F05E-D86B-11D0-A075-00C04FB68820z$C49E32C6-BC8B-11D2-85D4-00105A1F8304z$4590F812-1D3A-11D0-891F-00AA004B2E24)z$F309AD18-D86A-11d0-A075-00C04FB688200.0)z$d4781cd6-e5d3-44df-ad94-930efe48a887r  )z$541679AB-2E5F-11d3-B34E-00104BCC4B4Ar  )z$9556DC99-828C-11CF-A37E-00AA003240C7r  )z$C49E32C7-BC8B-11d2-85D4-00105A1F8304r  )z$A359DEC5-E813-4834-8A2A-BA7F1D777D76r  )z$DC12A681-737F-11CF-884D-00AA004B2E24r  )z$44aca674-e8fc-11d0-a07c-00c04fb68820r  )z$027947e1-d731-11ce-a357-000000000001r  )z$44aca675-e8fc-11d0-a07c-00c04fb68820r  )z$1C1C45EE-4395-11d2-B60B-00104B703EFDr  )z$423EC01E-2E35-11d2-B604-00104B703EFDr                r   c                   @      e Zd ZdZdS )UCHAR_ARRAY_CVcN)rU   rV   rW   r   r+   r+   r+   r0   r  ]      r  c                   @      e Zd ZdeffZdS )PUCHAR_ARRAY_CVDataN)rU   rV   rW   r  referentr+   r+   r+   r0   r  `      r  c                   @      e Zd ZeZdS )PMInterfacePointer_ARRAY_CVN)rU   rV   rW   r   r   r+   r+   r+   r0   r  e  r  r  c                   @   r  )ULONG_ARRAYN)rU   rV   rW   r   r   r+   r+   r+   r0   r  j  r  r  c                   @   r  )PULONG_ARRAYr  N)rU   rV   rW   r  r  r+   r+   r+   r0   r  m  r  r  c                   @       e Zd ZdZG dd deZdS )WBEM_CHANGE_FLAG_TYPE)r  <Lc                   @   s    e Zd ZdZdZdZdZdZdS )zWBEM_CHANGE_FLAG_TYPE.enumItemsr   rM   rX   rZ   r[   N)rU   rV   rW   WBEM_FLAG_CREATE_OR_UPDATEWBEM_FLAG_UPDATE_ONLYWBEM_FLAG_CREATE_ONLYWBEM_FLAG_UPDATE_SAFE_MODEWBEM_FLAG_UPDATE_FORCE_MODEr+   r+   r+   r0   rP   x  s    rP   NrU   rV   rW   rw   r"   rP   r+   r+   r+   r0   r   s      r   c                   @   r  )WBEM_GENERIC_FLAG_TYPEr  c                   @   s4   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S )z WBEM_GENERIC_FLAG_TYPE.enumItemsr   rY   rZ   r[   r\   r  r  r  r  r  N)rU   rV   rW   WBEM_FLAG_RETURN_WBEM_COMPLETEWBEM_FLAG_RETURN_IMMEDIATELYWBEM_FLAG_FORWARD_ONLYWBEM_FLAG_NO_ERROR_OBJECTWBEM_FLAG_SEND_STATUSWBEM_FLAG_ENSURE_LOCATABLEWBEM_FLAG_DIRECT_READWBEM_MASK_RESERVED_FLAGS WBEM_FLAG_USE_AMENDED_QUALIFIERSWBEM_FLAG_STRONG_VALIDATIONr+   r+   r+   r0   rP     s    rP   Nr  r+   r+   r+   r0   r
    r	  r
  c                   @      e Zd ZG dd deZdS )WBEM_STATUS_TYPEc                   @      e Zd ZdZdZdZdS )zWBEM_STATUS_TYPE.enumItemsr   rM   rX   N)rU   rV   rW   WBEM_STATUS_COMPLETEWBEM_STATUS_REQUIREMENTSWBEM_STATUS_PROGRESSr+   r+   r+   r0   rP         rP   NrU   rV   rW   r"   rP   r+   r+   r+   r0   r        r  c                   @   r  )WBEM_TIMEOUT_TYPEr  c                   @      e Zd ZdZdZdS )zWBEM_TIMEOUT_TYPE.enumItemsr   r   N)rU   rV   rW   WBEM_NO_WAITWBEM_INFINITEr+   r+   r+   r0   rP         rP   Nr  r+   r+   r+   r0   r    r	  r  c                   @   r  )WBEM_QUERY_FLAG_TYPEr  c                   @   r  )zWBEM_QUERY_FLAG_TYPE.enumItemsr   rM   rX   N)rU   rV   rW   WBEM_FLAG_DEEPWBEM_FLAG_SHALLOWWBEM_FLAG_PROTOTYPEr+   r+   r+   r0   rP     r  rP   Nr  r+   r+   r+   r0   r#    r	  r#  c                   @   r  )WBEM_BACKUP_RESTORE_FLAGSr  c                   @   r  )z#WBEM_BACKUP_RESTORE_FLAGS.enumItemsrM   N)rU   rV   rW   'WBEM_FLAG_BACKUP_RESTORE_FORCE_SHUTDOWNr+   r+   r+   r0   rP     r  rP   Nr  r+   r+   r+   r0   r'    r	  r'  c                   @   r  )rO   r  c                   @   s   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&d%Z'd&Z(d'Z)d(Z*d)Z+d*Z,d+Z-d,Z.d-Z/d.Z0d/Z1d0Z2d1Z3d2Z4d3Z5d4Z6d5Z7d6Z8d7Z9d8Z:d9Z;d:Z<d;Z=d<Z>d=Z?d>Z@d?ZAd@ZBdAZCdBZDdCZEdDZFdEZGdFS )GzWBEMSTATUS.enumItemsr   rM   i  i  i  l     l     l     l     l     l     l     l     l   	  l   
  l     l     l     l     l     l     l     l     l     l      l   3  l   @   l     l     l     l     l     l     l   $  l   %  l   &  l   (  l   -  l   .  l   /  l   1  l   2  l   :  l   ;  l   =  l   l  l   E  l   U  l   V  l   X  l   Y  l   Z  l   [  l   \  l   ]  l   `  l   a  l   b  l   c  l   e  l   f  l   z  l     l     l     l     l     l      l      N)HrU   rV   rW   WBEM_S_NO_ERRORWBEM_S_FALSEWBEM_S_TIMEDOUTWBEM_S_NEW_STYLEWBEM_S_PARTIAL_RESULTSWBEM_E_FAILEDWBEM_E_NOT_FOUNDWBEM_E_ACCESS_DENIEDWBEM_E_PROVIDER_FAILUREWBEM_E_TYPE_MISMATCHWBEM_E_OUT_OF_MEMORYWBEM_E_INVALID_CONTEXTWBEM_E_INVALID_PARAMETERWBEM_E_NOT_AVAILABLEWBEM_E_CRITICAL_ERRORWBEM_E_NOT_SUPPORTEDWBEM_E_PROVIDER_NOT_FOUND$WBEM_E_INVALID_PROVIDER_REGISTRATIONWBEM_E_PROVIDER_LOAD_FAILUREWBEM_E_INITIALIZATION_FAILUREWBEM_E_TRANSPORT_FAILUREWBEM_E_INVALID_OPERATIONWBEM_E_ALREADY_EXISTSWBEM_E_UNEXPECTEDWBEM_E_INCOMPLETE_CLASSWBEM_E_SHUTTING_DOWN	E_NOTIMPLWBEM_E_INVALID_SUPERCLASSWBEM_E_INVALID_NAMESPACEWBEM_E_INVALID_OBJECTWBEM_E_INVALID_CLASSWBEM_E_INVALID_QUERYWBEM_E_INVALID_QUERY_TYPEWBEM_E_PROVIDER_NOT_CAPABLEWBEM_E_CLASS_HAS_CHILDRENWBEM_E_CLASS_HAS_INSTANCESWBEM_E_ILLEGAL_NULLWBEM_E_INVALID_CIM_TYPEWBEM_E_INVALID_METHOD WBEM_E_INVALID_METHOD_PARAMETERSWBEM_E_INVALID_PROPERTYWBEM_E_CALL_CANCELLEDWBEM_E_INVALID_OBJECT_PATHWBEM_E_OUT_OF_DISK_SPACE WBEM_E_UNSUPPORTED_PUT_EXTENSIONWBEM_E_QUOTA_VIOLATIONWBEM_E_SERVER_TOO_BUSYWBEM_E_METHOD_NOT_IMPLEMENTEDWBEM_E_METHOD_DISABLEDWBEM_E_UNPARSABLE_QUERYWBEM_E_NOT_EVENT_CLASSWBEM_E_MISSING_GROUP_WITHINWBEM_E_MISSING_AGGREGATION_LISTWBEM_E_PROPERTY_NOT_AN_OBJECTWBEM_E_AGGREGATING_BY_OBJECT%WBEM_E_BACKUP_RESTORE_WINMGMT_RUNNINGWBEM_E_QUEUE_OVERFLOWWBEM_E_PRIVILEGE_NOT_HELDWBEM_E_INVALID_OPERATORWBEM_E_CANNOT_BE_ABSTRACTWBEM_E_AMENDED_OBJECTWBEM_E_VETO_PUTWBEM_E_PROVIDER_SUSPENDED$WBEM_E_ENCRYPTED_CONNECTION_REQUIREDWBEM_E_PROVIDER_TIMED_OUTWBEM_E_NO_KEYWBEM_E_PROVIDER_DISABLEDWBEM_E_REGISTRATION_TOO_BROADWBEM_E_REGISTRATION_TOO_PRECISEr+   r+   r+   r0   rP     s    rP   Nr  r+   r+   r+   r0   rO     r	  rO   c                   @   r  )WBEM_CONNECT_OPTIONSr  c                   @   r  )zWBEM_CONNECT_OPTIONS.enumItemsr[   r  NrU   rV   rW   !WBEM_FLAG_CONNECT_REPOSITORY_ONLYWBEM_FLAG_CONNECT_PROVIDERSr+   r+   r+   r0   rP   	  r"  rP   Nr  r+   r+   r+   r0   rn    r	  rn  c                   @   r  )ObjectArray))dwByteOrderingr^   )abSignaturez8s="WBEMDATA")dwSizeOfHeader1z<L=0x1a)dwDataSize1r^   )dwFlagsr^   )bVersionzB=1)bPacketTyper]   )dwSizeOfHeader2<L=8)dwDataSize2r  zlen(self["wbemObjects"])+12)dwSizeOfHeader3z<L=12)dwDataSize3r  zlen(self["dwDataSize2"])-12))dwNumObjectsr^   )_wbemObjectsz_-wbemObjectszself["dwDataSize3"])wbemObjectsr   NrU   rV   rW   rw   r+   r+   r+   r0   rr    r  rr  c                   @   r  )WBEM_DATAPACKET_OBJECT))dwSizeOfHeaderz<L=9)dwSizeOfDatar  zlen(self["Object"]))bObjectTyper]   )_Objectz_-Objectself["dwSizeOfData"])Objectr   Nr  r+   r+   r+   r0   r  !  r  r  c                   @   r  )WBEMOBJECT_CLASS))r  r{  r  r  zlen(self["ObjectData"])_ObjectDataz_-ObjectDatar  
ObjectDatar   Nr  r+   r+   r+   r0   r  +  r  r  c                   @   r  )WBEMOBJECT_INSTANCE)r  z<L=0x18r  )classIDz16s=b" "*16r  r  Nr  r+   r+   r+   r0   r  4  r  r  c                   @   r  )WBEMOBJECT_INSTANCE_NOCLASSr  Nr  r+   r+   r+   r0   r  >  r  r  c                   @   s(   e Zd ZdefdefdefdeffZdS )WBEM_REFRESHED_OBJECTm_lRequestIdm_lBlobTypem_lBlobLengthm_pBlobN)rU   rV   rW   r   r   rw   r+   r+   r+   r0   r  H  r   r  c                   @   r  )WBEM_REFRESHED_OBJECT_ARRAYN)rU   rV   rW   r  r   r+   r+   r+   r0   r  P  r  r  c                   @   r  )PWBEM_REFRESHED_OBJECT_ARRAYr  N)rU   rV   rW   r  r  r+   r+   r+   r0   r  S  r  r  c                   @   r  )WBEM_INSTANCE_BLOB))Versionz<L=0x1)
numObjectsr^   )Objectsr   Nr  r+   r+   r+   r0   r  Y  r  r  c                   @   r  )WBEM_INSTANCE_BLOB_TYPEr  c                   @   r  )z!WBEM_INSTANCE_BLOB_TYPE.enumItemsr[   r  Nro  r+   r+   r+   r0   rP   f  r"  rP   Nr  r+   r+   r+   r0   r  a  r	  r  c                   @   r  )_WBEM_REFRESH_INFO_NON_HIPERFm_wszNamespacem_pTemplateN)rU   rV   rW   r   r   rw   r+   r+   r+   r0   r  k  r  r  c                   @   "   e Zd ZdefdefdeffZdS )_WBEM_REFRESH_INFO_REMOTEm_pRefresherr  m_GuidN)rU   rV   rW   r   r!   rw   r+   r+   r+   r0   r  r  
    r  c                   @   r  )WBEM_REFRESH_TYPEc                   @   r  )zWBEM_REFRESH_TYPE.enumItemsr   ri   rk   N)rU   rV   rW   WBEM_REFRESH_TYPE_INVALIDWBEM_REFRESH_TYPE_REMOTEWBEM_REFRESH_TYPE_NON_HIPERFr+   r+   r+   r0   rP   {  r  rP   Nr  r+   r+   r+   r0   r  z  r  r  c                   @   s8   e Zd ZdeffZejdefejde	fej
defiZdS )_WBEM_REFRESH_INFO_UNIONtagm_Remotem_NonHiPerfm_hresN)rU   rV   rW   r   r   r  r  r  r  r  r  r   unionr+   r+   r+   r0   r    s    


r  c                   @   s"   e Zd ZdefdefdeffZdS )_WBEM_REFRESH_INFOm_lTypem_Infom_lCancelIdN)rU   rV   rW   r   r  rw   r+   r+   r+   r0   r    r  r  c                   @   "   e Zd ZdefdefdeffZdS )_WBEM_REFRESHER_IDm_szMachineNamem_dwProcessIdm_guidRefresherIdN)rU   rV   rW   r    r   r!   rw   r+   r+   r+   r0   r    r  r  c                   @   r  )_WBEM_RECONNECT_INFOr  
m_pwcsPathN)rU   rV   rW   r    r   rw   r+   r+   r+   r0   r    r  r  c                   @   r  )_WBEM_RECONNECT_INFO_ARRAYNrU   rV   rW   r  r   r+   r+   r+   r0   r    r  r  c                   @   r  )_WBEM_RECONNECT_RESULTSm_lIdm_hrN)rU   rV   rW   r   r   rw   r+   r+   r+   r0   r    r  r  c                   @   r  )_WBEM_RECONNECT_RESULTS_ARRAYNr  r+   r+   r+   r0   r    r  r  c                   @       e Zd ZdZdefdeffZdS )"IWbemLevel1Login_EstablishPositionri   	reserved1	reserved2N)rU   rV   rW   opnumr   r   rw   r+   r+   r+   r0   r    
    r  c                   @   r  )*IWbemLevel1Login_EstablishPositionResponseLocaleVersion	ErrorCodeNrU   rV   rW   r   error_status_trw   r+   r+   r+   r0   r    r  r  c                   @       e Zd ZdZdefdeffZdS )!IWbemLevel1Login_RequestChallenger5   r  r  N)rU   rV   rW   r  r   rw   r+   r+   r+   r0   r    r  r  c                   @   r  ))IWbemLevel1Login_RequestChallengeResponse	reserved3r  NrU   rV   rW   r  r  rw   r+   r+   r+   r0   r    r  r  c                   @   ,   e Zd ZdZdefdefdefdeffZdS )IWbemLevel1Login_WBEMLoginrj   r  r  r  	reserved4N)	rU   rV   rW   r  r   r  r   r   rw   r+   r+   r+   r0   r        r  c                   @   r  )"IWbemLevel1Login_WBEMLoginResponse	reserved5r  Nr  r+   r+   r+   r0   r    r  r  c                   @   ,   e Zd ZdZdefdefdefdeffZdS )IWbemLevel1Login_NTLMLoginrk   wszNetworkResourcewszPreferredLocalelFlagspCtxN)rU   rV   rW   r  r   r   r   rw   r+   r+   r+   r0   r    r  r  c                   @   r  )"IWbemLevel1Login_NTLMLoginResponseppNamespacer  NrU   rV   rW   r   r  rw   r+   r+   r+   r0   r    r  r  c                   @   r  )IWbemObjectSink_Indicateri   lObjectCount
apObjArrayN)rU   rV   rW   r  r   r   rw   r+   r+   r+   r0   r    r  r  c                   @   r  ) IWbemObjectSink_IndicateResponser  NrU   rV   rW   r  rw   r+   r+   r+   r0   r    r  r  c                   @   r  )IWbemObjectSink_SetStatusr5   r  hResultstrParam	pObjParamN)	rU   rV   rW   r  r   r   r   r   rw   r+   r+   r+   r0   r    r  r  c                   @   r  )!IWbemObjectSink_SetStatusResponser  Nr  r+   r+   r+   r0   r    r  r  c                   @   2   e Zd ZdZdefdefdefdefdeffZdS )IWbemServices_OpenNamespaceri   strNamespacer  r  ppWorkingNamespaceppResultNrU   rV   rW   r  r   r   r   rw   r+   r+   r+   r0   r        r  c                   @   r  )#IWbemServices_OpenNamespaceResponser  r  r  NrU   rV   rW   r   r  rw   r+   r+   r+   r0   r    r  r  c                   @      e Zd ZdZdeffZdS )IWbemServices_CancelAsyncCallr5   IWbemObjectSinkNrU   rV   rW   r  r   rw   r+   r+   r+   r0   r  !      r  c                   @   r  )%IWbemServices_CancelAsyncCallResponser  Nr  r+   r+   r+   r0   r  '  r  r  c                   @   r  )IWbemServices_QueryObjectSinkrj   r  NrU   rV   rW   r  r   rw   r+   r+   r+   r0   r  -  r  r  c                   @   r  )%IWbemServices_QueryObjectSinkResponseppResponseHandlerr  Nr  r+   r+   r+   r0   r  3  r  r  c                   @   r  )IWbemServices_GetObjectrk   strObjectPathr  r  ppObjectppCallResultNr  r+   r+   r+   r0   r  :  r  r  c                   @   r  )IWbemServices_GetObjectResponser  r  r  Nr  r+   r+   r+   r0   r  D  r  r  c                   @   ,   e Zd ZdZdefdefdefdeffZdS )IWbemServices_GetObjectAsyncrl   r   r  r  pResponseHandlerNr  r+   r+   r+   r0   r  L  r  r  c                   @   r  )$IWbemServices_GetObjectAsyncResponser  Nr  r+   r+   r+   r0   r  U  r  r  c                   @   s2   e Zd ZdZdefdefdefdefdeffZdS )IWbemServices_PutClassrm   pObjectr  r  r  r  NrU   rV   rW   r  r   r   rw   r+   r+   r+   r0   r  [  r  r  c                   @   r  )IWbemServices_PutClassResponser  r  Nr  r+   r+   r+   r0   r  e  r  r  c                   @   ,   e Zd ZdZdefdefdefdeffZdS )IWbemServices_PutClassAsyncrn   r	  r  r  r  Nr
  r+   r+   r+   r0   r  l  r  r  c                   @   r  )#IWbemServices_PutClassAsyncResponser  Nr  r+   r+   r+   r0   r  u  r  r  c                   @   r  )IWbemServices_DeleteClassro   strClassr  r  r  Nr  r+   r+   r+   r0   r  {  r  r  c                   @   r  )!IWbemServices_DeleteClassResponser  r  Nr  r+   r+   r+   r0   r    r  r  c                   @   r  )IWbemServices_DeleteClassAsyncr   r  r  r  r  Nr  r+   r+   r+   r0   r    r  r  c                   @   r  )&IWbemServices_DeleteClassAsyncResponser  Nr  r+   r+   r+   r0   r    r  r  c                   @   &   e Zd ZdZdefdefdeffZdS )IWbemServices_CreateClassEnum   strSuperClassr  r  Nr  r+   r+   r+   r0   r        r  c                   @   r  )%IWbemServices_CreateClassEnumResponseppEnumr  Nr  r+   r+   r+   r0   r    r  r  c                   @   r  )"IWbemServices_CreateClassEnumAsyncr   r  r  r  r  Nr  r+   r+   r+   r0   r    r  r  c                   @   r  )*IWbemServices_CreateClassEnumAsyncResponser  Nr  r+   r+   r+   r0   r    r  r  c                   @   r  )IWbemServices_PutInstance   pInstr  r  r  Nr
  r+   r+   r+   r0   r    r  r  c                   @   r  )!IWbemServices_PutInstanceResponser  r  Nr  r+   r+   r+   r0   r     r  r   c                   @   r  )IWbemServices_PutInstanceAsync   r  r  r  r  Nr
  r+   r+   r+   r0   r!    r  r!  c                   @   r  )&IWbemServices_PutInstanceAsyncResponser  Nr  r+   r+   r+   r0   r#    r  r#  c                   @   r  )IWbemServices_DeleteInstancerY   r   r  r  r  Nr  r+   r+   r+   r0   r$    r  r$  c                   @   r  )$IWbemServices_DeleteInstanceResponser  r  Nr  r+   r+   r+   r0   r%    r  r%  c                   @   r  )!IWbemServices_DeleteInstanceAsyncr   r   r  r  r  Nr  r+   r+   r+   r0   r&    r  r&  c                   @   r  ))IWbemServices_DeleteInstanceAsyncResponser  Nr  r+   r+   r+   r0   r'    r  r'  c                   @   r  ) IWbemServices_CreateInstanceEnumr   r  r  r  Nr  r+   r+   r+   r0   r(    r  r(  c                   @   r  )(IWbemServices_CreateInstanceEnumResponser  r  Nr  r+   r+   r+   r0   r)    r  r)  c                   @   r  )%IWbemServices_CreateInstanceEnumAsyncr   r  r  r  r  Nr  r+   r+   r+   r0   r*    r  r*  c                   @   r  )-IWbemServices_CreateInstanceEnumAsyncResponser  Nr  r+   r+   r+   r0   r+    r  r+  c                   @   r  )IWbemServices_ExecQueryr   strQueryLanguagestrQueryr  r  Nr  r+   r+   r+   r0   r,    r  r,  c                   @   r  )IWbemServices_ExecQueryResponser  r  Nr  r+   r+   r+   r0   r/    r  r/  c                   @   2   e Zd ZdZdefdefdefdefdeffZdS )IWbemServices_ExecQueryAsyncr   r-  r.  r  r  r  Nr  r+   r+   r+   r0   r1  $  r  r1  c                   @   r  )$IWbemServices_ExecQueryAsyncResponser  Nr  r+   r+   r+   r0   r2  .  r  r2  c                   @   r  )#IWbemServices_ExecNotificationQuery   r-  r.  r  r  Nr  r+   r+   r+   r0   r3  4  r  r3  c                   @   r  )+IWbemServices_ExecNotificationQueryResponser  r  Nr  r+   r+   r+   r0   r5  =  r  r5  c                   @   r0  )(IWbemServices_ExecNotificationQueryAsync   r-  r.  r  r  r  Nr  r+   r+   r+   r0   r6  D  r  r6  c                   @   r  )0IWbemServices_ExecNotificationQueryAsyncResponser  Nr  r+   r+   r+   r0   r8  N  r  r8  c                   @   s>   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fZd	S )
IWbemServices_ExecMethod   r   strMethodNamer  r  	pInParamsppOutParamsr  N)	rU   rV   rW   r  r   r   r   r   rw   r+   r+   r+   r0   r9  T  s    r9  c                   @   r  ) IWbemServices_ExecMethodResponser=  r  r  Nr  r+   r+   r+   r0   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 )	IWbemServices_ExecMethodAsync   r   r;  r  r  r<  r  Nr  r+   r+   r+   r0   r?  h  s    r?  c                   @   r  )%IWbemServices_ExecMethodAsyncResponser  Nr  r+   r+   r+   r0   rA  s  r  rA  c                   @   r  )IEnumWbemClassObject_Resetri   r+   NrU   rV   rW   r  rw   r+   r+   r+   r0   rB  z  r"  rB  c                   @   r  )"IEnumWbemClassObject_ResetResponser  Nr  r+   r+   r+   r0   rD    r  rD  c                   @   r  )IEnumWbemClassObject_Nextr5   lTimeoutuCountN)rU   rV   rW   r  r   rw   r+   r+   r+   r0   rE    r  rE  c                   @   r  )!IEnumWbemClassObject_NextResponse	apObjects
puReturnedr  N)rU   rV   rW   r  r   r  rw   r+   r+   r+   r0   rH    r  rH  c                   @   r  )IEnumWbemClassObject_NextAsyncrj   rF  pSinkN)rU   rV   rW   r  r   r   rw   r+   r+   r+   r0   rK    r  rK  c                   @   r  )&IEnumWbemClassObject_NextAsyncResponser  Nr  r+   r+   r+   r0   rM    r  rM  c                   @   r  )IEnumWbemClassObject_Clonerk   r+   NrC  r+   r+   r+   r0   rN    r"  rN  c                   @   r  )"IEnumWbemClassObject_CloneResponser  r  Nr  r+   r+   r+   r0   rO    r  rO  c                   @   r  )IEnumWbemClassObject_Skiprl   rF  rG  N)rU   rV   rW   r  r   r   rw   r+   r+   r+   r0   rP    r  rP  c                   @   r  )!IEnumWbemClassObject_SkipResponser  Nr  r+   r+   r+   r0   rQ    r  rQ  c                   @   r  )IWbemCallResult_GetResultObjectri   rF  Nr  r+   r+   r+   r0   rR    r  rR  c                   @   r  )'IWbemCallResult_GetResultObjectResponseppResultObjectr  Nr  r+   r+   r+   r0   rS    r  rS  c                   @   r  )IWbemCallResult_GetResultStringr5   rF  Nr  r+   r+   r+   r0   rU    r  rU  c                   @   r  )'IWbemCallResult_GetResultStringResponsepstrResultStringr  N)rU   rV   rW   r   r  rw   r+   r+   r+   r0   rV    r  rV  c                   @   r  )!IWbemCallResult_GetResultServicesrj   rF  Nr  r+   r+   r+   r0   rX    r  rX  c                   @   r  ))IWbemCallResult_GetResultServicesResponse
ppServicesr  Nr  r+   r+   r+   r0   rY    r  rY  c                   @   r  )IWbemCallResult_GetCallStatusrk   rF  Nr  r+   r+   r+   r0   r[    r  r[  c                   @   r  )%IWbemCallResult_GetCallStatusResponseplStatusr  N)rU   rV   rW   r   r  rw   r+   r+   r+   r0   r\    r  r\  c                   @   r  ) IWbemFetchSmartEnum_GetSmartEnumri   r+   NrC  r+   r+   r+   r0   r^    r"  r^  c                   @   r  )(IWbemFetchSmartEnum_GetSmartEnumResponseppSmartEnumr  Nr  r+   r+   r+   r0   r_    r  r_  c                   @   r  )IWbemWCOSmartEnum_Nextri   	proxyGUIDrF  rG  N)rU   rV   rW   r  REFGUIDr   r   rw   r+   r+   r+   r0   ra    r  ra  c                   @   s(   e Zd ZdefdefdefdeffZdS )IWbemWCOSmartEnum_NextResponserJ  pdwBuffSizepBufferr  N)rU   rV   rW   r   r   r  rw   r+   r+   r+   r0   rd    r   rd  c                   @   s&   e Zd ZdZdefdefdeffZdS ) IWbemLoginClientID_SetClientInfori   wszClientMachinelClientProcId	lReservedNrU   rV   rW   r  r   r   rw   r+   r+   r+   r0   rg    r  rg  c                   @   r  )(IWbemLoginClientID_SetClientInfoResponser  Nr  r+   r+   r+   r0   rl    r  rl  c                   @   r  )IWbemLoginHelper_SetEventri   sEventToSetN)rU   rV   rW   r  r    rw   r+   r+   r+   r0   rm    r  rm  c                   @   r  )!IWbemLoginHelper_SetEventResponser  Nr  r+   r+   r+   r0   ro  $  r  ro  c                   @   r  )IWbemBackupRestore_Backupri   strBackupToFiler  Nrk  r+   r+   r+   r0   rp  ,  r  rp  c                   @   r  )!IWbemBackupRestore_BackupResponser  Nr  r+   r+   r+   r0   rr  3  r  rr  c                   @   r  )IWbemBackupRestore_Restorer5   strRestoreFromFiler  Nrk  r+   r+   r+   r0   rs  9  r  rs  c                   @   r  )"IWbemBackupRestore_RestoreResponser  Nr  r+   r+   r+   r0   ru  @  r  ru  c                   @   r  )IWbemBackupRestoreEx_Pauserj   r+   NrC  r+   r+   r+   r0   rv  G  r"  rv  c                   @   r  )"IWbemBackupRestoreEx_PauseResponser  Nr  r+   r+   r+   r0   rw  L  r  rw  c                   @   r  )IWbemBackupRestoreEx_Resumerk   r+   NrC  r+   r+   r+   r0   rx  R  r"  rx  c                   @   r  )#IWbemBackupRestoreEx_ResumeResponser  Nr  r+   r+   r+   r0   ry  W  r  ry  c                   @   2   e Zd ZdZdefdefdefdefdeffZ	dS ),IWbemRefreshingServices_AddObjectToRefresherri   pRefresherIdwszPathr  pContextdwClientRefrVersionN
rU   rV   rW   r  r  r   r   r   r   rw   r+   r+   r+   r0   r{  ^  r  r{  c                   @   r  )4IWbemRefreshingServices_AddObjectToRefresherResponsepInfopdwSvrRefrVersionr  NrU   rV   rW   r  r   r  rw   r+   r+   r+   r0   r  h  r  r  c                   @   s2   e Zd ZdZdefdefdefdefdeffZdS )6IWbemRefreshingServices_AddObjectToRefresherByTemplater5   r|  	pTemplater  r~  r  N)	rU   rV   rW   r  r  r   r   r   rw   r+   r+   r+   r0   r  p  r  r  c                   @   r  )>IWbemRefreshingServices_AddObjectToRefresherByTemplateResponser  r  r  Nr  r+   r+   r+   r0   r  z  r  r  c                   @   rz  )*IWbemRefreshingServices_AddEnumToRefresherrj   r|  wszClassr  r~  r  Nr  r+   r+   r+   r0   r    r  r  c                   @   r  )2IWbemRefreshingServices_AddEnumToRefresherResponser  r  r  Nr  r+   r+   r+   r0   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 )1IWbemRefreshingServices_RemoveObjectFromRefresherrk   r|  lIdr  r  NrU   rV   rW   r  r  r   r   rw   r+   r+   r+   r0   r    r  r  c                   @   r  )9IWbemRefreshingServices_RemoveObjectFromRefresherResponser  r  Nr  r+   r+   r+   r0   r    r  r  c                   @   r  )*IWbemRefreshingServices_GetRemoteRefresherrl   r|  r  r  Nr  r+   r+   r+   r0   r    r  r  c                   @   r   )2IWbemRefreshingServices_GetRemoteRefresherResponseppRemRefresherpGuidr  r  N)rU   rV   rW   r   r!   r   r  rw   r+   r+   r+   r0   r    r   r  c                   @   s2   e Zd ZdZdefdefdefdefdeffZdS )0IWbemRefreshingServices_ReconnectRemoteRefresherrm   r|  r  lNumObjectsr  apReconnectInfoN)	rU   rV   rW   r  r  r   r   r  rw   r+   r+   r+   r0   r    r  r  c                   @   r  )8IWbemRefreshingServices_ReconnectRemoteRefresherResponseapReconnectResultsr  r  N)rU   rV   rW   r  r   r  rw   r+   r+   r+   r0   r    r  r  c                   @   r  )"IWbemRemoteRefresher_RemoteRefreshri   r  Nr  r+   r+   r+   r0   r    r  r  c                   @   r  )*IWbemRemoteRefresher_RemoteRefreshResponseplNumObjects	paObjectsr  N)rU   rV   rW   r  r  r  rw   r+   r+   r+   r0   r    r  r  c                   @   s&   e Zd ZdZdefdefdeffZdS )#IWbemRemoteRefresher_StopRefreshingr5   lNumIdsaplIdsr  N)rU   rV   rW   r  r   r  rw   r+   r+   r+   r0   r    r  r  c                   @   r  )+IWbemRemoteRefresher_StopRefreshingResponser  Nr  r+   r+   r+   r0   r    r  r  c                   @   r  )IWbemShutdown_Shutdownri   r  r  r  N)rU   rV   rW   r  r   r   r   rw   r+   r+   r+   r0   r    r  r  c                   @   r  )IWbemShutdown_ShutdownResponser  Nr  r+   r+   r+   r0   r    r  r  c                   @   r  )$IUnsecuredApartment_CreateObjectStubri   r  Nr  r+   r+   r+   r0   r    r  r  c                   @   r  ),IUnsecuredApartment_CreateObjectStubResponser  r  Nr  r+   r+   r+   r0   r    r  r  c                   @   r  )&IWbemUnsecuredApartment_CreateSinkStubri   r  r  r  N)rU   rV   rW   r  r   r   r   rw   r+   r+   r+   r0   r  	  r  r  c                   @   r  ).IWbemUnsecuredApartment_CreateSinkStubResponser  r  Nr  r+   r+   r+   r0   r  
	  r  r  c                 C   s(   | t kr| S | dd  dkr| d S | S )N )r   )r   r+   r+   r0   checkNullString	  s
   r  c                   @   s   e Zd Zd"ddZdd 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edd Zdd Zdd Zdd Zdd Zd d! ZdS )#r  Nc                 C   s   t | | t| _|| _d | _|  }t|}t|d | _	| 
  | j	d  s;d | _g | _| |  |   d S | |   d S )NpObjectDatar   )r   rH   IID_IWbemClassObject_iid _IWbemClassObject__iWbemServices_IWbemClassObject__methods
get_objRefr   r   encodingUnitr  r  !_IWbemClassObject__new_class_name!_IWbemClassObject__new_attributescreateMethodsr  r  createPropertiesrE  )rI   	interfaceiWbemServicesobjRefr+   r+   r0   rH   #	  s   zIWbemClassObject.__init__c                 C   s    | j d  s|| _d S td)Nr   z-Cannot set class name for an instance object.)r  r  r  r  )rI   r   r+   r+   r0   setClassName4	  s   
zIWbemClassObject.setClassNamec                 C   s8   | j d  s| j|||f t| || d S td)Nr   z/Cannot add new attribute to an instance object.)r  r  r  r   setattrr  )rI   rQ   r/  default_valuer+   r+   r0   addNewAttribute:	  s   z IWbemClassObject.addNewAttributec                 C   s   | dsr|  }d }|D ]}d|| d v r|}q|d u r$td nN| jd u r8| j|  \}}| | _|| jv rr|  | d dkrWd|  ||  | d f }nd	|  ||  | d f }| 	|| j t
| |S td
| j|f )N__r`   r  z(I don't have a key property in this set!r.  r   z%s.%s=%sr   z
%s.%s="%s"z%r object has no attribute %r)
startswithrE  r%   r^  r  r  	GetObjectr  r  r  getattrAttributeError	__class__)rI   r   r:  keyPropertyr  classObjectr   instanceNamer+   r+   r0   r   A	  s2   




zIWbemClassObject.__getattr__c                 C   s   | j d   d S Nr   )r  r  rY  r+   r+   r0   r  a	  s   zIWbemClassObject.parseObjectc                 C   s
   | j d S r  )r  rY  r+   r+   r0   	getObjectd	     
zIWbemClassObject.getObjectc                 C   sN   | j d  s| j d d d  dd S | j d d d  dd S )Nr   r|  r}  r3   r   r  )r  r  r  splitrY  r+   r+   r0   r  g	  s     zIWbemClassObject.getClassNamec                 C   s   | j d  S r  )r  r  rY  r+   r+   r0   r  m	  s   z!IWbemClassObject.printInformationc                 C   $   | j d jd u r
dS | j d jd S )Nr   r+   r:  r  r  rY  r+   r+   r0   rE  p	     zIWbemClassObject.getPropertiesc                 C   r  )Nr   r+   r  r  rY  r+   r+   r0   r  u	  r  zIWbemClassObject.getMethodsc                 C   s   t |d> t |B d|  > S )NrM   rX   )r   )r~   r  r  r+   r+   r0   	__ndEntryz	  s   zIWbemClassObject.__ndEntryc                 C   s   d|d< t  }t }td dB |d< d|d< tjj|d< d	t|d t @  ff|_|	 |d
< t
|	 |d< t
|t
| t
|	  |d	< |	 |d
< t }t|d  |d< ||fS )Nr  r%  rh   r  r   r   r  r  r	  r  r   r!  rr   )r  r  DICTIONARY_REFERENCE_TO_VALUEr   r   r   r   r   rw   r   r,   rp   r6  )rI   r   propertyInfoqualifierSetr  cimTypeStringr+   r+   r0   __createCimTypeQualifierSet	  s    z,IWbemClassObject.__createCimTypeQualifierSetc           +      C   s	  | j d  r
d}d}d}t }|  |d< || 7 }t|}|  }t|D ]Z\}}|| }	t| |}
|	d }t	d||
f  |	d t
tB  @ }|	d t
@ rYtd d }nt| d d }|	d t
@ r|
d u r||| |d	|O }|t|d7 }q)|td
|7 }ttd d t|
}t| d d }d}tt|
D ]}|t||
| 7 }q||| 7 }t|}q)|tjjtjjtjjtjjfv r|
d u r|| |d	|O }|t|d7 }q)|t|t|
7 }q)|tjjfv r|
d u r|| |d	|O }|t|d7 }q)|t|t|
7 }q)|tjjtjjtjjtjjfvr;|
d u r3|| |d	|O }|t|d7 }q)|t||
7 }q)|tjjkrW|t 7 }|
d u rV|| |d	d	O }q)|
dkrl|| |d	d	O }|t 7 }q)t }|
|d< |td
|7 }|| 7 }t|}q)t|d d d }d}t|D ]}|td|d@ 7 }|dL }q|  }t |}t!|d }|d d d }d|d d d< || |d d d< t|dB |d d d d< ||d d d d< t|d d |d d d< ||d d d< t|d |d< ||d< |S | " }|d d d }|d d }| j#r6t||d  d!< t }| j#|d< || 7 }|d" d# }|dkrJ|d d d }nd}|d d | }|d |d  }d}tt|D ]}||| d| > O }qd|}|d" d#  t| j$7  < t%| j$d$d% d&} t| D ]\}}!|!\}"}#}$|| }%|d" d'  tt&d d t|7  < t }&|"|&d< ||& 7 }|d" d'  tt'd d t|7  < t( }'|#j|'d(< |%|'d)< t||'d*< d|'d+< | )||'\}(})|(|'d,< ||' 7 }||) 7 }t|}|#jt
tB  @ }|$}
|#jt@ }|#jt
@ rtd d }nt| d d }|#jt
@ r}|
d u rB|| |%d	|O }|t|d7 }q|td
|7 }ttd d t|
}t| d d }d}tt|
D ]}|t||
| 7 }qd||| 7 }t|}q|tjjtjjtjjtjjfv r|
d u r|| |%d	|O }|t|d7 }q|t|t|
7 }q|tjjfv r|
d u r|| |%d	|O }|t|d7 }q|t|t|
7 }q|tjjtjjtjjtjjfvr|
d u r|| |%d	|O }|t|d7 }q|t||
7 }q|tjjkr(|t 7 }|
d u r&|| |%d	d	O }q|
d kr/d}
t }|
|d< |td
|7 }|| 7 }t|}qt|dB |d d< ||d d< |d" d# }*|*dkrl|*d d d nd}d}t|D ]}|td|d@ 7 }|dL }qtt|| |d  d-< || |d< t||d  d< ||d d d< t|| j d< || j d< |  }t |}| j |d< |S ).Nr   r  r   rr   r1  zPropName %r, Value: %rr/  r   Tr  Fr  r*   rM   r5   B   rm   r  r  r}  rT  r  r  rH  rJ  r   r   r|  r  rU  rM  r   rP  r,  c                 S   s   | d S r   r+   r2  r+   r+   r0   r3  
  s    z,IWbemClassObject.marshalMe.<locals>.<lambda>r5  r  r!  r"  r#  r$  r%  r   )*r  r  rp   r  r   r,   rE  	enumerater  r  r   r   r   r   _IWbemClassObject__ndEntryr   r   r   r   r   r   r   r   intr   r   r   r   r   r   r   r  r   r   r  r  r  r8  r  r  r   ,_IWbemClassObject__createCimTypeQualifierSet)+rI   instanceHeapra  ndTableparametersClass
curHeapPtrr:  ir>  
propRecordrc  propIsInheritedr   packStr	arraySizepackStrArray
arrayItemsjstrIn
ndTableLenr  r  r  currentClassobjUnit	classPartr  r  existingPropCountexistingNdTableLenexistingNdTableBytesexistingValueTablesorted_attrsr   attribute_nameattribute_typeattribute_default_value	propIndexattrNamer  r  r   totalPropCountr+   r+   r0   	marshalMe	  sv  






  


&&









zIWbemClassObject.marshalMec                 C   s&  | j d  du rt }t }| jtj7  _| jtj7  _ttB |d< | j d d 	 |d< t
 }d|d< d}d}t }|  |d< ||	 7 }t|}d}|  }	t|	D ]z\}
}|	| }|d	 ttB  @ }|d	 t@ rwtd d
 }nt| d d
 }|d	 t@ r|t|d7 }qY|tjjtjjtjjtjjfvr|t|d7 }qY|tjjkr|t	 7 }|| |
ddO }qYt }d|d< |td|7 }||	 7 }t|}qYt|	d d d }d}t|D ]}
|td|d@ 7 }|dL }q|| |d< d|d< t |d< ||d d< t|dB |d d< t||d< | j d d d d |d< |	 |d< ||d< t||d< t }| j |d< t!|d < d|d!< t||d"< ||d#< dd l"}|#| }|$|	  |%|	  t|	 |_ |&  |j d  du r|'| |(  |S |)|  |S | S )$Nr   Fr  r  r  r}  rr   r   r/  r   Tr*   r  rM   r5   r  r  rm   rT        r  r  rJ  r  rH  r   r|  r  r  r   iidclsidcbExtensionObjectReferenceSizer  )*r  r  r   r  rw   r  r  CIM_INSTANCECIM_DECORATIONr   r  rp   r  r,   rE  r  r   r   r   r   r   r   r   r   r   r   r   r   r  r   rG  r   r  CLSID_WbemClassObjectcopydeepcopy
set_objRefprocess_interfacer  r  r  r  )rI   r  instanceDatar  r  ra  r  r  r  r:  r  r>  r  r   r  r  r  r  objRefCustomInr  newObjr+   r+   r0   SpawnInstance
  s   




zIWbemClassObject.SpawnInstancec              
   C   sz  |D ]}|| d t  @ }|tjjkrU|| d d krUt }| j|d< t|d< d|d< t|| d  |d< || d |d< t	t
|  | |  |  |  d	}n_|tjjkrt|| d trt }|| d D ]8}t }| j|d< t|d< d|d< t| |d< ||d< t	t
|  | |  |  |  d	}|| qmn|| d }n|| d }t| || qd S )
Nr/  r   r  r  r   r  r  r  oxidtarget)r   r   r   r   r   r  r  r,   r   r  r   get_cinstanceget_ipidRemUnknownget_oxid
get_targetr   r6   r;   r   r  )rI   r:  r;  r   r  r   r   	wbemClassr+   r+   r0   r  
  sB   


z!IWbemClassObject.createPropertiesc                    sL   G dd d}| fdd}|D ]}||_ t |j |||| f  qd S )Nc                   @      e Zd Zdd Zdd ZdS )z4IWbemClassObject.createMethods.<locals>.FunctionPoolc                 S   s
   || _ d S rG   )function)rI   r  r+   r+   r0   rH     r  z=IWbemClassObject.createMethods.<locals>.FunctionPool.__init__c                 S   s   t | j|S rG   )r   r  )rI   r   r+   r+   r0   r     r   z@IWbemClassObject.createMethods.<locals>.FunctionPool.__getitem__N)rU   rV   rW   rH   r   r+   r+   r+   r0   FunctionPool  s    r  c           $   
      s~  | d }| d }|d d urt |t |d kr*tdt |t |d f  d S t }t }| jtj7  _t|d< d|d< t }d|d< d	|d
< d}d}t	 }	d|	d< ||	
 7 }t |}
d}tt |D ]}t|d  | }|| }|d ttB  @ }|d t@ rtd d }nt| d d }|d t@ r|d u r|t|d7 }qh|tjjtjjtjjtjjfv rdttd d t |}g }tt |D ]R}|| }|tjjkrd}| }|td|d d 7 }||d d 
 7 }|| qt	 }t|tu rd|d< |j|_|d|d< n||d< ||
  q|
d }d}d}tt |D ] }|td|dt ||   t | 7 }||| 7 }|d7 }q/|td|
7 }||| | 7 }t |}
qhttd d t |}|td|
7 }||7 }|D ]
}|t||7 }q|t |}
qh|tjjtjjtjjtjjfvr|t||7 }qh|tjjkr|d u r|d7 }| |ddO }qh|td|
7 }| }|td|d d 7 }||d d 
 7 }t |}
qht	 }t|tu rd|d< |j|_|d|d< n||d< |td|
7 }||
 7 }t |}
qht |d d d }d}t|D ]}|td|d@ 7 }|dL }q$|| |d< t  }t |dB |d< ||d< ||d< t ||d < |d! d" d d# }t |d! d" d d# 
 |d$ d < ||d< |
 |d%< ||d< t ||d< t! } j"|d&< t#|d'< d|d(< t ||d)< ||d< nt$}t }t } |  jtj7  _t%| d< d| d< t }d|d< d|d< d|d
< d|d< t ||d < |d* d" d d# 
 |d< |
 | d%< | |d< t | |d< t! }! j"|!d&< t#|!d'< d|!d(< t ||!d)< ||!d< z j&j'||d+ |d,W S  t(y> }" ztj)t*j+kr,dd l,}#|#-  tt|" W Y d }"~"d S d }"~"ww )-Nr   rM   r~  z1Function called with %d parameters instead of %d!r  r  r  r}  r  r  __PARAMETERSrr   r/  r   r  r  r   r   rq   r   r5   s       Tr  r  rm   rT  r  rH  rJ  r  r   r  r|  r  rM  r  r  r  r  r  r  rQ   )r<  ).r,   r%   r^  r   r  rw   r  r  r  rp   r   r   r;   r  r   r   r   r   r   r   r   r   r   r   r   r  r   r/  r-   r{   encoder  rG  r   r  r  r   r  r  
ExecMethodr  r4   r   r   	traceback	print_exc)$
staticArgsargsclassOrInstancemethodDefinitionr  inParamsr  r  ra  r  r  r  r  paramDefinitioninArgr   r  r  r  r  curVal	curObjectmarshaledObjectr  curStrHeapPtrarrayHeapPtrValuesarrayValueTabler  r  
heapRecord	inMethodsr  	outParamsobjRefCustomrE   r  rY  r+   r0   innerMethod!  s$  
&







z3IWbemClassObject.createMethods.<locals>.innerMethod)rU   r  )rI   r  r  r  r%  r  r+   rY  r0   r    s    >zIWbemClassObject.createMethodsrG   )rU   rV   rW   rH   r  r  r   r  r  r  r  rE  r  r  r  r  r  r  r  r  r+   r+   r+   r0   r  "	  s&    

 
 yi#r  c                   @   s   e Zd Zdd ZdddZdS )IWbemLoginClientIDc                 C      t | | t| _d S rG   )r   rH   IID_IWbemLoginClientIDr  rI   r  r+   r+   r0   rH        
zIWbemLoginClientID.__init__  c                 C   s<   t  }t||d< ||d< d|d< | j|| j|  d}|S )Nrh  ri  r   rj  r  uuid)rg  r  requestr  get_iPid)rI   rh  ri  r.  respr+   r+   r0   SetClientInfo  s   z IWbemLoginClientID.SetClientInfoN)r+  )rU   rV   rW   rH   r1  r+   r+   r+   r0   r&    s    r&  c                   @   r  )IWbemLoginHelperc                 C   r'  rG   )r   rH   IID_IWbemLoginHelperr  r)  r+   r+   r0   rH     r*  zIWbemLoginHelper.__init__c                 C   0   t  }||d< | j|| j|  d}|  |S )Nrn  r,  )rm  r.  r  r/  dump)rI   rn  r.  r0  r+   r+   r0   SetEvent  
   zIWbemLoginHelper.SetEventN)rU   rV   rW   rH   r6  r+   r+   r+   r0   r2        r2  c                   @   r  )IWbemWCOSmartEnumc                 C   r'  rG   )r   rH   IID_IWbemWCOSmartEnumr  r)  r+   r+   r0   rH      r*  zIWbemWCOSmartEnum.__init__c                 C   @   t  }||d< ||d< ||d< | j|| j|  d}|  |S )Nrb  rF  rG  r,  )ra  r.  r  r/  r5  )rI   rb  rF  rG  r.  r0  r+   r+   r0   Next     zIWbemWCOSmartEnum.NextN)rU   rV   rW   rH   r<  r+   r+   r+   r0   r9    r8  r9  c                   @   r  )IWbemFetchSmartEnumc                 C   r'  rG   )r   rH   IID_IWbemFetchSmartEnumr  r)  r+   r+   r0   rH     r*  zIWbemFetchSmartEnum.__init__c                 C   s(   t  }| j|| j|  d}|  |S Nr,  )r^  r.  r  r/  r5  rI   rF  r.  r0  r+   r+   r0   GetSmartEnum     z IWbemFetchSmartEnum.GetSmartEnumN)rU   rV   rW   rH   rB  r+   r+   r+   r0   r>    r8  r>  c                   @   4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )IWbemCallResultc                 C   r'  rG   )r   rH   IID_IWbemCallResultr  r)  r+   r+   r0   rH     r*  zIWbemCallResult.__init__c                 C   r4  NrF  r,  )rR  r.  r  r/  r5  rA  r+   r+   r0   GetResultObject  r7  zIWbemCallResult.GetResultObjectc                 C   r4  rG  )rU  r.  r  r/  r5  rA  r+   r+   r0   GetResultString$  r7  zIWbemCallResult.GetResultStringc                 C   r4  rG  )rX  r.  r  r/  r5  rA  r+   r+   r0   GetResultServices+  r7  z!IWbemCallResult.GetResultServicesc                 C   ,   t  }||d< | j|| j|  d}|d S )NrF  r,  r]  )r[  r.  r  r/  rA  r+   r+   r0   GetCallStatus2     zIWbemCallResult.GetCallStatusN)rU   rV   rW   rH   rH  rI  rJ  rL  r+   r+   r+   r0   rE    s    rE  c                   @   s>   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 )IEnumWbemClassObjectNc                 C   s   t | | t| _|| _d S rG   )r   rH   IID_IEnumWbemClassObjectr  $_IEnumWbemClassObject__iWbemServices)rI   r  r  r+   r+   r0   rH   9  s   
zIEnumWbemClassObject.__init__c                 C   (   t  }| j|| j|  d}|  |S r@  )rB  r.  r  r/  r5  rI   r.  r0  r+   r+   r0   Reset>  rC  zIEnumWbemClassObject.Resetc                 C   s~   t  }||d< ||d< | j|| j|  d}t }|d D ]}|tt|  d	|d | 
 |  |  d| j q|S )NrF  rG  r,  rI  r  abDatar  )rE  r.  r  r/  r;   r   r  r   r  joinr  r	  r
  rP  )rI   rF  rG  r.  r0  
interfacesr  r+   r+   r0   r<  D  s   zIEnumWbemClassObject.Nextc                 C   8   t  }||d< ||d< | j|| j|  d}|  |S )NrF  rL  r,  )rK  r.  r  r/  r5  )rI   rF  rL  r.  r0  r+   r+   r0   	NextAsyncQ     zIEnumWbemClassObject.NextAsyncc                 C   rQ  r@  )rN  r.  r  r/  r5  rR  r+   r+   r0   CloneY  rC  zIEnumWbemClassObject.Clonec                 C   rW  )NrF  rG  r,  )rP  r.  r  r/  r5  )rI   rF  rG  r.  r0  r+   r+   r0   Skip_  rY  zIEnumWbemClassObject.SkiprG   )	rU   rV   rW   rH   rS  r<  rX  rZ  r[  r+   r+   r+   r0   rN  8  s    
rN  c                   @   sP  e Zd Zdd ZdefddZdd Zdd	 Zdefd
dZdefddZ	defddZ
defddZdefddZdefddZdefddZdefddZdefddZdefddZdefddZdefd d!Zdefd"d#Zdefd$d%Zdefd&d'Zdefd(d)Zdefd*d+Zdefd,d-Zdeeefd.d/Zdeefd0d1Zd2S )3IWbemServicesc                 C   r'  rG   )r   rH   IID_IWbemServicesr  r)  r+   r+   r0   rH   h  r*  zIWbemServices.__init__r   c                 C   sD   t  }||d d< ||d< ||d< | j|| j|  d}|  |S )Nr  asDatar  r  r,  )r  r.  r  r/  r5  rI   r  r  r  r.  r0  r+   r+   r0   OpenNamespacel  s   zIWbemServices.OpenNamespacec                 C   rK  )Nr  r,  r  )r  r.  r  r/  )rI   r  r.  r0  r+   r+   r0   CancelAsyncCallu  rM  zIWbemServices.CancelAsyncCallc                 C   sN   t  }d|d< | j|| j|  d}t|  d|d d |  |  dS )Nr   r  r,  r  r  rT  r  )	r  r.  r  r/  r   r  rU  r  r
  rR  r+   r+   r0   QueryObjectSink{  s   zIWbemServices.QueryObjectSinkc                 C   s   t  }||d d< ||d< ||d< | j|| j|  d}tt|  d|d d |  | 	 | 
 d	| }|d
 tkrXtt|  d|d d |  | 
 d}||fS t}||fS )Nr   r^  r  r  r,  r  r  rT  r  r  rb  )r  r.  r  r/  r  r   r  rU  r  r	  r
  r   rE  )rI   r   r  r  r.  r0  r  ppcallResultr+   r+   r0   r    s(   zIWbemServices.GetObjectc                 C   H   t  }t||d d< ||d< ||d< | j|| j|  d}|  |S Nr   r^  r  r  r,  )r  r  r.  r  r/  r5  r_  r+   r+   r0   GetObjectAsync     zIWbemServices.GetObjectAsyncc                 C      t  }|tu r||d< nt||d d< t| |d d< ||d< ||d< | j|| j|  d}tt	| 
 d|d d |  |  d	S )
Nr	  	ulCntDatarT  r  r  r,  r  r  rb  )r  r   r,   r;   r   r.  r  r/  rE  r   r  rU  r  r
  rI   r	  r  r  r.  r0  r+   r+   r0   PutClass  s   
zIWbemServices.PutClassc                 C   sn   t  }|tu r||d< nt||d d< t| |d d< ||d< ||d< | j|| j|  d}|  |S )Nr	  rj  rT  r  r  r,  )	r  r   r,   r;   r   r.  r  r/  r5  rk  r+   r+   r0   PutClassAsync  s   
zIWbemServices.PutClassAsyncc                 C   j   t  }t||d d< ||d< ||d< | j|| j|  d}tt|  d|d d | 	 | 
 d	S )
Nr  r^  r  r  r,  r  r  rT  rb  )r  r  r.  r  r/  rE  r   r  rU  r  r
  rI   r  r  r  r.  r0  r+   r+   r0   DeleteClass     zIWbemServices.DeleteClassc                 C   re  )Nr  r^  r  r  r,  )r  r  r.  r  r/  r5  ro  r+   r+   r0   DeleteClassAsync  rh  zIWbemServices.DeleteClassAsyncc                 C   re  Nr  r^  r  r  r,  )r  r  r.  r  r/  r5  rI   r  r  r  r.  r0  r+   r+   r0   CreateClassEnum  rh  zIWbemServices.CreateClassEnumc                 C   re  rs  )r  r  r.  r  r/  r5  rt  r+   r+   r0   CreateClassEnumAsync  rh  z"IWbemServices.CreateClassEnumAsyncc                 C   ri  )
Nr  rj  rT  r  r  r,  r  r  rb  )r  r   r,   r;   r   r.  r  r/  rE  r   r  rU  r  r
  rI   r  r  r  r.  r0  r+   r+   r0   PutInstance  s   
zIWbemServices.PutInstancec                 C   r;  )Nr  r  r  r,  )r!  r.  r  r/  r5  rw  r+   r+   r0   PutInstanceAsync  r=  zIWbemServices.PutInstanceAsyncc                 C   rn  )
Nr   r^  r  r  r,  r  r  rT  rb  )r$  r  r.  r  r/  rE  r   r  rU  r  r
  rI   r   r  r  r.  r0  r+   r+   r0   DeleteInstance  rq  zIWbemServices.DeleteInstancec                 C   re  rf  )r&  r  r.  r  r/  r5  rz  r+   r+   r0   DeleteInstanceAsync  rh  z!IWbemServices.DeleteInstanceAsyncc                 C   sn   t  }||d d< ||d< ||d< | j|| j|  d}|  tt|  d|d d | 	 | 
 d	S )
Nr  r^  r  r  r,  r  r  rT  rb  )r(  r.  r  r/  r5  rN  r   r  rU  r  r
  rt  r+   r+   r0   CreateInstanceEnum  s   z IWbemServices.CreateInstanceEnumc                 C   re  rs  )r*  r  r.  r  r/  r5  rt  r+   r+   r0   CreateInstanceEnumAsync  rh  z%IWbemServices.CreateInstanceEnumAsyncc                 C   |   t  }td|d d< t||d d< ||d< ||d< | j|| j|  d}tt|  d|d	 d
 | 	 | 
 d| S NWQLr-  r^  r.  r  r  r,  r  r  rT  rb  )r,  r  r.  r  r/  rN  r   r  rU  r  r
  rI   r.  r  r  r.  r0  r+   r+   r0   	ExecQuery     zIWbemServices.ExecQueryc                 C   X   t  }td|d d< t||d d< ||d< ||d< | j|| j|  d}|  |S Nr  r-  r^  r.  r  r  r,  )r1  r  r.  r  r/  r5  r  r+   r+   r0   ExecQueryAsync&     zIWbemServices.ExecQueryAsyncc                 C   r  r  )r3  r  r.  r  r/  rN  r   r  rU  r  r
  r  r+   r+   r0   ExecNotificationQuery0  r  z#IWbemServices.ExecNotificationQueryc                 C   r  r  )r6  r  r.  r  r/  r5  r  r+   r+   r0   ExecNotificationQueryAsync;  r  z(IWbemServices.ExecNotificationQueryAsyncc           	      C   s  t  }t||d d< t||d d< ||d< ||d< |tu r$||d< nt||d d< t| |d d< t|jd	< |tu rHt|jd
 jd< nt| |d
 d< t| |d
 d< | j|| j| 	 d}t
t|  d|d
 d |  |  |  dS )Nr   r^  r;  r  r  r<  rj  rT  r  r=  r  r,  r  r  )r9  r  r   r,   r;   r   r   r.  r  r/  r  r   r  rU  r  r	  r
  )	rI   r   r;  r  r  r<  r=  r.  r0  r+   r+   r0   r  E  s(   

zIWbemServices.ExecMethodc                 C   s`   t  }t||d d< t||d d< ||d< ||d< ||d< | j|| j|  d}|  |S )Nr   r^  r;  r  r  r<  r,  )r?  r  r.  r  r/  r5  )rI   r   r;  r  r  r<  r.  r0  r+   r+   r0   ExecMethodAsync\  s   zIWbemServices.ExecMethodAsyncN)rU   rV   rW   rH   r   r`  ra  rc  r  rg  rl  rm  rp  rr  ru  rv  rx  ry  r{  r|  r}  r~  r  r  r  r  r  r  r+   r+   r+   r0   r\  g  s2    		
				
		

r\  c                   @   rD  )IWbemLevel1Loginc                 C   r'  rG   )r   rH   IID_IWbemLevel1Loginr  r)  r+   r+   r0   rH   h  r*  zIWbemLevel1Login.__init__c                 C   s4   t  }t|d< d|d< | j|| j|  d}|d S )Nr  r   r  r,  r  )r  r   r.  r  r/  rR  r+   r+   r0   EstablishPositionl  
   z"IWbemLevel1Login.EstablishPositionc                 C   s4   t  }t|d< t|d< | j|| j|  d}|d S )Nr  r  r,  r  )r  r   r.  r  r/  rR  r+   r+   r0   RequestChallenges  r  z!IWbemLevel1Login.RequestChallengec                 C   sD   t  }t|d< t|d< d|d< t|d< | j|| j|  d}|d S )Nr  r  r   r  r  r,  r  )r  r   r.  r  r/  rR  r+   r+   r0   	WBEMLoginz  s   zIWbemLevel1Login.WBEMLoginc                 C   sr   t  }t||d< t||d< d|d< ||d< | j|| j|  d}tt|  d|d d	 | 	 | 
 d
S )Nr  r  r   r  r  r,  r  r  rT  rb  )r  r  r.  r  r/  r\  r   r  rU  r  r
  )rI   r  r  r  r.  r0  r+   r+   r0   	NTLMLogin  s   zIWbemLevel1Login.NTLMLoginN)rU   rV   rW   rH   r  r  r  r  r+   r+   r+   r0   r  g  s    	r  __main__s   xV4    DPRAVAT-DEV  ROOT                                f                       
   <   Base  Id                 
     4         sint32      4         sint32 )r   (g  
__future__r   r   structr   r   r   	functoolsr   r7   collections.abcr   r  r   impacket.dcerpc.v5.ndrr	   r
   r   r   r   r   impacket.dcerpc.v5.dcomrtr   r   r   r   r   r   r   r   r   impacket.dcerpc.v5.dcom.oautr   impacket.dcerpc.v5.dtypesr   r   r   r   r   r   r   r    r!   impacket.dcerpc.v5.enumr"   impacket.dcerpc.v5.rpcrtr#   impacketr$   r%   impacket.uuidr&   r'   impacket.structurer(   r)   r>   rF   %WBEM_FLAVOR_FLAG_PROPAGATE_O_INSTANCE*WBEM_FLAVOR_FLAG_PROPAGATE_O_DERIVED_CLASSWBEM_FLAVOR_NOT_OVERRIDABLEr  WBEM_FLAVOR_ORIGIN_SYSTEMWBEM_FLAVOR_AMENDEDr  r  r  r  r  r  r   r   r   r   r  r  rp   r   r   r   r   HEAP_STRING_REFr   r   r   CIM_TYPEr   r/  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r6  r  r  r  r  r   QUALIFIER_VALUEr  r  rd  rF  r  r  r  r&  r'  r(  r)  r*  r   r   r+  rK  rG  re  rL  r  r  rn  ro  rp  rq  HEAP_QUALIFIER_SET_REFrr  HEAP_METHOD_SIGNATURE_BLOCK_REFMETHOD_SIGNATURErs  rt  r  rf  ru  r  r  r  r  NULL_AND_DEFAULT_FLAGNDTABLEr  r  r  r  r  r  r  r  r  r   r   CLSID_WbemLevel1LoginCLSID_WbemBackupRestorer  r  r(  r3  r]  IID_IWbemBackupRestoreIID_IWbemBackupRestoreExr  IID_IWbemContextrO  rF  r?  r:  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r(  r!  r  r  r  rc  r  r  r   r
  r  r  r#  r'  rO   rn  rr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r/  r1  r2  r3  r5  r6  r8  r9  r>  r?  rA  rB  rD  rE  rH  rK  rM  rN  rO  rP  rQ  rR  rS  rU  rV  rX  rY  r[  r\  r^  r_  ra  rd  rg  rl  rm  ro  rp  rr  rs  ru  rv  rw  rx  ry  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&  r2  r9  r>  rE  rN  r\  r  rU   	baseClassr+   r+   r+   r0   <module>   s*   ,,*	#	
	

M
4*4"F $
	M

	


				

	
										
	




		
			     H /  (