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


ÿz(IRemoteSCMActivator.RemoteGetClassObjectc           #      C   s,  | j  t¡ tƒ }tƒ |d< t|d< d|d< tƒ }||d< t|d< tƒ }d|d d	< t|d d
< tƒ }t	|d< |d d  
|¡ tƒ }t|d< |d d  
|¡ tƒ }t|d< |d d  
|¡ tƒ }t|d< |d d  
|¡ d}tƒ }||d< d|d< tƒ }	||	d< |d  
|	¡ tƒ }
| ¡ | ¡  }dt|ƒd  d }t|ƒ| |
d< |d d  
|
¡ |
d |d< ||d|  7 }tƒ }t|d< t|d< tƒ }
| ¡ | ¡  }dt|ƒd  d }t|ƒ| |
d< |d d  
|
¡ ||d|  7 }tƒ }t|d< tƒ }
t| ¡ ƒ|
d< |d d  
|
¡ || ¡ | ¡  7 }tƒ }t|d
< d|d d< |d d  
d¡ tƒ }
| ¡ | ¡  }dt|ƒd  d }t|ƒ| |
d< |d d  
|
¡ ||d|  7 }||d< tƒ }td d… |d< t|d< | ¡ |d < t|d  ƒd |d!< t| ¡ ƒ|d" d#< t| ¡ ƒ|d" d$< | j  |¡}td |d% d$ ¡ƒd }d }|tk�r¾td |d% d$ ¡ƒ}n:|tk�rÏt d |d% d$ ¡ƒ}n)|t!k�ràt"d |d% d$ ¡ƒ}n|t#k�rñt$d |d% d$ ¡ƒ}nt% &d&| ¡ t|d  ƒ}|d d |d d d' d … }|d |d d d' d |d d d' d |d d d d  … }t'ƒ }| (|¡}| )||d … ¡ |d( d) }d d*d+„ |d( d, d- D ƒ¡}|d |d( d, d. d … }||d( d, d. d d … }d/}tƒ }|�s¤|d'd… d0k�r�|dd… d0k�r�d1}nt*|ƒ}| 
|¡ |t|ƒd … }|�r{d/}|�s×t|ƒdk �r³d1}n!|d'd… d0k�rÈ|dd… d0k�rÈd1}nt+|ƒ} |t| ƒd … }|�r©t,ƒ }!|! (|¡}|! )||d … ¡ t-||ƒ}"|" .|d( d2 ¡ |" /| j  0¡ ¡ t1t2|"d |!d3 d' d$ ¡|| j  3¡  4¡ d4�ƒS )5NrŒ   r�   rL   rŠ   rj  r©  r1   r  r  r  r[   r  rt  r  r!  r#  r-   r  r$  r’  rB  rC  rE  r<  r8  r9  r,   r  r“  rœ   r°   r·   r¶   r¢  r”   r•   r¦  r4  r   rX  rS  c                 s   ru  rv  r   rw  rJ   rJ   rK   rz  …  r{  z;IRemoteSCMActivator.RemoteCreateInstance.<locals>.<genexpr>rR  rÀ   r¿   Fr|  TrT  rb  r‹  )5r‘  rW  r”  rˆ   r    r   r¨  r  r²   r•  rk  r–  r—  r˜  r  rë   r   r  r  r  r=  rD  r;  r´   r™  rš  r~  rb  rš   r  r¸   r±   r¯   r®   r§   rÉ   rÄ   r   rì  rW  r›  rœ  rÏ   rÓ   r_  r  r   r  r  rl  r  rP  rS  r�  rJ   rJ   rK   r¨    sö   




 $ÿÿ
 $
ú$ù


ÿz(IRemoteSCMActivator.RemoteCreateInstanceN)rQ   rR   rS   rE   r¡  r¨  rJ   rJ   rJ   rK   r  `  s
     !r  )ëÚ
__future__r   r   rD  Ústructr   Ú	threadingr   r   Úimpacket.dcerpc.v5.ndrr   r	   r
   r   r   r   Úimpacket.dcerpc.v5.dtypesr   r   r   r   r   r   r   r   r   r   r   r   r   r   Úimpacketr   r   Úimpacket.uuidr   r   r    Úimpacket.dcerpc.v5.rpcrtr!   r"   r#   r$   r%   r&   r'   Úimpacket.dcerpc.v5r(   r–  rš  ÚCLSID_ActivationPropertiesOutÚCLSID_CONTEXT_EXTENSIONÚCLSID_ContextMarshalerÚCLSID_ERROR_EXTENSIONÚCLSID_ErrorObjectÚCLSID_InstanceInfor•  ÚCLSID_PropsOutInfoÚCLSID_ScmReplyInfor˜  ÚCLSID_SecurityInfor—  ÚCLSID_SpecialSystemPropertiesrŒ  r™  ÚIID_IActivationPropertiesOutÚIID_IContextr}  r”  rg  rp  ÚIID_IUnknownÚIID_IClassFactoryÚTOWERID_OSI_TP4ÚTOWERID_OSI_CLNSÚTOWERID_DOD_TCPÚTOWERID_DOD_UDPÚTOWERID_DOD_IPÚTOWERID_RPC_connectionlessÚTOWERID_RPC_connectionorientedÚTOWERID_DNA_Session_ControlÚTOWERID_DNA_Session_Control_V3ÚTOWERID_DNA_NSP_TransportÚTOWERID_DNA_RoutingÚTOWERID_Named_PipesÚTOWERID_NetBIOS_11ÚTOWERID_NetBEUIÚTOWERID_Netware_SPXÚTOWERID_Netware_IPXÚTOWERID_Appletalk_StreamÚTOWERID_Appletalk_DatagramÚTOWERID_AppletalkÚTOWERID_NetBIOS_19ÚTOWERID_VINES_SPPÚTOWERID_VINES_IPCÚTOWERID_StreetTalkÚTOWERID_Unix_Domain_socketÚTOWERID_nullÚTOWERID_NetBIOS_22rC   rV   rU   rZ   r|  ry  rŽ   r²   rë   ÚPIIDr¦   r¥   r®   r±   r¸   rÉ   r5  ÚCTXMSHLFLAGS_BYVALÚCPFLAG_PROPAGATEÚCPFLAG_EXPOSEÚCPFLAG_ENVOYÚACTVFLAGS_DISABLE_AAAÚ ACTVFLAGS_ACTIVATE_32_BIT_SERVERÚ ACTVFLAGS_ACTIVATE_64_BIT_SERVERÚACTVFLAGS_NO_FAILURE_LOGÚSPD_FLAG_USE_CONSOLE_SESSIONÚMAX_REQUESTED_INTERFACESÚMAX_REQUESTED_PROTSEQSÚMIN_ACTPROP_LIMITÚMAX_ACTPROP_LIMITr^   rk   rv   rx   r|   r€   r�   r‚   r„   r‡   rˆ   r‘   r“   r–   r˜   r™   rš   r    r§   r¯   r´   r¹   r½   rÄ   rÊ   rÌ   rÍ   rÎ   rÏ   rÓ   r×   rÛ   rÜ   ræ   rí   r÷   rû   rü   r  r  r  r  r  r  r  r  r  r&  r1  r6  r:  r;  r=  rD  rI  rK  rL  rP  rV  rW  rY  rZ  r[  r\  r]  r_  rc  re  rf  rh  r°  ri  rk  rn  rt  rz  r}  r  r…  rˆ  r‹  rŒ  r�  r�  r�  r“  r›  r¡  r¥  r¨  rª  r«  r±  r³  r·  r¸  r¹  ÚOPNUMSrº  r  r  rf  rl  ré  r‰  r  rJ   rJ   rJ   rK   Ú<module>   s�    @$	


								
		  e6z@