o
    àý°jQ0  ã                   @   s”  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 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 G dd„ deƒZ!e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
ƒZ/G d*d+„ d+eƒZ0G d,d-„ d-e
ƒZ1G d.d/„ d/eƒZ2G d0d1„ d1e
ƒZ3G d2d3„ d3eƒZ4G d4d5„ d5e
ƒZ5G d6d7„ d7eƒZ6G d8d9„ d9e
ƒZ7G d:d;„ d;eƒZ8G d<d=„ d=e
ƒZ9G d>d?„ d?eƒZ:i Z;G d@dA„ dAeƒZ<G dBdC„ dCeƒZ=G dDdE„ dEeƒZ>G dFdG„ dGeƒZ?dHS )Ié    )Údivision)Úprint_function)ÚNDRENUMÚ	NDRSTRUCTÚNDRUNION)ÚPMInterfacePointerÚ	INTERFACEÚDCOMCALLÚ
DCOMANSWERÚIRemUnknown2)ÚLONGÚLONGLONGÚULONGÚWSTR)ÚEnum)ÚDCERPCException)Ú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/scmp.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'SCMP SessionError: code: 0x%x - %s - %sz+SCMP 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$0b5a2c52-3eb9-470a-96e2-6c6d4570e40fz$FA7DF749-66E7-4986-A27F-E2F04AE53772z$AE1C7110-2F60-11d3-8A39-00C04F72D8E3z$214A0F28-B737-4026-B847-4F9E37D79529z$01954E6B-9254-4e6e-808C-C9E05D007696z$B5946137-7B9F-4925-AF80-51ABD60B20D5c                   @   s   e Zd ZdZdd„ ZdS )ÚVSS_ID))ÚDataz16s=b""c                 C   s   dS )Né   r   )r   r   r   r   ÚgetAlignmentB   s   zVSS_ID.getAlignmentN)r"   r#   r$   Ú	structurer(   r   r   r   r   r%   =   s    r%   c                   @   ó   e Zd ZG dd„ deƒZdS )ÚVSS_OBJECT_TYPEc                   @   s$   e Zd ZdZdZdZdZdZdZdS )zVSS_OBJECT_TYPE.enumItemsr   r   r'   é   é   é   N)	r"   r#   r$   ÚVSS_OBJECT_UNKNOWNÚVSS_OBJECT_NONEÚVSS_OBJECT_SNAPSHOT_SETÚVSS_OBJECT_SNAPSHOTÚVSS_OBJECT_PROVIDERÚVSS_OBJECT_TYPE_COUNTr   r   r   r   Ú	enumItemsQ   s    r5   N©r"   r#   r$   r   r5   r   r   r   r   r+   P   ó    r+   c                   @   r*   )ÚVSS_MGMT_OBJECT_TYPEc                   @   s   e Zd ZdZdZdZdZdS )zVSS_MGMT_OBJECT_TYPE.enumItemsr   r   r'   r,   N)r"   r#   r$   ÚVSS_MGMT_OBJECT_UNKNOWNÚVSS_MGMT_OBJECT_VOLUMEÚVSS_MGMT_OBJECT_DIFF_VOLUMEÚVSS_MGMT_OBJECT_DIFF_AREAr   r   r   r   r5   [   s
    r5   Nr6   r   r   r   r   r8   Z   r7   r8   c                   @   r*   )ÚVSS_VOLUME_SNAPSHOT_ATTRIBUTESc                   @   s    e Zd ZdZdZdZdZdZdS )z(VSS_VOLUME_SNAPSHOT_ATTRIBUTES.enumItemsr   r'   r-   é   é   N)r"   r#   r$   ÚVSS_VOLSNAP_ATTR_PERSISTENTÚ VSS_VOLSNAP_ATTR_NO_AUTORECOVERYÚ"VSS_VOLSNAP_ATTR_CLIENT_ACCESSIBLEÚ VSS_VOLSNAP_ATTR_NO_AUTO_RELEASEÚVSS_VOLSNAP_ATTR_NO_WRITERSr   r   r   r   r5   c   s    r5   Nr6   r   r   r   r   r=   b   r7   r=   c                   @   r*   )ÚVSS_SNAPSHOT_STATEc                   @   s   e Zd ZdZdZdS )zVSS_SNAPSHOT_STATE.enumItemsr   é   N)r"   r#   r$   ÚVSS_SS_UNKNOWNÚVSS_SS_CREATEDr   r   r   r   r5   l   s    r5   Nr6   r   r   r   r   rE   k   r7   rE   c                   @   r*   )ÚVSS_PROVIDER_TYPEc                   @   s   e Zd ZdZdS )zVSS_PROVIDER_TYPE.enumItemsr   N)r"   r#   r$   ÚVSS_PROV_UNKNOWNr   r   r   r   r5   r   s    r5   Nr6   r   r   r   r   rI   q   r7   rI   c                   @   s   e Zd ZdefdeffZdS )ÚVSS_VOLUME_PROPÚm_pwszVolumeNameÚm_pwszVolumeDisplayNameN)r"   r#   r$   ÚVSS_PWSZr)   r   r   r   r   rK   v   ó    þrK   c                   @   s$   e Zd ZdeffZejdefiZdS )ÚVSS_MGMT_OBJECT_UNIONÚtagÚVolN)	r"   r#   r$   r   Ú	commonHdrr8   r:   rK   Úunionr   r   r   r   rP   }   s
    ÿ
ÿrP   c                   @   ó   e Zd ZdefdeffZdS )ÚVSS_MGMT_OBJECT_PROPÚTypeÚObjN)r"   r#   r$   r8   rP   r)   r   r   r   r   rV   ˆ   rO   rV   c                   @   ó   e Zd ZdZdeffZdS )ÚIVssEnumMgmtObject_Nextr,   ÚceltN©r"   r#   r$   Úopnumr   r)   r   r   r   r   rZ   ”   ó    ÿrZ   c                   @   ó"   e Zd ZdefdefdeffZdS )ÚIVssEnumMgmtObject_NextResponseÚrgeltÚpceltFetchedÚ	ErrorCodeN©r"   r#   r$   rV   r   Úerror_status_tr)   r   r   r   r   r`   š   ó
    ýr`   c                   @   rY   )ÚIVssEnumObject_Nextr,   r[   Nr\   r   r   r   r   rg   ¢   r^   rg   c                   @   r_   )ÚIVssEnumObject_NextResponsera   rb   rc   Nrd   r   r   r   r   rh   ¨   rf   rh   c                   @   s    e Zd ZdZdefdeffZdS )ÚGetProviderMgmtInterfacer,   Ú
ProviderIdÚInterfaceIdN)r"   r#   r$   r]   r%   r)   r   r   r   r   ri   ¯   ó
    þri   c                   @   rU   )Ú GetProviderMgmtInterfaceResponseÚppItfrc   N©r"   r#   r$   r   re   r)   r   r   r   r   rm   ¶   rO   rm   c                   @   ó    e Zd ZdZdefdeffZdS )Ú!QueryVolumesSupportedForSnapshotsr-   rj   ÚIContextN)r"   r#   r$   r]   r%   r   r)   r   r   r   r   rq   ¼   rl   rq   c                   @   rU   )Ú)QueryVolumesSupportedForSnapshotsResponseÚppEnumrc   Nro   r   r   r   r   rs   Ã   rO   rs   c                   @   rp   )ÚQuerySnapshotsByVolumer.   ÚpwszVolumeNamerj   N)r"   r#   r$   r]   rN   r%   r)   r   r   r   r   ru   É   rl   ru   c                   @   rU   )ÚQuerySnapshotsByVolumeResponsert   rc   Nro   r   r   r   r   rw   Ð   rO   rw   c                   @   rY   )ÚQueryDiffAreasForVolumeé   rv   N©r"   r#   r$   r]   rN   r)   r   r   r   r   rx   ×   r^   rx   c                   @   rU   )ÚQueryDiffAreasForVolumeResponsert   rc   Nro   r   r   r   r   r{   Ý   rO   r{   c                   @   rY   )ÚQueryDiffAreasOnVolumeé   rv   Nrz   r   r   r   r   r|   ä   r^   r|   c                   @   rU   )ÚQueryDiffAreasOnVolumeResponsert   rc   Nro   r   r   r   r   r~   ê   rO   r~   c                   @   ó   e Zd Zdd„ Zdd„ ZdS )ÚIVssEnumMgmtObjectc                 C   ó   t  | |¡ t| _d S r   )r   r   ÚIID_IVssEnumMgmtObjectÚ_iid©r   Ú	interfacer   r   r   r   û   ó   
zIVssEnumMgmtObject.__init__c                 C   sD   t ƒ }|  ¡  ¡ |d< d|d d< ||d< | j|| j|  ¡ d�}|S ©NÚORPCthisr   Úflagsr[   ©Úuuid)rZ   Úget_cinstanceÚget_ORPCthisÚrequestrƒ   Úget_iPid)r   r[   rŽ   Úrespr   r   r   ÚNextÿ   s   zIVssEnumMgmtObject.NextN©r"   r#   r$   r   r‘   r   r   r   r   r€   ú   ó    r€   c                   @   r   )ÚIVssEnumObjectc                 C   r�   r   )r   r   ÚIID_IVssEnumObjectrƒ   r„   r   r   r   r     r†   zIVssEnumObject.__init__c                 C   sL   t ƒ }|  ¡  ¡ |d< d|d d< ||d< |  ¡ }|j|| j|  ¡ d�}|S r‡   )rg   rŒ   r�   ÚconnectrŽ   rƒ   r�   )r   r[   rŽ   Údcer�   r   r   r   r‘     s   zIVssEnumObject.NextNr’   r   r   r   r   r”     r“   r”   c                   @   s6   e Zd Zdd„ Zeefdd„Zdd„ Zefdd„Zd	S )
ÚIVssSnapshotMgmtc                 C   r�   r   )r   r   ÚIID_IVssSnapshotMgmtrƒ   r„   r   r   r   r     r†   zIVssSnapshotMgmt.__init__c                 C   sv   t ƒ }|  ¡ }| ¡ |d< d|d d< ||d< ||d< | j|| j|  ¡ d�}tt|d |d d	 ¡|  	¡ |  
¡ d
�ƒS )Nrˆ   r   r‰   rj   rk   rŠ   Ú rn   ÚabData©Útarget)ri   rŒ   r�   rŽ   rƒ   r�   Ú$IVssDifferentialSoftwareSnapshotMgmtr   ÚjoinÚget_ipidRemUnknownÚ
get_target)r   Ú
providerIdÚinterfaceIdÚreqÚclassInstancer�   r   r   r   ri     s   *z)IVssSnapshotMgmt.GetProviderMgmtInterfacec                 C   sz   t ƒ }|  ¡ }| ¡ |d< d|d d< ||d< ||d< | j|| j|  ¡ d�}tt|  ¡ d |d d	 ¡|  	¡ |  
¡ d
�ƒS )Nrˆ   r   r‰   rj   rr   rŠ   rš   rt   r›   rœ   )rq   rŒ   r�   rŽ   rƒ   r�   r€   r   rŸ   r    r¡   )r   r¢   ÚiContextr¤   r¥   r�   r   r   r   rq   $  s   .z2IVssSnapshotMgmt.QueryVolumesSupportedForSnapshotsc           
   
   C   sØ   t ƒ }|  ¡ }| ¡ |d< d|d d< ||d< ||d< z| j|| j|  ¡ d�}W n, tyT } z t|ƒ ddlm	} | 
¡ }||ƒ t|ƒ}	|	 ¡  W Y d }~nd }~ww tt|  ¡ d |d	 d
 ¡|  ¡ |  ¡ d�ƒS )Nrˆ   r   r‰   rv   rj   rŠ   )Úhexdumprš   rt   r›   rœ   )ru   rŒ   r�   rŽ   rƒ   r�   r   ÚprintÚimpacket.winregistryr§   Ú
get_packetrw   Údumpr”   r   rŸ   r    r¡   )
r   Ú
volumeNamer¢   r¤   r¥   r�   Úer§   ÚdataÚkkr   r   r   ru   .  s$   €ú.z'IVssSnapshotMgmt.QuerySnapshotsByVolumeN)	r"   r#   r$   r   ÚIID_ShadowCopyProviderÚ(IID_IVssDifferentialSoftwareSnapshotMgmtri   rq   ru   r   r   r   r   r˜     s
    

r˜   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )rž   c                 C   r�   r   )r   r   r±   rƒ   r„   r   r   r   r   B  r†   z-IVssDifferentialSoftwareSnapshotMgmt.__init__c                 C   ór   t ƒ }|  ¡ }| ¡ |d< d|d d< ||d< | j|| j|  ¡ d�}tt|  ¡ d |d d ¡|  	¡ |  
¡ d	�ƒS ©
Nrˆ   r   r‰   rv   rŠ   rš   rt   r›   rœ   )r|   rŒ   r�   rŽ   rƒ   r�   r€   r   rŸ   r    r¡   ©r   rv   r¤   r¥   r�   r   r   r   r|   F  ó   .z;IVssDifferentialSoftwareSnapshotMgmt.QueryDiffAreasOnVolumec                 C   r²   r³   )rx   rŒ   r�   rŽ   rƒ   r�   r€   r   rŸ   r    r¡   r´   r   r   r   rx   O  rµ   z<IVssDifferentialSoftwareSnapshotMgmt.QueryDiffAreasForVolumeN)r"   r#   r$   r   r|   rx   r   r   r   r   rž   A  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   Úimpacket.dcerpc.v5.enumr   Úimpacket.dcerpc.v5.rpcrtr   Úimpacketr   Úimpacket.uuidr   r   ÚCLSID_ShadowCopyProviderr™   r•   r±   r‚   r°   r%   rN   ÚVSS_TIMESTAMPre   r+   r8   r=   rE   rI   rK   rP   rV   rZ   r`   rg   rh   ri   rm   rq   rs   ru   rw   rx   r{   r|   r~   ÚOPNUMSr€   r”   r˜   rž   r   r   r   r   Ú<module>   s^   	
	
,