o
    j"                     @   s  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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 d dlmZ d dlmZ edZG dd d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Z0d
Z1dZ2dZ3dZ4dZ5d Z6dZ7d
Z8dZ9dZ:dZ5d Z;dZ<d
Z=dZ>dZ5dZ?dZ@dZAd
ZBdZCdZDdZEdZFdZGdZHd
ZIdZJdZKdZLdZMdZNd
ZOdZPdZQdZRd
ZSdZTdZUdZVdZWdZXdZYdZZdZ[dZ\d
Z]dZ^dZ_dZ`d
ZadZbdZcdZddZedZfdZgdZhd ZidZjd
ZkdZld ZmdZndZod ZpdZqdZrdZsdZtdZudZvdZwd
ZxdZydZzdZ{dZ|dZ}dZ~d
ZdZdZdZdZd ZdZd
Zd!Zd"Zd#Zd$Zd%Zd&Zd'Zd(ZdZd
ZdZdZdZG d)d* d*eZG d+d, d,eZeZG d-d. d.eZG d/d0 d0eZG d1d2 d2eZG d3d4 d4eZeZeZG d5d6 d6eZeZG d7d8 d8eZG d9d: d:eZeZeZG d;d< d<eZG d=d> d>eZG d?d@ d@eZG dAdB dBeZG dCdD dDeZG dEdF dFeZG dGdH dHeZG dIdJ dJeZG dKdL dLeZG dMdN dNeZG dOdP dPeZG dQdR dReZG dSdT dTeZG dUdV dVeZG dWdX dXeZG dYdZ dZeZG d[d\ d\eZG d]d^ d^eZG d_d` d`eZG dadb dbeZG dcdd ddeZG dedf dfeZG dgdh dheZG didj djeZG dkdl dleZG dmdn dneZG dodp dpeZG dqdr dreZG dsdt dteZG dudv dveZG dwdx dxeZG dydz dzeZG d{d| d|eZG d}d~ d~eZG dd 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 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Z G dd deZG dd deZG dd deZG dd de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 d eefdeefd
eefdeefdeefdeefdeefdeefdeefdeefdeefd eefd!eefd"eefd#eefdeefd$eefeefeefeefeefee feefeefeefeefe	e
feefeefeefeefeefd%Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ ZdWd0d1Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Z e5e5e5eeeed eed efd<d=Z!ee2e8e;eeeed eed fd>d?Z"d@dA Z#e2e0B e1B e3B e4B eJfdBdCZ$dDdEe&e'B e B e$B e%B e!B e,B fdFdGZ%efdHdIZ&dJdK Z'dLdM Z(d efdNdOZ)dPdQ Z*dRdS Z+eefdTdUZ,dVS (X      )system_errors)NULLDWORDLPWSTRULONGBOOLLPBYTE	ULONGLONGPGUIDUSHORTLPDWORDWSTRGUIDPBOOLWIDESTR)NDRCALLNDR	NDRSTRUCT
NDRPOINTERNDRPOINTERNULLNDRUniConformantArrayNDRUNION)DCERPCException)uuidtup_to_bin)z$367ABB81-9844-35F1-AD32-98F038001003z2.0c                   @   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/scmr.pyr   %   s   zDCERPCSessionError.__init__c                 C   sF   | j }|tjv rtj| d }tj| d }d| j ||f S d| j  S )Nr      z'SCMR SessionError: code: 0x%x - %s - %sz+SCMR SessionError: unknown error code: 0x%x)r   r   ERROR_MESSAGES)r   key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   i          @   r"                i   l             	   
      i   i   i    i   @i      z$1ce20aba-9851-4421-9430-1ddeb766e809z$ddaf516e-58c2-4866-9574-c3b615d42ea1z$b7569e07-8421-4ee0-ad10-86915afdad09z$a144ed38-8e12-4de4-9d96-e64740b1a524z$659FCAE6-5BDB-4DA9-B1FF-CA2A178D46E0z$4f27f2de-14e2-430b-a549-7cd48cbc8245z$cc4ba62a-162e-4648-847a-b6bdf993e335z$54FB46C8-F089-464C-B1FD-59D1B62C3B50c                   @   s   e Zd ZdZdS )
BYTE_ARRAYcN)r(   r)   r*   itemr    r    r    r!   r:          r:   c                   @      e Zd ZdZdd ZdS )SC_RPC_HANDLE)Dataz20s=""c                 C      dS Nr"   r    r   r    r    r!   getAlignment      zSC_RPC_HANDLE.getAlignmentNr(   r)   r*   	structurerE   r    r    r    r!   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deffZdS )	SERVICE_STATUSdwServiceTypedwCurrentStatedwControlsAccepteddwWin32ExitCodedwServiceSpecificExitCodedwCheckPoint
dwWaitHintNr(   r)   r*   r   rH   r    r    r    r!   rJ          rJ   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 )QUERY_SERVICE_CONFIGWrK   dwStartTypedwErrorControllpBinaryPathNamelpLoadOrderGroupdwTagIdlpDependencieslpServiceStartNamelpDisplayNameNr(   r)   r*   r   r   rH   r    r    r    r!   rT          rT   c                   @   r>   )SC_RPC_LOCKr@   c                 C   rB   rC   r    rD   r    r    r!   rE      rF   zSC_RPC_LOCK.getAlignmentNrG   r    r    r    r!   r_      rI   r_   c                   @      e Zd ZdeffZdS )LPSERVICE_STATUSrA   N)r(   r)   r*   rJ   referentr    r    r    r!   ra         ra   c                   @   r`   )LPBOUNDED_DWORD_256KrA   N)r(   r)   r*   BOUNDED_DWORD_256Krb   r    r    r    r!   rd     rc   rd   c                   @   s"   e Zd ZdefdefdeffZdS )ENUM_SERVICE_STATUSWlpServiceNamer\   ServiceStatusN)r(   r)   r*   r   rJ   rH   r    r    r    r!   rf     
    rf   c                   @   r`   )LPQUERY_SERVICE_CONFIGWrA   N)r(   r)   r*   rT   rb   r    r    r    r!   rj     rc   rj   c                   @   s    e Zd ZdeffZdddZdS )STRING_PTRSWrA   NFc                 C   s4   t | d | t| jd _|d ur| | d S d S )NrA   )r   r   r   fieldsr<   
fromStringr   dataisNDR64r    r    r!   r   &  s
   zSTRING_PTRSW.__init__NF)r(   r)   r*   r   rH   r   r    r    r    r!   rk   "  s    rk   c                   @   r`   )UNIQUE_STRING_PTRSWrA   N)r(   r)   r*   rk   rb   r    r    r    r!   rr   ,  rc   rr   c                   @   s"   e Zd ZdefdefdeffZdS )QUERY_SERVICE_LOCK_STATUSW	fIsLockedlpLockOwnerdwLockDurationNr]   r    r    r    r!   rs   1  ri   rs   c                   @   r`   )SERVICE_DESCRIPTION_WOW64dwDescriptionOffsetNrR   r    r    r    r!   rw   8  rc   rw   c                   @   r`   )SERVICE_DESCRIPTIONWlpDescriptionN)r(   r)   r*   r   rH   r    r    r    r!   ry   =  rc   ry   c                   @   r`   )LPSERVICE_DESCRIPTIONWrA   N)r(   r)   r*   ry   rb   r    r    r    r!   r{   B  rc   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 )SERVICE_FAILURE_ACTIONS_WOW64dwResetPerioddwRebootMsgOffsetdwCommandOffsetcActionsdwsaActionsOffsetNrR   r    r    r    r!   r|   G      r|   c                   @   s   e Zd ZdefdeffZdS )	SC_ACTIONTypeDelayNrR   r    r    r    r!   r   P      r   c                   @      e Zd ZeZdS )SC_ACTION_ARRAYN)r(   r)   r*   r   r<   r    r    r    r!   r   X  r=   r   c                   @   r`   )
