o
    jZ                     @   sD  d dl 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 d dlmZ d dl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eZdZee d 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Z-dZ.dZ/dZ0d Z1dZ2dZ3dZ4dZ5dZ6dZ7dZ8d Z9d Z:d 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[eZ\dZ]dZ^dZ_dZ`dZadZbdZcd#Zdd$ZedZfdZgdZhdZidZjd%ZkG d&d' d'eZlG d(d) d)eZmG d*d+ d+eZnG d,d- d-eZoG d.d/ d/eZpG d0d1 d1eZqG d2d3 d3eZrG d4d5 d5eZsG d6d7 d7eZtG d8d9 d9eZuG d:d; d;eZvG d<d= d=eZwG d>d? d?eZxG d@dA dAeZyG dBdC dCeZzG 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ZG dVdW dWeZG dXdY dYeZG dZd[ d[eZG d\d] d]eZG d^d_ d_eZG d`da daeZG dbdc dceZG ddde deeZG dfdg dgeZG dhdi dieZG djdk dkeZG dldm dmeZG dndo doeZG dpdq dqeZG drds dseZG dtdu dueZG dvdw dweZG dxdy dyeZG dzd{ d{eZG d|d} d}eZG d~d de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Zi d e|e}fde~efdeefdeefdeefdeefdeefdeefdeefdeefd eefd!eefd"eefdeefdeefd
eefdeefeefeefeefdZdd Zdd ZdddZdddZe
fddZdd ZdddZefd dfddZefd dfddZeffddZdd ZdddZdddZdd d e
fddZdddZdddZe
e
d d fddÄZddń ZdddǄZddɄ Zddd̄ZdS )    )NDRCALL	NDRSTRUCT
NDRPOINTERNDRUniConformantArray)DWORDLPWSTRULONGWSTRNULLGUIDPSYSTEMTIME
SYSTEMTIME)	Structure)hresult_errorssystem_errors)uuidtup_to_bin)DCERPCException)z$86D35949-83C9-4044-B424-DB363231FD0Cz1.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/tsch.pyr   $   s   zDCERPCSessionError.__init__c                 C   s   | j }|tjv rtj| d }tj| d }d| j ||f S |d@ tjv r?tj|d@  d }tj|d@  d }d| j ||f S d| j  S )Nr      z'TSCH SessionError: code: 0x%x - %s - %si  z+TSCH SessionError: unknown error code: 0x%x)r   r   ERROR_MESSAGESr   )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         r                @      i   i   i   i   i             i  i       	   
         i    i   @i   c                   @      e Zd ZeZdS )TASK_NAMES_ARRAYN)r"   r#   r$   
TASK_NAMESitemr   r   r   r   r7          r7   c                   @      e Zd ZdeffZdS )PTASK_NAMES_ARRAYDataN)r"   r#   r$   r7   referentr   r   r   r   r<          r<   c                   @   r6   )
WSTR_ARRAYN)r"   r#   r$   r	   r9   r   r   r   r   r@      r:   r@   c                   @   r;   )PWSTR_ARRAYr=   N)r"   r#   r$   r@   r>   r   r   r   r   rA      r?   rA   c                   @   r6   )
GUID_ARRAYN)r"   r#   r$   r   r9   r   r   r   r   rB      r:   rB   c                   @   r;   )PGUID_ARRAYr=   N)r"   r#   r$   rB   r>   r   r   r   r   rC      r?   rC   c                   @   r6   )SYSTEMTIME_ARRAYN)r"   r#   r$   r   r9   r   r   r   r   rD      r:   rD   c                   @   r;   )PSYSTEMTIME_ARRAYr=   N)r"   r#   r$   rD   r>   r   r   r   r   rE      r?   rE   c                   @   "   e Zd ZdefdefdeffZdS )TASK_USER_CREDuserIdpasswordflagsN)r"   r#   r$   r   r   	structurer   r   r   r   rG      
    rG   c                   @   r6   )TASK_USER_CRED_ARRAYN)r"   r#   r$   rG   r9   r   r   r   r   rM      r:   rM   c                   @   r;   )LPTASK_USER_CRED_ARRAYr=   N)r"   r#   r$   rM   r>   r   r   r   r   rN      r?   rN   c                   @   s(   e Zd ZdefdefdefdeffZdS )TASK_XML_ERROR_INFOlinecolumnnodevalueN)r"   r#   r$   r   r   rK   r   r   r   r   rO          rO   c                   @   r;   )PTASK_XML_ERROR_INFOr=   N)r"   r#   r$   rO   r>   r   r   r   r   rU      r?   rU   c                   @      e Zd ZdZdS )FIXDLEN_DATA))zProduct Version<H=0)zFile VersionrX   )zJob uuidz16s=")zApp Name Len OffsetrX   )zTrigger OffsetrX   )zError Retry CountrX   )zError Retry IntervalrX   )zIdle DeadlinerX   )z	Idle WaitrX   )Priority<L=0)zMaximum Run TimerZ   )z	Exit CoderZ   )StatusrZ   FlagsrZ   Nr"   r#   r$   rK   r   r   r   r   rW      r:   rW   c                   @   rV   )TRIGGERS))zTrigger SizerX   )	Reserved1rX   )z
