o
    àý°jÈ%  ã                   @   sT  d dl mZ d dl mZ d dlmZmZmZ d dlmZm	Z	m
Z
mZmZ d dlmZmZmZmZmZ d dlmZ d dlmZ d dlmZ d d	lmZ G d
d„ deƒZedƒZedƒZedƒZedƒZedƒZ edƒZ!edƒZ"edƒZ#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ƒZ0G d*d+„ d+e	ƒZ1G d,d-„ d-eƒZ2G d.d/„ d/e	ƒZ3G d0d1„ d1eƒZ4G d2d3„ d3e	ƒZ5G d4d5„ d5eƒZ6G d6d7„ d7e	ƒZ7i Z8G d8d9„ d9e
ƒZ9G d:d;„ d;e
ƒZ:G d<d=„ d=e
ƒZ;G d>d?„ d?e
ƒZ<d@S )Aé    )Údivision)Úprint_function)Ú	NDRSTRUCTÚNDRUniConformantVaryingArrayÚNDRENUM)ÚDCOMCALLÚ
DCOMANSWERÚIRemUnknown2ÚPMInterfacePointerÚ	INTERFACE)ÚLPWSTRÚULONGÚDWORDÚSHORTÚGUID)ÚDCERPCException)ÚEnum)Úhresult_errors)Ústring_to_binc                   @   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© r   úŽ/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/impacket/dcerpc/v5/dcom/vds.pyr   &   s   zDCERPCSessionError.__init__c                 C   sF   | j tjv rtj| j  d }tj| j  d }d| j ||f S d| j  S )Nr   é   z&VDS SessionError: code: 0x%x - %s - %sz*VDS SessionError: unknown error code: 0x%x)r   r   ÚERROR_MESSAGES)r   Úerror_msg_shortÚerror_msg_verboser   r   r   Ú__str__)   s
   
zDCERPCSessionError.__str__)NNN)Ú__name__Ú
__module__Ú__qualname__r   r"   r   r   r   r   r   %   s    
r   z$7D1933CB-86F6-4A98-8628-01BE94C9A575z$118610B7-8D94-4030-B5B8-500889788E4Ez$8326CD1D-CF59-4936-B786-5EFC08798E25z$D5D23B6D-5A55-4492-9889-397A3C2D2DBCz$4AFC3636-DB01-4052-80C3-03BBCB8D3C69z$0818A8EF-9BA9-40D8-A6F9-E22833CC771Ez$9AA58360-CE33-4F92-B658-ED24B14425B8z$10C5E575-7984-4E81-A56B-431F5F92AE42c                   @   ó   e Zd ZdefdeffZdS )ÚVDS_SERVICE_PROPÚpwszVersionÚulFlagsN)r#   r$   r%   r   r   Ú	structurer   r   r   r   r'   G   ó    þr'   c                   @   s   e Zd ZeZdS )ÚOBJECT_ARRAYN)r#   r$   r%   r
   Úitemr   r   r   r   r,   M   s    r,   c                   @   s   e Zd ZG dd„ deƒZdS )ÚVDS_PROVIDER_TYPEc                   @   s    e Zd ZdZdZdZdZdZdS )zVDS_PROVIDER_TYPE.enumItemsr   r   é   é   é   N)r#   r$   r%   ÚVDS_PT_UNKNOWNÚVDS_PT_SOFTWAREÚVDS_PT_HARDWAREÚVDS_PT_VIRTUALDISKÚ
VDS_PT_MAXr   r   r   r   Ú	enumItemsR   s    r7   N)r#   r$   r%   r   r7   r   r   r   r   r.   Q   s    r.   c                	   @   s@   e Zd ZdefdefdefdefdefdefdefdeffZ	d	S )
ÚVDS_PROVIDER_PROPÚidÚpwszNameÚguidVersionIdr(   Útyper)   ÚulStripeSizeFlagsÚsRebuildPriorityN)
r#   r$   r%   ÚVDS_OBJECT_IDr   r   r.   r   r   r*   r   r   r   r   r8   Z   s    ør8   c                   @   ó   e Zd ZdZdeffZdS )Ú$IVdsServiceInitialization_Initializer0   ÚpwszMachineNameN)r#   r$   r%   Úopnumr   r*   r   r   r   r   rA   k   ó    ÿrA   c                   @   ó   e Zd ZdeffZdS )Ú,IVdsServiceInitialization_InitializeResponseÚ	ErrorCodeN©r#   r$   r%   Úerror_status_tr*   r   r   r   r   rF   q   ó    ÿrF   c                   @   ó   e Zd ZdZdZdS )ÚIVdsService_IsServiceReadyr0   r   N©r#   r$   r%   rC   r*   r   r   r   r   rL   w   ó    rL   c                   @   rE   )Ú"IVdsService_IsServiceReadyResponserG   NrH   r   r   r   r   rO   |   rJ   rO   c                   @   rK   )ÚIVdsService_WaitForServiceReadyr1   r   NrM   r   r   r   r   rP   ‚   rN   rP   c                   @   rE   )Ú'IVdsService_WaitForServiceReadyResponserG   NrH   r   r   r   r   rQ   ‡   rJ   rQ   c                   @   rK   )ÚIVdsService_GetPropertiesé   r   NrM   r   r   r   r   rR   �   rN   rR   c                   @   r&   )Ú!IVdsService_GetPropertiesResponseÚpServiceProprG   N)r#   r$   r%   r'   rI   r*   r   r   r   r   rT   ’   r+   rT   c                   @   r@   )ÚIVdsService_QueryProvidersé   ÚmasksN)r#   r$   r%   rC   r   r*   r   r   r   r   rV   ™   rD   rV   c                   @   r&   )Ú"IVdsService_QueryProvidersResponseÚppEnumrG   N)r#   r$   r%   r
   rI   r*   r   r   r   r   rY   Ÿ   r+   rY   c                   @   r@   )ÚIEnumVdsObject_Nextr0   ÚceltN)r#   r$   r%   rC   r   r*   r   r   r   r   r[   §   rD   r[   c                   @   s"   e Zd ZdefdefdeffZdS )ÚIEnumVdsObject_NextResponseÚppObjectArrayÚ	pcFetchedrG   N)r#   r$   r%   r,   r   rI   r*   r   r   r   r   r]   ­   s
    ýr]   c                   @   rK   )ÚIVdsProvider_GetPropertiesr0   r   NrM   r   r   r   r   r`   ´   rN   r`   c                   @   r&   )Ú"IVdsProvider_GetPropertiesResponseÚpProviderProprG   N)r#   r$   r%   r8   rI   r*   r   r   r   r   ra   ¹   r+   ra   c                   @   s   e Zd Zddd„ZdS )ÚIEnumVdsObjectéÿÿ  c              
   C   sÄ   t ƒ }|  ¡  ¡ |d< d|d d< ||d< z| j||  ¡ d�}W n ty= } z| ¡ }|d dkr3‚ W Y d }~nd }~ww tƒ }|d D ]}| t	t