SC_ACTIONSrA   N)r(   r)   r*   r   rb   r    r    r    r!   r   \  rc   r   c                   @   sJ   e Zd ZdefdefdefdefdeffZddd	Zd
d ZdddZ	dS )SERVICE_FAILURE_ACTIONSWr}   lpRebootMsg	lpCommandr   lpsaActionsNFc                 C   s(   t j| ||d |d u rt| d< d S d S )N)rp   r   )r   r   r   rn   r    r    r!   r   j  s   z!SERVICE_FAILURE_ACTIONSW.__init__c                 C   s.   |dkrt |tr|| j|< d S t| ||S )Nr   )
isinstancer   rl   r   __setitem__)r   r$   valuer    r    r!   r   o  s   
z$SERVICE_FAILURE_ACTIONSW.__setitem__r   c                 C   s2   | d dkrd| d< nt | d | d< t| |S )Nr   r   r   lenr   getDatar   soFarr    r    r!   r   v  s   
z SERVICE_FAILURE_ACTIONSW.getDatarq   r   )
r(   r)   r*   r   r   r   rH   r   r   r   r    r    r    r!   r   a  s    
r   c                   @   r`   )LPSERVICE_FAILURE_ACTIONSWrA   N)r(   r)   r*   r   rb   r    r    r    r!   r   }  rc   r   c                   @   r`   )SERVICE_FAILURE_ACTIONS_FLAG!fFailureActionsOnNonCrashFailuresNr(   r)   r*   r   rH   r    r    r    r!   r     rc   r   c                   @   r`   )LPSERVICE_FAILURE_ACTIONS_FLAGrA   N)r(   r)   r*   r   rb   r    r    r    r!   r     rc   r   c                   @   r`   )SERVICE_DELAYED_AUTO_START_INFOfDelayedAutostartNr   r    r    r    r!   r     rc   r   c                   @   r`   )!LPSERVICE_DELAYED_AUTO_START_INFOrA   N)r(   r)   r*   r   rb   r    r    r    r!   r     rc   r   c                   @   r`   )SERVICE_SID_INFOdwServiceSidTypeNrR   r    r    r    r!   r     rc   r   c                   @   r`   )LPSERVICE_SID_INFOrA   N)r(   r)   r*   r   rb   r    r    r    r!   r     rc   r   c                   @   s&   e Zd ZdefdeffZdddZdS )$SERVICE_RPC_REQUIRED_PRIVILEGES_INFOcbRequiredPrivilegespRequiredPrivilegesr   c                 C   s   t | d | d< tj| ddS )Nr   r   r   )r   r   r   r    r    r!   r     s   z,SERVICE_RPC_REQUIRED_PRIVILEGES_INFO.getDataNr   r(   r)   r*   r   r   rH   r   r    r    r    r!   r     s
    r   c                   @   r`   )&LPSERVICE_RPC_REQUIRED_PRIVILEGES_INFOrA   N)r(   r)   r*   r   rb   r    r    r    r!   r     rc   r   c                   @   r`   )&SERVICE_REQUIRED_PRIVILEGES_INFO_WOW64dwRequiredPrivilegesOffsetNrR   r    r    r    r!   r     rc   r   c                   @   r`   )SERVICE_PRESHUTDOWN_INFOdwPreshutdownTimeoutNrR   r    r    r    r!   r     rc   r   c                   @   r`   )LPSERVICE_PRESHUTDOWN_INFOrA   N)r(   r)   r*   r   rb   r    r    r    r!   r     rc   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 )SERVICE_STATUS_PROCESSrK   rL   rM   rN   rO   rP   rQ   dwProcessIddwServiceFlagsNrR   r    r    r    r!   r     r^   r   c                   @   r>   )UCHAR_16))rA   z16s=""c                 C   rB   rC   r    rD   r    r    r!   rE     rF   zUCHAR_16.getAlignmentNrG   r    r    r    r!   r     rI   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fZdS )	%SERVICE_NOTIFY_STATUS_CHANGE_PARAMS_1ullThreadIddwNotifyMaskCallbackAddressArrayCallbackParamAddressArrayrh   dwNotificationStatus
dwSequenceN)r(   r)   r*   r	   r   r   r   rH   r    r    r    r!   r     rS   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 )%SERVICE_NOTIFY_STATUS_CHANGE_PARAMS_2r   r   r   r   rh   r   r   dwNotificationTriggeredpszServiceNamesN)	r(   r)   r*   r	   r   r   r   r   rH   r    r    r    r!   r     r^   r   c                   @   r`   )&PSERVICE_NOTIFY_STATUS_CHANGE_PARAMS_1rA   N)r(   r)   r*   r   rb   r    r    r    r!   r     rc   r   c                   @   r`   )&PSERVICE_NOTIFY_STATUS_CHANGE_PARAMS_2rA   N)r(   r)   r*   r   rb   r    r    r    r!   r     rc   r   c                   @   s   e Zd ZdefdefdZdS )SC_RPC_NOTIFY_PARAMSpStatusChangeParam1pStatusChangeParams)r"   r+   N)r(   r)   r*   r   r   unionr    r    r    r!   r     s    
r   c                   @   r   )SC_RPC_NOTIFY_PARAMS_ARRAYN)r(   r)   r*   r   r<   r    r    r    r!   r     r=   r   c                   @      e Zd ZdefdeffZdS )PSC_RPC_NOTIFY_PARAMS_LIST	cElementsNotifyParamsArrayN)r(   r)   r*   BOUNDED_DWORD_4Kr   rH   r    r    r    r!   r     r   r   c                   @   r   )(SERVICE_CONTROL_STATUS_REASON_IN_PARAMSWdwReason
pszCommentNr]   r    r    r    r!   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 )	"SERVICE_TRIGGER_SPECIFIC_DATA_ITEM
dwDataTypecbDatapDatar   c                 C   (   | d dkrt | d | d< t| |S )Nr   r   r   r   r   r    r    r!   r        z*SERVICE_TRIGGER_SPECIFIC_DATA_ITEM.getDataNr   r   r    r    r    r!   r   
      r   c                   @   r   )(SERVICE_TRIGGER_SPECIFIC_DATA_ITEM_ARRAYN)r(   r)   r*   r   r<   r    r    r    r!   r     r=   r   c                   @   r`   )#PSERVICE_TRIGGER_SPECIFIC_DATA_ITEMrA   N)r(   r)   r*   r   rb   r    r    r    r!   r     rc   r   c                   @   s8   e Zd ZdefdefdefdefdeffZd