Begin YearrX   )zBegin MonthrX   )z	Begin DayrX   )zEnd YearrX   )z	End MonthrX   )zEnd DayrX   )z
Start HourrX   )zStart MinuterX   )zMinutes DurationrZ   )zMinutes IntervalrZ   r\   zTrigger TyperZ   )TriggerSpecific0rX   )TriggerSpecific1rX   )TriggerSpecific2rX   PaddingrX   	Reserved2rX   	Reserved3rX   Nr^   r   r   r   r   r_      r:   r_   c                   @   rV   )WEEKLY)ra   )zWeeks IntervalrX   DaysOfTheWeekrX   )UnusedrX   re   Nr^   r   r   r   r   rk     r:   rk   c                   @   rV   )MONTHLYDATE)ra   )DaysrZ   MonthsrX   re   Nr^   r   r   r   r   ro   "  r:   ro   c                   @   rV   )
MONTHLYDOW)ra   )	WhichWeekrX   rl   rq   re   rg   ri   Nr^   r   r   r   r   rs   +  r:   rs   c                   @   rV   )JOB_SIGNATURE))SignatureVersionz<HH0)MinClientVersionrX   )	Signaturez64s="Nr^   r   r   r   r   ru   7  r:   ru   c                   @   s   e Zd ZdZdZdS )SchRpcHighestVersionr   r   N)r"   r#   r$   opnumrK   r   r   r   r   ry   B  s    ry   c                   @      e Zd ZdefdeffZdS )SchRpcHighestVersionResponsepVersion	ErrorCodeNr"   r#   r$   r   r   rK   r   r   r   r   r|   G      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 )
SchRpcRegisterTaskr   pathxmlrJ   sddl	logonTypecCredspCredsN)	r"   r#   r$   rz   r   r	   r   rN   rK   r   r   r   r   r   N  s    r   c                   @   "   e Zd ZdefdefdeffZdS )SchRpcRegisterTaskResponsepActualPath
pErrorInfor~   N)r"   r#   r$   r   rU   r   rK   r   r   r   r   r   Z  rL   r   c                   @   &   e Zd ZdZdefdefdeffZdS )SchRpcRetrieveTaskr'   r   lpcwszLanguagesBufferpulNumLanguagesNr"   r#   r$   rz   r	   r   rK   r   r   r   r   r   b      r   c                   @   r{   )SchRpcRetrieveTaskResponsepXmlr~   Nr"   r#   r$   r   r   rK   r   r   r   r   r   j  r   r   c                   @   s&   e Zd ZdZdefdefdeffZdS )SchRpcCreateFolderr-   r   r   rJ   N)r"   r#   r$   rz   r	   r   r   rK   r   r   r   r   r   q  r   r   c                   @   r;   )SchRpcCreateFolderResponser~   Nr"   r#   r$   r   rK   r   r   r   r   r   y  r?   r   c                   @   r   )SchRpcSetSecurityr(   r   r   rJ   Nr   r   r   r   r   r     r   r   c                   @   r;   )SchRpcSetSecurityResponser~   Nr   r   r   r   r   r     r?   r   c                   @       e Zd ZdZdefdeffZdS )SchRpcGetSecurityr.   r   securityInformationNr   r   r   r   r   r     
    r   c                   @   r{   )SchRpcGetSecurityResponser   r~   Nr   r   r   r   r   r     r   r   c                   @   ,   e Zd ZdZdefdefdefdeffZdS )SchRpcEnumFoldersr/   r   rJ   
