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^   	
	
,