ddZd	S )SERVICE_TRIGGERdwTriggerTypedwActionpTriggerSubtype
cDataItems
pDataItemsr   c                 C   r   )Nr   r   r   r   r   r    r    r!   r   %  r   zSERVICE_TRIGGER.getDataNr   )r(   r)   r*   r   r
   r   rH   r   r    r    r    r!   r     s    r   c                   @   r   )SERVICE_TRIGGER_ARRAYN)r(   r)   r*   r   r<   r    r    r    r!   r   *  r=   r   c                   @   r`   )PSERVICE_TRIGGERrA   N)r(   r)   r*   r   rb   r    r    r    r!   r   -  rc   r   c                   @   r`   )(SERVICE_CONTROL_STATUS_REASON_OUT_PARAMSrh   N)r(   r)   r*   r   rH   r    r    r    r!   r   2  rc   r   c                   @   s,   e Zd ZdefdefdeffZdddZdS )	SERVICE_TRIGGER_INFO	cTriggers	pTriggers	pReservedr   c                 C   r   )Nr   r   r   r   r   r    r    r!   r   =  r   zSERVICE_TRIGGER_INFO.getDataNr   )r(   r)   r*   r   r   r   rH   r   r    r    r    r!   r   7  r   r   c                   @   r`   )PSERVICE_TRIGGER_INFOrA   N)r(   r)   r*   r   rb   r    r    r    r!   r   B  rc   r   c                   @   r   )SERVICE_PREFERRED_NODE_INFOusPreferredNodefDeleteN)r(   r)   r*   r   r   rH   r    r    r    r!   r   G  r   r   c                   @   r`   )LPSERVICE_PREFERRED_NODE_INFOrA   N)r(   r)   r*   r   rb   r    r    r    r!   r   M  rc   r   c                   @   r`   )SERVICE_RUNLEVEL_INFOeLowestRunLevelNrR   r    r    r    r!   r   R  rc   r   c                   @   r`   )PSERVICE_RUNLEVEL_INFOrA   N)r(   r)   r*   r   rb   r    r    r    r!   r   W  rc   r   c                   @   r`   )SERVICE_MANAGEDACCOUNT_INFOfIsManagedAccountNrR   r    r    r    r!   r   \  rc   r   c                   @   r`   )PSERVICE_MANAGEDACCOUNT_INFOrA   N)r(   r)   r*   r   rb   r    r    r    r!   r   a  rc   r   c                   @   s^   e Zd Zdeff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ZdS )SC_RPC_CONFIG_INFOW_UNIONtagpsdpsfapsdapsfafpssidpsrppspspstipspnpsripsma)r"   r+   r3   r/   r8   r4   r5   r,   r6   r7      N)r(   r)   r*   r   	commonHdrr{   r   r   r   r   r   r   r   r   r   r   r   r    r    r    r!   r   f  s    