startIndex
cRequestedNr   r   r   r   r   r         r   c                   @   (   e Zd ZdefdefdefdeffZdS )SchRpcEnumFoldersResponser   pcNamespNamesr~   Nr"   r#   r$   r   r<   r   rK   r   r   r   r   r     rT   r   c                   @   r   )SchRpcEnumTasksr0   r   rJ   r   r   Nr   r   r   r   r   r     r   r   c                   @   r   )SchRpcEnumTasksResponser   r   r   r~   Nr   r   r   r   r   r     rT   r   c                   @   r   )SchRpcEnumInstancesr1   r   rJ   Nr"   r#   r$   rz   r   r   rK   r   r   r   r   r     r   r   c                   @   r   )SchRpcEnumInstancesResponsepcGuidspGuidsr~   N)r"   r#   r$   r   rC   r   rK   r   r   r   r   r     rL   r   c                   @      e Zd ZdZdeffZdS )SchRpcGetInstanceInfor2   guidN)r"   r#   r$   rz   r   rK   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deffZd	S )
SchRpcGetInstanceInfoResponsepPathpStatepCurrentActionpInfopcGroupInstancespGroupInstances
pEnginePIDr~   N)r"   r#   r$   r   r   rC   r   rK   r   r   r   r   r     s    r   c                   @   r   )SchRpcStopInstancer3   r   rJ   N)r"   r#   r$   rz   r   r   rK   r   r   r   r   r     r   r   c                   @   r;   )SchRpcStopInstanceResponser~   Nr   r   r   r   r   r     r?   r   c                   @   r   )
SchRpcStopr4   r   rJ   Nr   r   r   r   r   r     r   r   c                   @   r;   )SchRpcStopResponser~   Nr   r   r   r   r   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 )		SchRpcRunr5   r   cArgspArgsrJ   	sessionIduserN)	r"   r#   r$   rz   r	   r   rA   r   rK   r   r   r   r   r     s    r   c                   @   r{   )SchRpcRunResponsepGuidr~   N)r"   r#   r$   r   r   rK   r   r   r   r   r     r   r   c                   @   r   )SchRpcDelete   r   rJ   Nr   r   r   r   r   r     r   r   c                   @   r;   )SchRpcDeleteResponser~   Nr   r   r   r   r   r     r?   r   c                   @   r   )SchRpcRename   r   newNamerJ   Nr   r   r   r   r   r     r   r   c                   @   r;   )SchRpcRenameResponser~   Nr   r   r   r   r   r   "  r?   r   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 )SchRpcScheduledRuntimesr%   r   startendrJ   r   N)r"   r#   r$   rz   r	   r   r   rK   r   r   r   r   r   (  s    r   c                   @   r   )SchRpcScheduledRuntimesResponse
pcRuntimes	pRuntimesr~   N)r"   r#   r$   r   rE   r   rK   r   r   r   r   r   2  rL   r   c                   @   r   )SchRpcGetLastRunInfor)   r   Nr"   r#   r$   rz   r	   rK   r   r   r   r   r   :  r   r   c                   @   r   )SchRpcGetLastRunInfoResponsepLastRuntimepLastReturnCoder~   N)r"   r#   r$   r   r   r   rK   r   r   r   r   r   @  rL   r   c                   @   r   )SchRpcGetTaskInfo   r   rJ   Nr   r   r   r   r   r   H  r   r   c                   @   rF   )SchRpcGetTaskInfoResponsepEnabledr   r~   Nr   r   r   r   r   r   O  rL   r   c                   @   r   )SchRpcGetNumberOfMissedRuns   r   Nr   r   r   r   r   r   W  r   r   c                   @   r{   )#SchRpcGetNumberOfMissedRunsResponsepNumberOfMissedRunsr~   Nr   r   r   r   r   r   ]  r   r   c                   @   r   )SchRpcEnableTask   r   enabledNr   r   r   r   r   r   d  r   r   c                   @   r;   )SchRpcEnableTaskResponser~   Nr   r   r   r   r   r   k  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   s   |  t S r   )requestry   )dcer   r   r   hSchRpcHighestVersion  s   r   r   c           	      C   sz   t  }t||d< t||d< ||d< ||d< ||d< t||d< t|dkr,t|d< n|D ]	}|d | q.| |S )	Nr   r   rJ   r   r   r   r   r   )r   r   lenr
   appendr   )	r   r   r   rJ   r   r   r   r   credr   r   r   hSchRpcRegisterTask  s   