|  ¡ d	 |d
 ¡|  ¡ |  ¡ d�ƒ¡ qE|S )NÚORPCthisr   Úflagsr\   ©ÚuuidrG   r   r^   Ú ÚabData©Útarget)r[   Úget_cinstanceÚget_ORPCthisÚrequestÚget_iPidÚ	ExceptionÚ
get_packetÚlistÚappendr	   r   ÚjoinÚget_ipidRemUnknownÚ
get_target)r   r\   ro   ÚrespÚeÚ
interfacesÚ	interfacer   r   r   ÚNextÉ   s"   ÿ€ý2zIEnumVdsObject.NextN)rd   )r#   r$   r%   r|   r   r   r   r   rc   È   s    rc   c                   @   s   e Zd Zdd„ ZdS )ÚIVdsProviderc                 C   ó8   t ƒ }|  ¡  ¡ |d< d|d d< | j||  ¡ d�}|S ©Nre   r   rf   rg   )r`   rm   rn   ro   rp   ©r   ro   rx   r   r   r   ÚGetPropertiesÛ   ó
   zIVdsProvider.GetPropertiesN)r#   r$   r%   r�   r   r   r   r   r}   Ú   s    r}   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚIVdsServiceInitializationc                 C   ó   t  | |¡ d S r   ©r	   r   ©r   r{   r   r   r   r   ã   ó   z"IVdsServiceInitialization.__init__c                 C   s@   t ƒ }|  ¡  ¡ |d< d|d d< d|d< | j||  ¡ d�}|S )Nre   r   rf   ú rB   rg   )rA   rm   rn   ro   rp   r€   r   r   r   Ú
Initializeæ   s   z$IVdsServiceInitialization.InitializeN)r#   r$   r%   r   r‰   r   r   r   r   rƒ   â   s    rƒ   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚIVdsServicec                 C   r„   r   r…   r†   r   r   r   r   ï   r‡   zIVdsService.__init__c              
   C   sj   t ƒ }|  ¡  ¡ |d< d|d d< z| j||  ¡ d�}W |S  ty4 } z| ¡ }W Y d }~|S d }~ww r   )rL   rm   rn   ro   rp   rq   rr   )r   ro   rx   ry   r   r   r   ÚIsServiceReadyò   s   þ€þzIVdsService.IsServiceReadyc                 C   r~   r   )rP   rm   rn   ro   rp   r€   r   r   r   ÚWaitForServiceReadyü   r‚   zIVdsService.WaitForServiceReadyc                 C   r~   r   )rR   rm   rn   ro   rp   r€   r   r   r   r�     r‚   zIVdsService.GetPropertiesc                 C   sj   t ƒ }|  ¡  ¡ |d< d|d d< ||d< | j||  ¡ d�}tt|  ¡ d |d d ¡|  ¡ |  	¡ d	�ƒS )
Nre   r   rf   rX   rg   ri   rZ   rj   rk   )
rV   rm   rn   ro   rp   rc   r   ru   rv   rw   )r   rX   ro   rx   r   r   r   ÚQueryProviders
  s   .zIVdsService.QueryProvidersN)r#   r$   r%   r   r‹   rŒ   r�   r�   r   r   r   r   rŠ   î   s    
rŠ   N)=Ú
__future__r   r   Úimpacket.dcerpc.v5.ndrr   r   r   Úimpacket.dcerpc.v5.dcomrtr   r   r	   r
   r   Úimpacket.dcerpc.v5.dtypesr   r   r   r   r   Úimpacket.dcerpc.v5.rpcrtr   Úimpacket.dcerpc.v5.enumr   Úimpacketr   Úimpacket.uuidr   r   ÚCLSID_VirtualDiskServiceÚIID_IEnumVdsObjectÚIID_IVdsAdviseSinkÚIID_IVdsAsyncÚIID_IVdsServiceInitializationÚIID_IVdsServiceÚIID_IVdsSwProviderÚIID_IVdsProviderrI   r?   r'   r,   r.   r8   rA   rF   rL   rO   rP   rQ   rR   rT   rV   rY   r[   r]   r`   ra   ÚOPNUMSrc   r}   rƒ   rŠ   r   r   r   r   Ú<module>   sV   		