r   c                   @   r   )SC_RPC_CONFIG_INFOWdwInfoLevelUnionN)r(   r)   r*   r   r   rH   r    r    r    r!   r   y  r   r   c                   @      e Zd ZdZdeffZdS )RCloseServiceHandler   	hSCObjectNr(   r)   r*   opnumr?   rH   r    r    r    r!   r         r   c                   @   r   )RCloseServiceHandleResponser   	ErrorCodeNr(   r)   r*   r?   r   rH   r    r    r    r!   r    r   r  c                   @       e Zd ZdZdefdeffZdS )RControlServicer"   hService	dwControlNr(   r)   r*   r   r?   r   rH   r    r    r    r!   r    
    r  c                   @   r   )RControlServiceResponselpServiceStatusr  Nr(   r)   r*   rJ   r   rH   r    r    r    r!   r    r   r  c                   @   r   )RDeleteServicer+   r  Nr   r    r    r    r!   r    r  r  c                   @   r`   )RDeleteServiceResponser  NrR   r    r    r    r!   r    rc   r  c                   @   r   )RLockServiceDatabaser3   
hSCManagerNr   r    r    r    r!   r    r  r  c                   @   r   )RLockServiceDatabaseResponselpLockr  Nr(   r)   r*   r_   r   rH   r    r    r    r!   r    r   r  c                   @   &   e Zd ZdZdefdefdeffZdS )RQueryServiceObjectSecurityr/   r  dwSecurityInformation	cbBufSizeN)r(   r)   r*   r   r?   SECURITY_INFORMATIONr   rH   r    r    r    r!   r        r  c                   @   "   e Zd ZdefdefdeffZdS )#RQueryServiceObjectSecurityResponselpSecurityDescriptorpcbBytesNeededr  N)r(   r)   r*   r:   re   r   rH   r    r    r    r!   r    ri   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 )RSetServiceObjectSecurityr8   r  r  r  r  N)	r(   r)   r*   r   r?   r  r:   r   rH   r    r    r    r!   r        r  c                   @   r`   )!RSetServiceObjectSecurityResponser  NrR   r    r    r    r!   r!    rc   r!  c                   @   r   )RQueryServiceStatusr4   r  Nr   r    r    r    r!   r"    r  r"  c                   @   r   )RQueryServiceStatusResponser  r  Nr  r    r    r    r!   r#    r   r#  c                   @   r  )RSetServiceStatusr5   hServiceStatusr  N)r(   r)   r*   r   r?   rJ   rH   r    r    r    r!   r$    r
  r$  c                   @   r`   )RSetServiceStatusResponser  NrR   r    r    r    r!   r&    rc   r&  c                   @   r   )RUnlockServiceDatabaser,   LockN)r(   r)   r*   r   r_   rH   r    r    r    r!   r'    r  r'  c                   @   r   )RUnlockServiceDatabaseResponser(  r  Nr  r    r    r    r!   r)    r   r)  c                   @   r  )RNotifyBootConfigStatusr6   lpMachineNameBootAcceptableN)r(   r)   r*   r   SVCCTL_HANDLEWr   rH   r    r    r    r!   r*    r
  r*  c                   @   r`   )RNotifyBootConfigStatusResponser  NrR   r    r    r    r!   r.    rc   r.  c                   @   sb   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defdefdeffZ	dS )RChangeServiceConfigWr   r  rK   rU   rV   rW   rX   	lpdwTagIdrZ   dwDependSizer[   
lpPassworddwPwSizer\   N)
r(   r)   r*   r   r?   r   r   r   r   rH   r    r    r    r!   r/     s     r/  c                   @   r   )RChangeServiceConfigWResponser0  r  N)r(   r)   r*   r   r   rH   r    r    r    r!   r4    r   r4  c                   @   n   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de	fdefdefde	fdeffZ
dS )RCreateServiceW   r  rg   r\   dwDesiredAccessrK   rU   rV   rW   rX   r0  rZ   r1  r[   r2  r3  Nr(   r)   r*   r   r?   r   r   r   r   r   rH   r    r    r    r!   r6    $    r6  c                   @   r  )RCreateServiceWResponser0  lpServiceHandler  Nr(   r)   r*   r   r?   r   rH   r    r    r    r!   r;  ,  ri   r;  c                   @   &   e Zd ZdZdefdefdeffZdS )REnumDependentServicesW   r  dwServiceStater  Nr	  r    r    r    r!   r?  3  r  r?  c                   @   s(   e Zd ZdefdefdefdeffZdS )REnumDependentServicesWResponse
lpServicesr  lpServicesReturnedr  Nr(   r)   r*   r   re   r   rH   r    r    r    r!   rB  ;      rB  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 )REnumServicesStatusW   r  rK   rA  r  lpResumeIndexN)r(   r)   r*   r   r?   r   rd   rH   r    r    r    r!   rG  C  s    rG  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 )REnumServicesStatusWResponselpBufferr  rD  rI  r  N)r(   r)   r*   r   re   rd   r   rH   r    r    r    r!   rJ  M  r   rJ  c                   @   r  )ROpenSCManagerW   r+  lpDatabaseNamer8  N)r(   r)   r*   r   r-  r   r   rH   r    r    r    r!   rL  V  r  rL  c                   @   r   )ROpenSCManagerWResponse
lpScHandler  Nr  r    r    r    r!   rO  ^  r   rO  c                   @   r  )ROpenServiceWr0   r  rg   r8  Nr(   r)   r*   r   r?   r   r   rH   r    r    r    r!   rQ  d  r  rQ  c                   @   r   )ROpenServiceWResponser<  r  Nr  r    r    r    r!   rS  l  r   rS  c                   @   r  )RQueryServiceConfigW   r  r  Nr	  r    r    r    r!   rT  r  r
  rT  c                   @   r  )RQueryServiceConfigWResponselpServiceConfigr  r  N)r(   r)   r*   rT   BOUNDED_DWORD_8Kr   rH   r    r    r    r!   rV  y  ri   rV  c                   @   r  )RQueryServiceLockStatusW   r  r  Nr	  r    r    r    r!   rY    r
  rY  c                   @   r  ) RQueryServiceLockStatusWResponselpLockStatusr  r  N)r(   r)   r*   rs   r   r   rH   r    r    r    r!   r[    ri   r[  c                   @   r  )RStartServiceW   r  argcargvN)r(   r)   r*   r   r?   r   rr   rH   r    r    r    r!   r]    r  r]  c                   @   r`   )RStartServiceWResponser  NrR   r    r    r    r!   ra    rc   ra  c                   @   r  )RGetServiceDisplayNameWr9   r  rg   lpcchBufferNrR  r    r    r    r!   rb    r  rb  c                   @   "   e Zd ZdefdefdeffZdS )RGetServiceDisplayNameWResponser\   rc  r  Nr(   r)   r*   r   r   rH   r    r    r    r!   re    ri   re  c                   @   r  )RGetServiceKeyNameW   r  r\   rc  NrR  r    r    r    r!   rg    r  rg  c                   @   rd  )RGetServiceKeyNameWResponser\   rc  r  Nrf  r    r    r    r!   ri    ri   ri  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 )	REnumServiceGroupW#   r  rK   rA  r  rI  pszGroupNameN	r(   r)   r*   r   r?   r   rd   r   rH   r    r    r    r!   rj    s    rj  c                   @   .   e Zd ZdefdefdefdefdeffZdS )REnumServiceGroupWResponserK  r  rD  rI  r  N)r(   r)   r*   r   re   r   rH   r    r    r    r!   ro    r   ro  c                   @   r  )RChangeServiceConfig2W%   r  InfoN)r(   r)   r*   r   r?   r   rH   r    r    r    r!   rp    r
  rp  c                   @   r`   )RChangeServiceConfig2WResponser  NrR   r    r    r    r!   rs    rc   rs  c                   @   r>  )RQueryServiceConfig2W'   r  r   r  Nr	  r    r    r    r!   rt    r  rt  c                   @   r  )RQueryServiceConfig2WResponserK  r  r  Nr(   r)   r*   r   rX  r   rH   r    r    r    r!   rv    ri   rv  c                   @   r>  )RQueryServiceStatusEx(   r  	InfoLevelr  Nr	  r    r    r    r!   rx    r  rx  c                   @   r  )RQueryServiceStatusExResponserK  r  r  Nrw  r    r    r    r!   r{    ri   r{  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 )