r   r   c                 C   s,   t  }t||d< ||d< ||d< | |S )Nr   r   r   )r   r   r   )r   r   r   r   schRpcRetrieveTaskr   r   r   hSchRpcRetrieveTask  
   
r   c                 C   s,   t  }t||d< ||d< d|d< | |S )Nr   r   r   rJ   )r   r   r   )r   r   r   schRpcCreateFolderr   r   r   hSchRpcCreateFolder  r   r   c                 C   0   t  }t||d< t||d< ||d< | |S )Nr   r   rJ   )r   r   r   )r   r   r   rJ   schRpcSetSecurityr   r   r   hSchRpcSetSecurity  
   
r       c                 C   $   t  }t||d< ||d< | |S )Nr   r   )r   r   r   )r   r   r   schRpcGetSecurityr   r   r   hSchRpcGetSecurity     
r   c                 C   4   t  }t||d< ||d< ||d< ||d< | |S Nr   rJ   r   r   )r   r   r   )r   r   rJ   r   r   schRpcEnumFoldersr   r   r   hSchRpcEnumFolders     
r  c                 C   r   r   )r   r   r   )r   r   rJ   r   r   schRpcEnumTasksr   r   r   hSchRpcEnumTasks  r  r  c                 C   r   Nr   rJ   )r   r   r   )r   r   rJ   schRpcEnumInstancesr   r   r   hSchRpcEnumInstances  r   r  c                 C   s   t  }||d< | |S )Nr   )r   r   )r   r   schRpcGetInstanceInfor   r   r   hSchRpcGetInstanceInfo  s   
r	  c                 C   s    t  }||d< ||d< | |S )Nr   rJ   )r   r   )r   r   rJ   schRpcStopInstancer   r   r   hSchRpcStopInstance  s   
r  c                 C   r   r  )r   r   r   )r   r   rJ   
schRpcStopr   r   r   hSchRpcStop  r   r  c           	      C   sj   t  }t||d< t||d< |D ]}t }t||d< |d | q||d< ||d< ||d< | |S )Nr   r   r=   r   rJ   r   r   )r   r   r   r   r   r   )	r   r   r   rJ   r   r   	schRpcRunargargnr   r   r   
hSchRpcRun  s   
r  c                 C   r   r  )r   r   r   )r   r   rJ   schRpcDeleter   r   r   hSchRpcDelete  r   r  c                 C   r   )Nr   r   rJ   )r   r   r   )r   r   r   rJ   schRpcRenamer   r   r   hSchRpcRename  r   r  c                 C   s<   t  }t||d< ||d< ||d< ||d< ||d< | |S )Nr   r   r   rJ   r   )r   r   r   )r   r   r   r   rJ   r   schRpcScheduledRuntimesr   r   r   hSchRpcScheduledRuntimes  s   
r  c                 C      t  }t||d< | |S Nr   )r   r   r   )r   r   schRpcGetLastRunInfor   r   r   hSchRpcGetLastRunInfo     
r  c                 C   r   r  )r   r   r   )r   r   rJ   schRpcGetTaskInfor   r   r   hSchRpcGetTaskInfo  r   r  c                 C   r  r  )r   r   r   )r   r   schRpcGetNumberOfMissedRunsr   r   r   hSchRpcGetNumberOfMissedRuns  r  r   Tc                 C   s6   t  }t||d< |du rd|d< nd|d< | |S )Nr   Tr   r   r   )r   r   r   )r   r   r   schRpcEnableTaskr   r   r   hSchRpcEnableTask  s   