REnumServicesStatusExW*   r  rz  rK   rA  r  rI  rl  Nrm  r    r    r    r!   r|    s    r|  c                   @   rn  )REnumServicesStatusExWResponserK  r  rD  rI  r  NrE  r    r    r    r!   r~    r   r~  c                   @   r5  )RCreateServiceWOW64W-   r  rg   r\   r8  rK   rU   rV   rW   rX   r0  rZ   r1  r[   r2  r3  Nr9  r    r    r    r!   r    r:  r  c                   @   r  )RCreateServiceWOW64WResponser0  r<  r  Nr=  r    r    r    r!   r     ri   r  c                   @   r  )RNotifyServiceStatusChange/   r  NotifyParamspClientProcessGuidN)r(   r)   r*   r   r?   r   r   rH   r    r    r    r!   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 )"RNotifyServiceStatusChangeResponsepSCMProcessGuidpfCreateRemoteQueuephNotifyr  N)r(   r)   r*   r   r   SC_NOTIFY_RPC_HANDLEr   rH   r    r    r    r!   r  0  rF  r  c                   @   r   )RGetNotifyResults0   hNotifyNr(   r)   r*   r   r  rH   r    r    r    r!   r  9  r  r  c                   @   r   )RGetNotifyResultsResponseppNotifyParamsr  N)r(   r)   r*   r   r   rH   r    r    r    r!   r  ?  r   r  c                   @   r   )RCloseNotifyHandle1   r  Nr  r    r    r    r!   r  F  r  r  c                   @   r  )RCloseNotifyHandleResponser  
pfApcFiredr  N)r(   r)   r*   r  r   r   rH   r    r    r    r!   r  L  ri   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 )RControlServiceExW3   r  r  r   pControlInParamsN)r(   r)   r*   r   r?   r   r   rH   r    r    r    r!   r  T  r   r  c                   @   r   )RControlServiceExWResponsepControlOutParamsr  N)r(   r)   r*   r   r   rH   r    r    r    r!   r  ]  r   r  c                   @   r  )RQueryServiceConfigEx8   r  r   Nr	  r    r    r    r!   r  c  r
  r  c                   @   r   )RQueryServiceConfigExResponsepInfor  N)r(   r)   r*   r   r   rH   r    r    r    r!   r  j  r   r  r   r7  r@  rH  rM  rU  )rZ  r^  r9   rh  rk  rq  ru  ry  r}  r  r  r  r  r  r  c                 C   s(   | t kr| S | dd  dkr| d S | S )N )r   )stringr    r    r!   checkNullString  s
   r  c                 C      t  }||d< | |S )Nr   )r   request)dcer   r  r    r    r!   hRCloseServiceHandle     