r"  N)r   )r   r   )r   )r   )T)impacket.dcerpc.v5.ndrr   r   r   r   impacket.dcerpc.v5.dtypesr   r   r   r	   r
   r   r   r   impacket.structurer   impacketr   r   impacket.uuidr   impacket.dcerpc.v5.rpcrtr   MSRPC_UUID_TSCHSr   CNLENDNLENUNLENMAX_BUFFER_SIZETASK_FLAG_INTERACTIVETASK_FLAG_DELETE_WHEN_DONETASK_FLAG_DISABLEDTASK_FLAG_START_ONLY_IF_IDLETASK_FLAG_KILL_ON_IDLE_END$TASK_FLAG_DONT_START_IF_ON_BATTERIES$TASK_FLAG_KILL_IF_GOING_ON_BATTERIESTASK_FLAG_RUN_ONLY_IF_DOCKEDTASK_FLAG_HIDDEN&TASK_FLAG_RUN_IF_CONNECTED_TO_INTERNET TASK_FLAG_RESTART_ON_IDLE_RESUMETASK_FLAG_SYSTEM_REQUIREDTASK_FLAG_RUN_ONLY_IF_LOGGED_ONTASK_LOGON_NONETASK_LOGON_PASSWORDTASK_LOGON_S4UTASK_LOGON_INTERACTIVE_TOKENTASK_LOGON_GROUPTASK_LOGON_SERVICE_ACCOUNT(TASK_LOGON_INTERACTIVE_TOKEN_OR_PASSWORDTASK_STATE_UNKNOWNTASK_STATE_DISABLEDTASK_STATE_QUEUEDTASK_STATE_READYTASK_STATE_RUNNINGSCHED_S_TASK_READYSCHED_S_TASK_RUNNINGSCHED_S_TASK_NOT_SCHEDULEDTASK_TRIGGER_FLAG_HAS_END_DATE&TASK_TRIGGER_FLAG_KILL_AT_DURATION_ENDTASK_TRIGGER_FLAG_DISABLEDONCEDAILYrk   ro   rs   EVENT_ON_IDLEEVENT_AT_SYSTEMSTARTEVENT_AT_LOGONSUNDAYMONDAYTUESDAY	WEDNESDAYTHURSDAYFRIDAYSATURDAYJANUARYFEBRUARYMARCHAPRILMAYJUNEJULYAUGUST	SEPTEMBEROCTOBERNOVEMBERDECEMBER
FIRST_WEEKSECOND_WEEK
THIRD_WEEKFOURTH_WEEK	LAST_WEEKr8   TASK_VALIDATE_ONLYTASK_CREATETASK_UPDATETASK_DISABLETASK_DON_ADD_PRINCIPAL_ACE!TASK_IGNORE_REGISTRATION_TRIGGERSTASK_DONT_ADD_PRINCIPAL_ACESCH_FLAG_FOLDERSCH_FLAG_TASKTASK_ENUM_HIDDENTASK_RUN_AS_SELFTASK_RUN_IGNORE_CONSTRAINTSTASK_RUN_USE_SESSION_IDTASK_RUN_USER_SIDSCH_FLAG_STATEr7   r<   r@   rA   rB   rC   rD   rE   rG   rM   rN   rO   rU   rW   r_   ru   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   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   <module>   s  (
					
	
	






	