r  c                 C       t  }||d< ||d< | |S )Nr  r  )r  r  )r  r  r  r  r    r    r!   hRControlService     
r  c                 C   r  Nr  )r  r  r  r  r  r    r    r!   hRDeleteService  r  r  c                 C   r  )Nr  )r  r  )r  r  r  r    r    r!   hRLockServiceDatabase  r  r  c              
   C   s   t  }||d< ||d< ||d< z| |}W |S  tyB } z| tjkr6| }|d |d< | |}n W Y d }~|S d }~ww )Nr  r  r  r  )r  r  r   get_error_coder   ERROR_INSUFFICIENT_BUFFER
get_packet)r  r  r  r  r  resper    r    r!   hRQueryServiceObjectSecurity  s"   
r  c                 C   s0   t  }||d< ||d< ||d< ||d< | |S )Nr  r  r  r  )r  r  )r  r  r  r  r  r  r    r    r!   hRSetServiceObjectSecurity  s   
r  c                 C   r  r  )r"  r  r  r    r    r!   hRQueryServiceStatus  r  r  c                 C   r  )Nr%  r  )r$  r  )r  r%  r  r  r    r    r!   hRSetServiceStatus  r  r  c                 C   r  )Nr(  )r'  r  )r  r(  r  r    r    r!   hRUnlockServiceDatabase  r  r  c                 C   r  )Nr+  r,  )r*  r  )r  r+  r,  r  r    r    r!   hRNotifyBootConfigStatus  r  r  c                 C   s   t  }||d< ||d< ||d< ||d< t||d< t||d< ||d< ||d< |	|d	< t|
|d
< ||d< ||d< t||d< | |S )Nr  rK   rU   rV   rW   rX   r0  rZ   r1  r[   r2  r3  r\   )r/  r  r  )r  r  rK   rU   rV   rW   rX   r0  rZ   r1  r[   r2  r3  r\   changeServiceConfigr    r    r!   hRChangeServiceConfigW  s   
r  c                 C   s   t  }||d< t||d< t||d< ||d< ||d< ||d< ||d< t||d< t|	|d	< |
|d
< ||d< ||d< t||d< ||d< ||d< | |S )Nr  rg   r\   r8  rK   rU   rV   rW   rX   r0  rZ   r1  r[   r2  r3  )r6  r  r  )r  r  rg   r\   r8  rK   rU   rV   rW   rX   r0  rZ   r1  r[   r2  r3  createServicer    r    r!   hRCreateServiceW  s"   
r  c                 C   s(   t  }||d< ||d< ||d< | |S )Nr  rA  r  )r?  r  )r  r  rA  r  enumDependentServicesr    r    r!   hREnumDependentServicesW  s
   
r  c              
   C   sV  G dd dt }t }||d< ||d< ||d< d|d< t|d< z| |}W n* tyP } z| tjkrE| }|d	 |d< | |}n W Y d }~nd }~ww t	 }||_
||d
  d|d }	||	 |	dd  }	|d D ]2}
|
jd jd d }t|	|d  }|d |
d< |
jd jd d }t|	|d  }|d |
d< qt|d S )Nc                   @   s2   e Zd ZG dd deZdefdefdeffZdS )z4hREnumServicesStatusW.<locals>.ENUM_SERVICE_STATUSW2c                   @   r`   )z8hREnumServicesStatusW.<locals>.ENUM_SERVICE_STATUSW2.STRrA   N)r(   r)   r*   r   rb   r    r    r    r!   STR  rc   r  rg   r\   rh   N)r(   r)   r*   r   r  rJ   rH   r    r    r    r!   ENUM_SERVICE_STATUSW2  s    r  r  rK   rA  r   r  rI  r  rD      rK  r/   rA   r\   
ReferentIDrg   )r   rG  r   r  r   r  r   ERROR_MORE_DATAr  r   r<   setArraySizejoinrm   rl   r   )r  r  rK   rA  r  enumServicesStatusr  r  	enumArrayro   recordoffsetnamer    r    r!   hREnumServicesStatusW  s@   

r  zDUMMY zServicesActive c                 C   s0   t  }t||d< t||d< ||d< | |S )Nr+  rN  r8  )rL  r  r  )r  r+  rN  r8  openSCManagerr    r    r!   hROpenSCManagerWM  s
   
r  c                 C   ,   t  }||d< t||d< ||d< | |S )Nr  rg   r8  )rQ  r  r  )r  r  rg   r8  openServicer    r    r!   hROpenServiceWT  
   
r  c              
   C   s~   t  }||d< d|d< z| |}W |S  ty> } z| tjkr2| }|d |d< | |}n W Y d }~|S d }~ww )Nr  r   r  r  )rT  r  r   r  r   r  r  )r  r  queryServicer  r  r    r    r!   hRQueryServiceConfigW[  s    	
r  c                 C   r  )Nr  r  )rY  r  )r  r  r  queryServiceLockr    r    r!   hRQueryServiceLockStatusWk  r  r  c                 C   s\   t  }||d< ||d< |dkrt|d< n|D ]}t }t||d< |d | q| |S )Nr  r_  r   r`  rA   )r]  r   r   r  appendr  )r  r  r_  r`  startServicer<   itemnr    r    r!   hRStartServiceWq  s   

r  c                 C   r  )Nr  rg   rc  )rb  r  r  )r  r  rg   rc  getServiceDisplayr    r    r!   hRGetServiceDisplayNameW~  r  r  c                 C   r  )Nr  r\   rc  )rg  r  r  )r  r  r\   rc  getServiceKeyNamer    r    r!   hRGetServiceKeyNameW  r  r  c                 C   s@   t  }||d< ||d< ||d< ||d< ||d< ||d< | |S )Nr  rK   rA  r  rI  rl  )rj  r  )r  r  rK   rA  r  rI  rl  enumServiceGroupr    r    r!   hREnumServiceGroupW  s   
r  Nr   (-  impacketr   impacket.dcerpc.v5.dtypesr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   impacket.dcerpc.v5.ndrr   r   r   r   r   r   r   impacket.dcerpc.v5.rpcrtr   impacket.uuidr   MSRPC_UUID_SCMRr   SERVICE_ALL_ACCESSSERVICE_CHANGE_CONFIGSERVICE_ENUMERATE_DEPENDENTSSERVICE_INTERROGATESERVICE_PAUSE_CONTINUESERVICE_QUERY_CONFIGSERVICE_QUERY_STATUSSERVICE_STARTSERVICE_STOPSERVICE_USER_DEFINED_CTRLSERVICE_SET_STATUSSC_MANAGER_LOCKSC_MANAGER_CREATE_SERVICESC_MANAGER_ENUMERATE_SERVICESC_MANAGER_CONNECTSC_MANAGER_QUERY_LOCK_STATUSSC_MANAGER_MODIFY_BOOT_CONFIGSERVICE_KERNEL_DRIVERSERVICE_FILE_SYSTEM_DRIVERSERVICE_WIN32_OWN_PROCESSSERVICE_WIN32_SHARE_PROCESSSERVICE_INTERACTIVE_PROCESSSERVICE_NO_CHANGESERVICE_BOOT_STARTSERVICE_SYSTEM_STARTSERVICE_AUTO_STARTSERVICE_DEMAND_STARTSERVICE_DISABLEDSERVICE_ERROR_IGNORESERVICE_ERROR_NORMALSERVICE_ERROR_SEVERESERVICE_ERROR_CRITICALSERVICE_CONTROL_CONTINUESERVICE_CONTROL_INTERROGATESERVICE_CONTROL_PARAMCHANGESERVICE_CONTROL_PAUSESERVICE_CONTROL_STOPSERVICE_CONTROL_NETBINDADDSERVICE_CONTROL_NETBINDREMOVESERVICE_CONTROL_NETBINDENABLESERVICE_CONTROL_NETBINDDISABLESERVICE_ACTIVESERVICE_INACTIVESERVICE_STATE_ALLSERVICE_CONTINUE_PENDINGSERVICE_PAUSE_PENDINGSERVICE_PAUSEDSERVICE_RUNNINGSERVICE_START_PENDINGSERVICE_STOP_PENDINGSERVICE_STOPPEDSERVICE_ACCEPT_PARAMCHANGESERVICE_ACCEPT_PAUSE_CONTINUESERVICE_ACCEPT_SHUTDOWNSERVICE_ACCEPT_STOP$SERVICE_ACCEPT_HARDWAREPROFILECHANGESERVICE_ACCEPT_POWEREVENTSERVICE_ACCEPT_SESSIONCHANGESERVICE_ACCEPT_PRESHUTDOWNSERVICE_ACCEPT_TIMECHANGEERVICE_ACCEPT_TRIGGEREVENTDACL_SECURITY_INFORMATIONGROUP_SECURITY_INFORMATIONOWNER_SECURITY_INFORMATIONSACL_SECURITY_INFORMATIONSERVICE_CONFIG_DESCRIPTIONSERVICE_CONFIG_FAILURE_ACTIONS&SERVICE_CONFIG_DELAYED_AUTO_START_INFO#SERVICE_CONFIG_FAILURE_ACTIONS_FLAGSERVICE_CONFIG_SERVICE_SID_INFO'SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFOSERVICE_CONFIG_PRESHUTDOWN_INFOSERVICE_CONFIG_PREFERRED_NODESERVICE_CONFIG_RUNLEVEL_INFOSC_ACTION_NONESC_ACTION_RESTARTSC_ACTION_REBOOTSC_ACTION_RUN_COMMANDSERVICE_SID_TYPE_NONESERVICE_SID_TYPE_RESTRICTEDSERVICE_SID_TYPE_UNRESTRICTEDSC_STATUS_PROCESS_INFOSERVICE_NOTIFY_CREATEDSERVICE_NOTIFY_CONTINUE_PENDINGSERVICE_NOTIFY_DELETE_PENDINGSERVICE_NOTIFY_DELETEDSERVICE_NOTIFY_PAUSE_PENDINGSERVICE_NOTIFY_PAUSEDSERVICE_NOTIFY_RUNNINGSERVICE_NOTIFY_START_PENDINGSERVICE_NOTIFY_STOP_PENDINGSERVICE_NOTIFY_STOPPEDSERVICE_STOP_CUSTOMSERVICE_STOP_PLANNEDSERVICE_STOP_UNPLANNED-SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL,SERVICE_TRIGGER_TYPE_IP_ADDRESS_AVAILABILITY SERVICE_TRIGGER_TYPE_DOMAIN_JOIN(SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT!SERVICE_TRIGGER_TYPE_GROUP_POLICY%SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINTSERVICE_TRIGGER_TYPE_CUSTOM$SERVICE_TRIGGER_ACTION_SERVICE_START#SERVICE_TRIGGER_ACTION_SERVICE_STOPDOMAIN_JOIN_GUIDDOMAIN_LEAVE_GUIDFIREWALL_PORT_OPEN_GUIDFIREWALL_PORT_CLOSE_GUIDMACHINE_POLICY_PRESENT_GUID-NETWORK_MANAGER_FIRST_IP_ADDRESS_ARRIVAL_GUID,NETWORK_MANAGER_LAST_IP_ADDRESS_REMOVAL_GUIDUSER_POLICY_PRESENT_GUID SERVICE_TRIGGER_DATA_TYPE_BINARY SERVICE_TRIGGER_DATA_TYPE_STRINGSERVICE_TRIGGER_DATA_TYPE_LEVEL%SERVICE_TRIGGER_DATA_TYPE_KEYWORD_ANY%SERVICE_TRIGGER_DATA_TYPE_KEYWORD_ALLr:   r?   r  rJ   rT   r_   ra   r  re   rd   r-  rf   rj   rX  r   rk   rr   rs   rw   ry   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/  r4  r6  r;  r?  rB  rG  rJ  rL  rO  rQ  rS  rT  rV  rY  r[  r]  ra  rb  re  rg  ri  rj  ro  rp  rs  rt  rv  rx  r{  r|  r~  r  r  r  r  r  r  r  r  r  r  r  r  OPNUMSr  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!   <module>   s  @$
	

	
							
















&	(($2: