o
    jk                    @   s!  d dl Z d dlmZ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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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)m*Z+ d dl,m-Z- d dl.m/Z/ d d	l0m1Z1m2Z2m3Z3 ed
Z4edZ5edZ6edZ7edZ8edZ9ed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Z?dZMdZNdZOd ZPdZQd ZRd!ZSd ZTd ZUdZVdZWdZXdZYeYZZd"Z[dZ\d#Z]d$Z^e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|eZ}G d.d/ d/e}ZG d0d1 d1eZ~G d2d3 d3eZG d4d5 d5eZG d6d7 d7e"ZG d8d9 d9eZG d:d; d;eZeZG 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 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 dwe1ZdIdxdyZdzd{ Zd|d} Zd~d ZG dd deZ*G dd deZG dd deZeZG dd deZeZeZeZeZG 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Ze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ZeZeZG 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 d d deZG dd deZG dd deZG dd deZG dd	 d	eZG d
d deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG d d! d!eZG d"d# d#eZG 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 d0d1 d1eZG d2d3 d3eZG d4d5 d5eZG d6d7 d7eZ	G d8d9 d9eZ
G d:d; d;eZG d<d= d=eZG d>d? d?eZG d@dA dAeZG dBdC dCeZG dDdE dEeZG dFdG dGeZG dHdI dIeZG dJdK dKeZG dLdM dMeZG dNdO dOeZG dPdQ dQeZG dRdS dSeZG dTdU dUeZG dVdW dWeZG dXdY dYeZG dZd[ d[eZG d\d] d]eZG d^d_ d_eZG d`da daeZG dbdc dceZG ddde deeZ G dfdg dgeZ!G dhdi dieZ"G djdk dkeZ#G dldm dmeZ$G dndo doeZ%G dpdq dqeZ&G drds dseZ'G dtdu dueZ(G dvdw dweZ)G dxdy dyeZ*G dzd{ d{eZ+G d|d} d}eZ,G d~d deZ-G dd deZ.G dd deZ/G dd deZ0G dd deZ1G dd deZ2G dd deZ3G dd deZ4G dd deZ5G dd deZ6G dd deZ7G dd deZ8G dd deZ9G dd deZ:G dd deZ;G dd deZ<G dd deZ=G dd deZ>G dd deZ?G dd deZ@G dd deZAG dd deZBG dd deZCG dd deZDG dd deZEG dd deZFG dd deZGG dd deZHG dd deZIG dd deZJG dd deZKG dd deZLG dd deZMG dd deZNG ddÄ deZOG dĐdń deZPG dƐdǄ deZQG dȐdɄ deZRG dʐd˄ deZSG d̐d̈́ deZTG dΐdτ deZUG dАdф deZVG dҐdӄ deZWG dԐdՄ deZXG d֐dׄ deZYG dؐdل deZZG dڐdۄ deZ[G dܐd݄ deZ\G dސd߄ deZ]G dd deZ^G dd deZ_G dd deZ`G dd deZaG dd deZbG dd deZcG dd deZdG dd deZeG dd deZfG dd deZgG dd deZhG dd deZiG dd deZjG dd deZkG dd deZlG dd deZmG d d deZnG dd deZoG dd deZpG dd deZqG dd	 d	eZrG d
d deZsG dd deZtG dd deZuG dd deZvG dd deZwG dd deZxG dd deZyG dd deZzG 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ZG d&d' d'eZG d(d) d)eZG d*d+ d+eZG d,d- d-eZG d.d/ d/eZG d0d1 d1eZG d2d3 d3eZG d4d5 d5eZG d6d7 d7eZG d8d9 d9eZG d:d; d;eZG d<d= d=eZG d>d? d?eZG d@dA dAeZG dBdC dCeZG dDdE dEeZG dFdG dGeZG dHdI dIeZG dJdK dKeZG dLdM dMeZG dNdO dOeZG dPdQ dQeZG dRdS dSeZG dTdU dUeZG dVdW dWeZG dXdY dYeZG dZd[ d[eZG d\d] d]eZG d^d_ d_eZG d`da daeZG dbdc dceZG ddde deeZG dfdg dgeZG dhdi dieZG djdk dkeZG dldm dmeZG dndo doeZG dpdq dqeZG drds dseZG dtdu dueZG dvdw dweZG dxdy dyeZG dzd{ d{eZG d|d} d}eZG d~d deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZ	 	 	 G dd deZG dd deZ	 G dd deZG dd deZ	 	 G dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZ	 	 G dd deZG dd deZ	 	 	 	 	 	 G dd deZG dd deZɐdd Zʐdd ZːdIddZ̐dd Z͐dd ZΐddÄ ZϐdĐdń ZАdƐdǄ ZѐdȐdɄ ZҐdJdːd̄ZӐd͐d΄ ZԐdϐdЄ ZՐdѐd҄ Z֐dӐdԄ ZאdՐdք Zؐdאd؄ Zِdِdڄ Zڐdېd܄ Zېdݐdބ Zܐdߐd Zݐdd Zސdd ZߐdKddZdKddZdKddZdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zdd Zdd ZdLddZdd Zd	d
 ZdMddZdMddZdMddZdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! ZdNd"d#Zd$d% Zd&d' Z d(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 ZdOd7d8ZG d9d: d:Z	G d;d< d<e	Z
G d=d> d>e	ZG d?d@ d@e	ZG dAdB dBe	ZG dCdD dDe	ZG dEdF dFe	ZG dGdH dHe	ZdS (P      N)datetime	timedelta)	transport)uuidtup_to_binbin_to_stringstring_to_bin)	NDRNDRCALL	NDRSTRUCTNDRENUMNDRUNIONNDRUniConformantArray
NDRPOINTERNDRUniConformantVaryingArrayUNKNOWNDATA)NULLBOOLBOOLEANSTRWSTRLPWSTRWIDESTRLONGUINTULONGPULONGLPDWORDLARGE_INTEGERDWORDNDRHYPERUSHORTUCHARPCHARBYTEPBYTEUUIDGUIDSID)system_errors)Enum)DCERPCExceptionRPC_C_AUTHN_GSS_NEGOTIATERPC_C_AUTHN_LEVEL_PKT_PRIVACY)z$484809d6-4239-471b-b5bc-61df8c23ac481.0)z$11899a43-2b68-4a76-92e3-a3d6ad8c26cer-   )z$88143fd0-c28d-4b2b-8fef-8d882f6a9390r-   )z$bde95fdf-eee0-45de-9e12-e5a61cd0d4fer-   )z$497d95a6-2d27-4bf5-9bbd-a6046957133cr-   )z$1257b580-ce2f-4109-82d6-a9459d0bf6bcr-   )z$5ca4a760-ebb1-11cf-8611-00a0245420edr-   	         A               /                   (         2   <      
                     @      c                   @   s   e Zd ZdddZdS )r   Nr   c                 C   sp   |d u r| j j}|dkrt|dd ztd| | jd j dd W d S    tdt| jd  dd Y d S )N  )endz %sData)	__class____name__print	enumItemsfieldsnamehex)selfmsgindent rY   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/impacket/dcerpc/v5/tsts.pydump   s   $ zNDRENUM.dump)Nr   )rP   
__module____qualname__r[   rY   rY   rY   rZ   r          r   c                   @       e Zd ZdZdZdZdd ZdS )TS_WCHAR))ActualCountz<L=len(Data)//2))ra   z<Q=len(Data)//2)rN   :c                 C   s$   |dkr| j | dS t| |S )NrN   utf-16le)rS   decoder   __getitem__rV   keyrY   rY   rZ   rf         zTS_WCHAR.__getitem__NrP   r\   r]   	commonHdrcommonHdr64	structurerf   rY   rY   rY   rZ   r`      
    r`   c                   @      e Zd ZdeffZdS )
TS_LPWCHARrN   N)rP   r\   r]   r`   referentrY   rY   rY   rZ   rp          rp   c                   @   r_   )TS_CHAR))ra   z<L=len(Data)))ra   z<Q=len(Data)rb   c                 C   s   |dkr	| j | S t| |S )NrN   )rS   r   rf   rg   rY   rY   rZ   rf      s   
zTS_CHAR.__getitem__Nrj   rY   rY   rY   rZ   rs      rn   rs   c                   @      e Zd Zdd ZdS )SYSTEM_TIMESTAMPc                 C   s<   |dkrt dddttt| j| d d S t| |S )NrN   iA  r>   rB   )microseconds)r   r   intstrrS   r   rf   rg   rY   rY   rZ   rf      s   (zSYSTEM_TIMESTAMP.__getitem__NrP   r\   r]   rf   rY   rY   rY   rZ   ru          ru   c                   @   s.   e Zd ZdZdefdefdeffZdd ZdS )TS_UNICODE_STRINGa  
    typedef struct _TS_UNICODE_STRING {
        USHORT Length;
        USHORT MaximumLength;
        #ifdef __midl
            [size_is(MaximumLength),length_is(Length)]PWSTR Buffer;
        #else
            PWSTR Buffer;
        #endif
    } TS_UNICODE_STRING;
    LengthMaximumLengthBufferc                 C   s^   | j d j d dkrdS | j d j d j d }|d | d  d}|dr-|d d	 S |S )
Nr~   
ReferentIDr   rK   rN   r|   rd    )rS   re   endswith)rV   	rawBuffervaluerY   rY   rZ   getValue   s   
zTS_UNICODE_STRING.getValueN)rP   r\   r]   __doc__r    r   rm   r   rY   rY   rY   rZ   r{      s    r{   c                   @   ro   )	TS_LPCHARrN   N)rP   r\   r]   rs   rq   rY   rY   rY   rZ   r      rr   r   c                   @   rt   )TS_WCHAR_STRIPPEDc                 C   *   |dkr| j | ddS t| |S NrN   rd   r   )rS   re   stripr   rf   rg   rY   rY   rZ   rf         zTS_WCHAR_STRIPPED.__getitem__Nry   rY   rY   rY   rZ   r      rz   r   c                       s*   e Zd ZdZdd Zd fdd	Z  ZS )WIDESTR_STRIPPEDNc                 C   r   r   rS   re   rstripr   rf   rg   rY   rY   rZ   rf      r   zWIDESTR_STRIPPED.__getitem__r   c                    s"   | j d u rt ||S | j d S )Nr=   )lengthsuper
getDataLenrV   dataoffsetrO   rY   rZ   r      s   

zWIDESTR_STRIPPED.getDataLenr   )rP   r\   r]   r   rf   r   __classcell__rY   rY   r   rZ   r      s    r   c                   @   rt   )WSTR_STRIPPEDc                 C   r   r   r   rg   rY   rY   rZ   rf      r   zWSTR_STRIPPED.__getitem__Nry   rY   rY   rY   rZ   r      rz   r   c                   @   ro   )LPWCHAR_STRIPPEDrN   N)rP   r\   r]   r   rq   rY   rY   rY   rZ   r      rr   r   c                   @      e Zd ZdZdd ZdS )
LONG_ARRAYLc                 C   s$   |dkrd | j| S t| |S )NrN       )joinrS   r   rf   rg   rY   rY   rZ   rf     ri   zLONG_ARRAY.__getitem__N)rP   r\   r]   itemrf   rY   rY   rY   rZ   r      s    r   c                   @      e Zd ZdZdS )UCHAR_ARRAYcN)rP   r\   r]   r   rY   rY   rY   rZ   r         r   c                   @   ro   )LPUCHAR_ARRAYrN   N)rP   r\   r]   r   rq   rY   rY   rY   rZ   r     rr   r   c                   @   r   )WCHAR_ARRAY_32r;   NrP   r\   r]   r   rY   rY   rY   rZ   r     r   r   c                   @   r   )WCHAR_ARRAY_256r2   Nr   rY   rY   rY   rZ   r     r   r   c                   @   r   )WCHAR_ARRAY_33!   Nr   rY   rY   rY   rZ   r     r   r   c                   @   r   )WCHAR_ARRAY_21   Nr   rY   rY   rY   rZ   r     r   r   c                   @   r   )WCHAR_ARRAY_18   Nr   rY   rY   rY   rZ   r     r   r   c                   @   r   )WCHAR_ARRAY_4rD   Nr   rY   rY   rY   rZ   r     r   r   c                   @      e Zd Zed ZdS )WCHAR_CLIENTNAME_LENGTHr>   N)rP   r\   r]   CLIENTNAME_LENGTHr   rY   rY   rY   rZ   r     rz   r   c                   @   r   )WCHAR_DOMAIN_LENGTHr>   N)rP   r\   r]   DOMAIN_LENGTHr   rY   rY   rY   rZ   r     rz   r   c                   @   r   )WCHAR_USERNAME_LENGTHr>   N)rP   r\   r]   USERNAME_LENGTHr   rY   rY   rY   rZ   r      rz   r   c                   @   r   )WCHAR_PASSWORD_LENGTHr>   N)rP   r\   r]   PASSWORD_LENGTHr   rY   rY   rY   rZ   r   "  rz   r   c                   @   r   )WCHAR_DIRECTORY_LENGTHr>   N)rP   r\   r]   DIRECTORY_LENGTHr   rY   rY   rY   rZ   r   $  rz   r   c                   @   r   )WCHAR_INITIALPROGRAM_LENGTHr>   N)rP   r\   r]   INITIALPROGRAM_LENGTHr   rY   rY   rY   rZ   r   &  rz   r   c                   @   r   )WCHAR_CLIENTADDRESS_LENGTHr>   N)rP   r\   r]   CLIENTADDRESS_LENGTHr   rY   rY   rY   rZ   r   (  rz   r   c                   @   r   )WCHAR_IMEFILENAME_LENGTHr>   N)rP   r\   r]   IMEFILENAME_LENGTHr   rY   rY   rY   rZ   r   *  rz   r   c                   @   r   )WCHAR_CLIENTLICENSE_LENGTHr>   N)rP   r\   r]   CLIENTLICENSE_LENGTHr   rY   rY   rY   rZ   r   ,  rz   r   c                   @   r   )WCHAR_CLIENTMODEM_LENGTHr>   N)rP   r\   r]   CLIENTMODEM_LENGTHr   rY   rY   rY   rZ   r   .  rz   r   c                   @      e Zd ZeZdS )WCHAR_AUDIODRIVENAME_LENGTHN)rP   r\   r]   AUDIODRIVENAME_LENGTHr   rY   rY   rY   rZ   r   0  r   r   c                   @   r   )WCHAR_CLIENT_PRODUCT_ID_LENGTHN)rP   r\   r]   CLIENT_PRODUCT_ID_LENGTHr   rY   rY   rY   rZ   r   2  r   r   c                   @   r   )WCHAR_NASIFILESERVER_LENGTHr>   N)rP   r\   r]   NASIFILESERVER_LENGTHr   rY   rY   rY   rZ   r   4  rz   r   c                   @   r   )WCHAR_CALLBACK_LENGTHr>   N)rP   r\   r]   CALLBACK_LENGTHr   rY   rY   rY   rZ   r   6  rz   r   c                   @   r   )WCHAR_MAX_BR_NAMEN)rP   r\   r]   MAX_BR_NAMEr   rY   rY   rY   rZ   r   8  r   r   c                   @   r   )WCHAR_WINSTATIONCOMMENT_LENGTHr>   N)rP   r\   r]   WINSTATIONCOMMENT_LENGTHr   rY   rY   rY   rZ   r   :  rz   r   c                   @   s   e Zd ZdddZdd ZdS )DCERPCSessionErrorNc                 C   s   t | ||| d S N)r*   __init__)rV   error_string
error_codepacketrY   rY   rZ   r   B     zDCERPCSessionError.__init__c                 C   sJ   | j d@ }|tjv r tj| d }tj| d }d| j ||f S d| j  S )Ni  r   r>   z'TSTS SessionError: code: 0x%x - %s - %sz+TSTS SessionError: unknown error code: 0x%x)r   r(   ERROR_MESSAGES)rV   rh   error_msg_shorterror_msg_verboserY   rY   rZ   __str__D  s   


zDCERPCSessionError.__str__)NNN)rP   r\   r]   r   r   rY   rY   rY   rZ   r   A  s    
r   c                 C   s@   |d u r
t | d }t | |ksJ d| d|t |   7 } | S )Nr>   zInvalid data size!r   )len)r   sizerY   rY   rZ   ZEROPADM  s
   r   c                 C   s   | d8 } | d } | S )Nl     }*{Gi rY   )trY   rY   rZ   getUnixTimeT  s   r   c                 C   s   | j j| jS r   )rR   _value2member_map__name_)enumrh   rY   rY   rZ   
enum2valueY     r   c                 C   s   | sdS t | d S )NrK   )r   )
BINARY_SIDformatCanonical)rawSidrY   rY   rZ   binary_sid_to_string]  s   r   c                   @   s   e Zd Zdd Zdd ZdS )r'   c                 C   s   dddddddddd	d

}| dr't|ddkr'dt|dd S | drAt|ddkrAdt|dd S ||v rI|| S |S )NSELFzTERMINAL SERVER USERzAuthenticated Users
RESTRICTEDzThis OrganizationIUSRSYSTEMzLOCAL SERVICEzNETWORK SERVICE)
zS-1-5-10zS-1-5-13zS-1-5-11zS-1-5-12zS-1-5-14zS-1-5-15zS-1-5-17zS-1-5-18zS-1-5-19zS-1-5-20zS-1-5-90-0--rF   zDWM-{}r   zS-1-5-96-0-zUMFD-{})
startswithr   splitformatrw   )rV   sid	knownSidsrY   rY   rZ   	known_sidc  s$   zSID.known_sidc                 C   s8   |dkrt | j| }t|sdS | |S t| |S )NrN   rK   )r   rS   r   r   r   rf   )rV   rh   r   rY   rY   rZ   rf   x  s   
zSID.__getitem__N)rP   r\   r]   r   rf   rY   rY   rY   rZ   r'   b  s    r'   c                   @   sN   e Zd ZdefdeffZdd Zdd Zdd ZdddZ	dd Z
dd Zd	S )context_handlecontext_handle_attributescontext_handle_uuidc                 C      t | d S Nr   r   rV   rY   rY   rZ   getUUID     zcontext_handle.getUUIDc                 C   s   t | d | d fS )Nr   r   r   r   rY   rY   rZ   tuple  r   zcontext_handle.tuplec                 C   s"   t |d |d | d< | d< d S )Nr   r>   r   r   )r   )rV   tuprY   rY   rZ   
from_tuple  s   "zcontext_handle.from_tupleNFc                 C   s   t | || d| d< d S )N                   r   )r
   r   )rV   r   isNDR64rY   rY   rZ   r     s   zcontext_handle.__init__c                 C   s   | d dkS )Nr   r  rY   r   rY   rY   rZ   isNull  r   zcontext_handle.isNullc                 C   r   r   r   r   rY   rY   rZ   r     r   zcontext_handle.__str__)NF)rP   r\   r]   r   r%   rm   r   r   r  r   r  r   rY   rY   rY   rZ   r     s    
r   c                   @   r   )handle_t))rN   z20s=b""c                 C   s   | j du rdS dS )NTrG   rD   )_isNDR64r   rY   rY   rZ   getAlignment  s   
zhandle_t.getAlignmentN)rP   r\   r]   rm   r  rY   rY   rY   rZ   r    s    r  c                   @   ro   )pHandlerN   N)rP   r\   r]   r  rq   rY   rY   rY   rZ   r    rr   r  c                   @      e Zd ZG dd deZdS )MSGBOX_ENUMc                   @   s0   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
S )zMSGBOX_ENUM.enumItemsrC   r=   rE   r9   r>   rD   rF   i}  i }  N)rP   r\   r]   IDABORTIDCANCELIDIGNOREIDNOIDOKIDRETRYIDYESIDASYNC	IDTIMEOUTrY   rY   rY   rZ   rR     s    rR   NrP   r\   r]   r)   rR   rY   rY   rY   rZ   r
        r
  c                   @       e Zd ZdZG dd deZdS )ShutdownFlags)rN   z<Lc                   @   s   e Zd ZdZdZdZdZdS )zShutdownFlags.enumItemsr>   r=   rD   rG   N)rP   r\   r]   
WSD_LOGOFFWSD_SHUTDOWN
WSD_REBOOTWSD_POWEROFFrY   rY   rY   rZ   rR     s
    rR   NrP   r\   r]   rm   r)   rR   rY   rY   rY   rZ   r        r  c                   @   $   e Zd ZdZdZdZdZdZdZdS )HotKeyModifiers))rN   z<Hr   r>   r=   rD   rG   N)	rP   r\   r]   rm   NONEAltControlShift
WindowsKeyrY   rY   rY   rZ   r     s    r   c                   @   r  )
EventFlagsr  c                   @   s<   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S )zEventFlags.enumItemsr   r>   r=   rD   rG   r8   r;   rI   r0   r2   il        N)rP   r\   r]   WEVENT_NONEWEVENT_CREATEWEVENT_DELETEWEVENT_RENAMEWEVENT_CONNECTWEVENT_DISCONNECTWEVENT_LOGONWEVENT_LOGOFFWEVENT_STATECHANGEWEVENT_LICENSE
WEVENT_ALLWEVENT_FLUSHrY   rY   rY   rZ   rR     s    rR   Nr  rY   rY   rY   rZ   r&    r  r&  c                   @   r  )ADDRESSFAMILY_ENUMr  c                   @   s   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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S ) zADDRESSFAMILY_ENUM.enumItemsr8      r   rB   rE   r7   i  r.      r/   rG            rC   r=      rF      r9   r5      r4      i   rD   rH   r>   r   r   N)#rP   r\   r]   	AppleTalkAtmBanyanCcittChaosClusterControllerAreaNetworkDataKitDataLinkDecNetEcmaFireFoxHyperChannel	Ieee12844ImpLinkInterNetworkInterNetworkV6IpxIrdaIsoLatMaxNetBiosNetworkDesignersNSOsiPacketPupSnaUnixUnspecified	VoiceViewrY   rY   rY   rZ   rR     sB    rR   Nr  rY   rY   rY   rZ   r3    r  r3  c                   @   r   )WINSTATIONNAMEr>   N)rP   r\   r]   WINSTATIONNAME_LENGTHr   rY   rY   rY   rZ   r]    rz   r]  c                   @      e Zd ZdddZdS )DLLNAMEr   c                 C      t d S Nr>   )DLLNAME_LENGTHr   rY   rY   rZ   r        zDLLNAME.getDataLenNr   rP   r\   r]   r   rY   rY   rY   rZ   r`    r^   r`  c                   @   ro   )PDLLNAMErN   N)rP   r\   r]   r`  rq   rY   rY   rY   rZ   rf    rr   rf  c                   @   r_  )
DEVICENAMEr   c                 C   ra  rb  )DEVICENAME_LENGTHr   rY   rY   rZ   r   "  rd  zDEVICENAME.getDataLenNr   re  rY   rY   rY   rZ   rg  !  r^   rg  c                   @   ro   )PDEVICENAMErN   N)rP   r\   r]   rg  rq   rY   rY   rY   rZ   ri  %  rr   ri  c                   @   r_  )CLIENTDATANAMEr   c                 C   ra  rb  )CLIENTDATANAME_LENGTHr   rY   rY   rZ   r   -  rd  zCLIENTDATANAME.getDataLenNr   re  rY   rY   rY   rZ   rj  ,  r^   rj  c                   @   ro   )PCLIENTDATANAMErN   N)rP   r\   r]   rj  rq   rY   rY   rY   rZ   rl  0  rr   rl  c                   @   r	  )WINSTATIONINFOCLASSc                   @   s   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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%Z'd&Z(d'Z)d(Z*d)Z+d*S )+zWINSTATIONINFOCLASS.enumItemsr   r>   r=   rC   rD   rE   rF   r9   rG   r.   rB   rH   r/   r5  r5   r7  r8   r4   r   r6  r3   r   r4  r9  r7   r8  r:     r<  r;  r:      r;   r   "   #   $   %   &   '   r<   N),rP   r\   r]   WinStationCreateDataWinStationConfigurationWinStationPdParamsWinStationWdWinStationPdWinStationPrinterWinStationClientWinStationModulesWinStationInformationWinStationTraceWinStationBeepWinStationEncryptionOffWinStationEncryptionPermWinStationNtSecurityWinStationUserTokenWinStationUnused1WinStationVideoDataWinStationInitialProgramWinStationCdWinStationSystemTraceWinStationVirtualDataWinStationClientDataWinStationSecureDesktopEnterWinStationSecureDesktopExit"WinStationLoadBalanceSessionTargetWinStationLoadIndicatorWinStationShadowInfoWinStationDigProductIdWinStationLockedStateWinStationRemoteAddressWinStationIdleTimeWinStationLastReconnectTypeWinStationDisallowAutoReconnectWinStationUnused2WinStationUnused3WinStationUnused4WinStationUnused5WinStationReconnectedFromIdWinStationEffectsPolicyWinStationTypeWinStationInformationExrY   rY   rY   rZ   rR   8  sT    rR   Nr  rY   rY   rY   rZ   rm  7  r  rm  c                   @   r  )WINSTATIONSTATECLASSr  c                   @   s4   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S )zWINSTATIONSTATECLASS.enumItemsr   r>   r=   rC   rD   rE   rF   r9   rG   r.   N)rP   r\   r]   State_ActiveState_ConnectedState_ConnectQueryState_ShadowState_Disconnected
State_IdleState_ListenState_Reset
State_Down
State_InitrY   rY   rY   rZ   rR   h  s    rR   Nr  rY   rY   rY   rZ   r  d  r  r  c                   @   r	  )SDCLASSc                   @       e Zd ZdZdZdZdZdZdS )zSDCLASS.enumItemsr   r>   r=   rC   rD   N)rP   r\   r]   SdNone	SdConsole	SdNetworkSdAsyncSdOemTransportrY   rY   rY   rZ   rR   v      rR   Nr  rY   rY   rY   rZ   r  u  r  r  c                   @   r	  )SHADOWCLASSc                   @   r  )zSHADOWCLASS.enumItemsr   r>   r=   rC   rD   N)rP   r\   r]   Shadow_DisableShadow_EnableInputNotifyShadow_EnableInputNoNotifyShadow_EnableNoInputNotifyShadow_EnableNoInputNoNotifyrY   rY   rY   rZ   rR     r  rR   Nr  rY   rY   rY   rZ   r  ~  r  r  c                   @   r	  )RECONNECT_TYPEc                   @      e Zd ZdZdZdZdS )zRECONNECT_TYPE.enumItemsr   r>   r=   N)rP   r\   r]   NeverReconnectedManualReconnectAutoReconnectrY   rY   rY   rZ   rR         rR   Nr  rY   rY   rY   rZ   r    r  r  c                   @   ro   )PRECONNECT_TYPErN   N)rP   r\   r]   r  rq   rY   rY   rY   rZ   r    rr   r  c                   @   ro   )UINT_PTRrN   N)rP   r\   r]   r   rq   rY   rY   rY   rZ   r    rr   r  c                   @   r	  )SESSIONTYPEc                   @   (   e Zd ZdZdZdZdZdZdZdZ	dS )	zSESSIONTYPE.enumItemsr   r>   r=   rC   rD   rE   rF   N)
rP   r\   r]   SESSIONTYPE_UNKNOWNSESSIONTYPE_SERVICESSESSIONTYPE_LISTENERSESSIONTYPE_REGULARDESKTOPSESSIONTYPE_ALTERNATESHELLSESSIONTYPE_REMOTEAPPSESSIONTYPE_MEDIACENTEREXTrY   rY   rY   rZ   rR     s    rR   Nr  rY   rY   rY   rZ   r    r  r  c                   @   r	  )SHADOW_CONTROL_REQUESTc                   @   r  )z SHADOW_CONTROL_REQUEST.enumItemsr   r>   r=   N)rP   r\   r]   SHADOW_CONTROL_REQUEST_VIEW"SHADOW_CONTROL_REQUEST_TAKECONTROLSHADOW_CONTROL_REQUEST_CountrY   rY   rY   rZ   rR     r  rR   Nr  rY   rY   rY   rZ   r    r  r  c                   @   r	  )SHADOW_PERMISSION_REQUESTc                   @   r  )z#SHADOW_PERMISSION_REQUEST.enumItemsr   r>   r=   N)rP   r\   r]    SHADOW_PERMISSION_REQUEST_SILENT+SHADOW_PERMISSION_REQUEST_REQUESTPERMISSIONSHADOW_PERMISSION_REQUEST_CountrY   rY   rY   rZ   rR     r  rR   Nr  rY   rY   rY   rZ   r    r  r  c                   @   r	  )SHADOW_REQUEST_RESPONSEc                   @   r  )	z!SHADOW_REQUEST_RESPONSE.enumItemsr   r>   r=   rC   rD   rE   rF   N)
rP   r\   r]   SHADOW_REQUEST_RESPONSE_ALLOWSHADOW_REQUEST_RESPONSE_DECLINE2SHADOW_REQUEST_RESPONSE_POLICY_PERMISSION_REQUIRED'SHADOW_REQUEST_RESPONSE_POLICY_DISABLED(SHADOW_REQUEST_RESPONSE_POLICY_VIEW_ONLY<SHADOW_REQUEST_RESPONSE_POLICY_VIEW_ONLY_PERMISSION_REQUIRED2SHADOW_REQUEST_RESPONSE_SESSION_ALREADY_CONTROLLEDrY   rY   rY   rZ   rR     s    rR   Nr  rY   rY   rY   rZ   r    r  r  c                   @   r	  )SESSION_FILTERc                   @   r   )zSESSION_FILTER.enumItemsr   N)rP   r\   r]   SF_SERVICES_SESSION_POPUPrY   rY   rY   rZ   rR     r   rR   Nr  rY   rY   rY   rZ   r    r  r  c                   @   r	  )PROTOCOLSTATUS_INFO_TYPEc                   @      e Zd ZdZdZdS )z"PROTOCOLSTATUS_INFO_TYPE.enumItemsr   r>   N)rP   r\   r]   PROTOCOLSTATUS_INFO_BASICPROTOCOLSTATUS_INFO_EXTENDEDrY   rY   rY   rZ   rR     s    rR   Nr  rY   rY   rY   rZ   r    r  r  c                   @   r	  )QUERY_SESSION_DATA_TYPEc                   @   r  )z!QUERY_SESSION_DATA_TYPE.enumItemsr   r>   r=   rC   rD   rE   N)	rP   r\   r]   QUERY_SESSION_DATA_MODULEQUERY_SESSION_DATA_WDCONFIGQUERY_SESSION_DATA_VIRTUALDATAQUERY_SESSION_DATA_LICENSEQUERY_SESSION_DATA_DEVICEID%QUERY_SESSION_DATA_LICENSE_VALIDATIONrY   rY   rY   rZ   rR     s    rR   Nr  rY   rY   rY   rZ   r    r  r  c                   @   "   e Zd ZdefdefdeffZdS )SESSIONENUM_LEVEL1	SessionIdStateNameNrP   r\   r]   r   r  r   rm   rY   rY   rY   rZ   r    
    r  c                   @   s4   e 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 )SESSIONENUM_LEVEL2r  r  r  SourcebFullDesktopSessionTypeN)
rP   r\   r]   r   r  r   r   r   r&   rm   rY   rY   rY   rZ   r    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 )
SESSIONENUM_LEVEL3r  r  r  r  r  r  ProtoDataSizepProtocolDataN)rP   r\   r]   r   r  r   r   r   r&   r!   rm   rY   rY   rY   rZ   r        r  c                   @   s.   e Zd ZdeffZdefdefdefdZdS )SessionInfotagSessionEnum_Level1SessionEnum_Level2SessionEnum_Level3)r>   r=   rC   N)	rP   r\   r]   r   rk   r  r  r  unionrY   rY   rY   rZ   r    s    
r  c                   @      e Zd ZdefdeffZdS )SessionInfo_STRUCTLevelr  N)rP   r\   r]   r   r  rm   rY   rY   rY   rZ   r        r  c                   @   r   )SESSIONENUMN)rP   r\   r]   r  r   rY   rY   rY   rZ   r  	  r   r  c                   @   ro   )PSESSIONENUMrN   N)rP   r\   r]   r  rq   rY   rY   rY   rZ   r     rr   r   c                   @   r  )EXECENVDATA_LEVEL1	ExecEnvIdr  SessionNameNr  rY   rY   rY   rZ   r    r  r  c                   @   ro   )PEXECENVDATA_LEVEL1rN   N)rP   r\   r]   r  rq   rY   rY   rY   rZ   r    rr   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 )
EXECENVDATA_LEVEL2r  r  r  AbsSessionIdHostNameUserName
DomainNameFarmNameNr  rY   rY   rY   rZ   r  #  r  r  c                   @   ro   )PEXECENVDATA_LEVEL2rN   N)rP   r\   r]   r  rq   rY   rY   rY   rZ   r  .  rr   r  c                   @   (   e Zd ZdeffZdefdefdZdS )ExecEnvDatar  ExecEnvEnum_Level1ExecEnvEnum_Level2)r>   r=   N)rP   r\   r]   r   rk   r  r  r  rY   rY   rY   rZ   r  3      
r  c                   @   r  )ExecEnvData_STRUCTr  r  N)rP   r\   r]   r   r  rm   rY   rY   rY   rZ   r  <  r  r  c                   @   r   )EXECENVDATAN)rP   r\   r]   r  r   rY   rY   rY   rZ   r  C  r   r  c                   @   ro   )PEXECENVDATArN   N)rP   r\   r]   r  rq   rY   rY   rY   rZ   r  F  rr   r  c                   @   r   )EXECENVDATAEX_LEVEL1a2  
        structure = (
            ('ExecEnvId', LONG),
            ('State', WINSTATIONSTATECLASS),
            ('AbsSessionId', LONG),
            ('pszSessionName', WIDESTR),
            ('pszHostName', WIDESTR),
            ('pszUserName', WIDESTR),
            ('pszFarmName', WIDESTR),
        )
    N)rP   r\   r]   r   rY   rY   rY   rZ   r  M  s    r  c                   @   "   e Zd ZdeffZddefiZdS )ExecEnvDataExr  r>   r  N)rP   r\   r]   r   rk   r  r  rY   rY   rY   rZ   r  ]  
    r  c                   @   r   )EXECENVDATAEXN)rP   r\   r]   r  r   rY   rY   rY   rZ   r  f  r   r  c                   @   ro   )PEXECENVDATAEXrN   N)rP   r\   r]   r  rq   rY   rY   rY   rZ   r  i  rr   r  c                   @   r  )LISTENERENUM_LEVEL1Id
bListeningr  N)rP   r\   r]   r   r   r   rm   rY   rY   rY   rZ   r  o  r  r  c                   @   r  )ListenerInfor  r>   ListenerEnum_Level1N)rP   r\   r]   r   rk   r  r  rY   rY   rY   rZ   r  w  r  r  c                   @   r  )ListenerInfo_STRUCTr  r  N)rP   r\   r]   r   r  rm   rY   rY   rY   rZ   r    r  r  c                   @   r   )LISTENERENUMN)rP   r\   r]   r  r   rY   rY   rY   rZ   r     r   r   c                   @   ro   )PLISTENERENUMrN   N)rP   r\   r]   r   rq   rY   rY   rY   rZ   r!    rr   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 )
LSMSESSIONINFORMATIONpszUserName	pszDomainpszTerminalNameSessionStateDesktopLockedConnectTimeDisconnectTime	LogonTimeN)rP   r\   r]   r   r  r   ru   rm   rY   rY   rY   rZ   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 )
TS_SYSTEMTIMEwYearwMonth
wDayOfWeekwDaywHourwMinutewSecondwMillisecondsN)rP   r\   r]   r    rm   rY   rY   rY   rZ   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 )	TS_TIME_ZONE_INFORMATIONBiasStandardNameStandardDateStandardBiasDaylightNameDaylightDateDaylightBiasN)rP   r\   r]   r   r   r+  rm   rY   rY   rY   rZ   r4    s    r4  c                   @   s:  e Zd ZG dd deZg 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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d!efd"efd#efd$efd%efR Zd&S )'WINSTATIONCLIENTc                   @   r   )zWINSTATIONCLIENT.FLAGS))flagsz6s=b""c                 C   st   |dkr4t | j| dd  d}dddddddddddddd}|D ]}t|d@ ||< |dL }q#|S t| |S )Nr=  r=   littleF)	fTextOnlyfDisableCtrlAltDelfMousefDoubleClickDetectfINetClientfPromptForPasswordfMaximizeShellfEnableWindowsKeyfRemoteConsoleAudiofPasswordIsScPinfNoAudioPlaybackfUsingSavedCredsfRestrictedLogonr>   )rw   
from_bytesrS   boolr   rf   )rV   rh   flagsIntkeyskrY   rY   rZ   rf     s*   
z"WINSTATIONCLIENT.FLAGS.__getitem__NrP   r\   r]   rm   rf   rY   rY   rY   rZ   FLAGS      rR  r=  
ClientNameDomainr  PasswordWorkDirectoryInitialProgramSerialNumberEncryptionLevelClientAddressFamilyClientAddressHResVRes
ColorDepthProtocolTypeKeyboardLayoutKeyboardTypeKeyboardSubTypeKeyboardFunctionKeyimeFileNameClientDirectoryClientLicenseClientModemClientBuildNumberClientHardwareIdClientProductIdOutBufCountHostOutBufCountClientOutBufLengthAudioDriverNameClientTimeZoneClientSessionIdclientDigProductIdPerformanceFlagsActiveInputLocaleN)rP   r\   r]   r
   rR  r   r   r   r   r   r   r   r#   r3  r   r    r   r   r   r   r4  r   rm   rY   rY   rY   rZ   r<    s    	
 !"#$
r<  c                   @   ro   )PWINSTATIONCLIENTrN   N)rP   r\   r]   r<  rq   rY   rY   rY   rZ   ru    rr   ru  c                   @   r  )TS_COUNTER_HEADERdwCounterIDbResultN)rP   r\   r]   r   r   rm   rY   rY   rY   rZ   rv    r  rv  c                   @   r  )
TS_COUNTERcounterHeaddwValue	startTimeN)rP   r\   r]   rv  r   r   rm   rY   rY   rY   rZ   ry    r  ry  c                   @   r   )TS_COUNTER_ARRAYN)rP   r\   r]   ry  r   rY   rY   rY   rZ   r}    r   r}  c                   @   ro   )PTS_COUNTERrN   N)rP   r\   r]   r}  rq   rY   rY   rY   rZ   r~    rr   r~  c                   @   r  )SESSIONFLAGSr  c                   @   r  )zSESSIONFLAGS.enumItems    r   r>   N)rP   r\   r]   WTS_SESSIONSTATE_UNKNOWNWTS_SESSIONSTATE_LOCKWTS_SESSIONSTATE_UNLOCKrY   rY   rY   rZ   rR     r  rR   Nr  rY   rY   rY   rZ   r    r  r  c                   @   sR   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d
e	fde
ffZdS )LSM_SESSIONINFO_EX_LEVEL1r&  SessionFlagsr  r	  r  r(  r)  r*  LastInputTimeProtocolDataSizeProtocolDataN)rP   r\   r]   r  r  r   r   r   ru   r   r   rm   rY   rY   rY   rZ   r  !  s    r  c                   @   r  )LSM_SESSIONINFO_EXr  r>   LSM_SessionInfo_Level1N)rP   r\   r]   r   rk   r  r  rY   rY   rY   rZ   r  1  r  r  c                   @   ro   )PLSMSESSIONINFORMATION_EXrN   N)rP   r\   r]   r  rq   rY   rY   rY   rZ   r  ;  rr   r  c                   @   r  )TNotificationIdr  c                   @   sD   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S )zTNotificationId.enumItemsr   r>   r=   rD   rG   r8   r;   rI   r0   r2   rJ   rA   i   r  N)rP   r\   r]   WTS_NOTIFY_NONEWTS_NOTIFY_CREATEWTS_NOTIFY_CONNECTWTS_NOTIFY_DISCONNECTWTS_NOTIFY_LOGONWTS_NOTIFY_LOGOFFWTS_NOTIFY_SHADOW_STARTWTS_NOTIFY_SHADOW_STOPWTS_NOTIFY_TERMINATEWTS_NOTIFY_CONSOLE_CONNECTWTS_NOTIFY_CONSOLE_DISCONNECTWTS_NOTIFY_LOCKWTS_NOTIFY_UNLOCKWTS_NOTIFY_ALLrY   rY   rY   rZ   rR   E  s    rR   Nr  rY   rY   rY   rZ   r  A  r  r  c                   @   r  )SESSION_CHANGEr  r  N)rP   r\   r]   r   r  rm   rY   rY   rY   rZ   r  V  r  r  c                   @   r   )SESSION_CHANGE_ARRAYN)rP   r\   r]   r  r   rY   rY   rY   rZ   r  \  r   r  c                   @   ro   )PSESSION_CHANGErN   N)rP   r\   r]   r  rq   rY   rY   rY   rZ   r  _  rr   r  c                   @   r  )CALLBACKCLASSr  c                   @   r  )zCALLBACKCLASS.enumItemsr   r>   r=   N)rP   r\   r]   Callback_DisableCallback_RovingCallback_FixedrY   rY   rY   rZ   rR   j  r  rR   Nr  rY   rY   rY   rZ   r  f  r  r  c                   @   s   e Zd ZG dd de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defdefdefdeffZdS )
USERCONFIGc                   @   r   )zUSERCONFIG.FLAGS))r=  z7s=b""c                 C   s~   |dkr9t | j| d d  d}g d}i }|D ]\}}|dkr(|d@ ||< n
|d|> d @ ||< ||L }q|S t| |S )Nr=  r>  )*)fInheritAutoLogonr>   )fInheritResetBrokenr>   )fInheritReconnectSamer>   )fInheritInitialProgramr>   )fInheritCallbackr>   )fInheritCallbackNumberr>   )fInheritShadowr>   )fInheritMaxSessionTimer>   )fInheritMaxDisconnectionTimer>   )fInheritMaxIdleTimer>   )fInheritAutoClientr>   )fInheritSecurityr>   )rD  r>   )fResetBrokenr>   )fReconnectSamer>   )fLogonDisabledr>   )fWallPaperDisabledr>   )fAutoClientDrivesr>   )fAutoClientLptsr>   )fForceClientLptDefr>   )fRequireEncryptionr>   )fDisableEncryptionr>   )fUnused1r>   )fHomeDirectoryMapRootr>   )fUseDefaultGinar>   )fCursorBlinkDisabledr>   )fPublishedAppr>   )fHideTitleBarr>   )	fMaximizer>   )fDisableCpmr>   )fDisableCdmr>   )fDisableCcmr>   )fDisableLPTr>   )fDisableClipr>   )fDisableExer>   )fDisableCamr>   )fDisableAutoReconnectr>   )r_  rC   )fInheritColorDepthr>   )fErrorInvalidProfiler>   )rH  r>   )fDisablePNPRedirr>   r>   )rw   rL  rS   r   rf   )rV   rh   rN  tmprO  rP  bitsrY   rY   rZ   rf   v  s   +
zUSERCONFIG.FLAGS.__getitem__NrQ  rY   rY   rY   rZ   rR  q  rS  rR  r=  r  rU  rV  rW  rX  CallbackNumberCallbackShadowMaxConnectionTimeMaxDisconnectionTimeMaxIdleTimera  MinEncryptionLevelNWLogonServerPublishedNameWFProfilePath	WFHomeDirWFHomeDirDriveN)rP   r\   r]   r
   rR  r   r   r   r   r   r   r  r  r   r#   r   r   r   rm   rY   rY   rY   rZ   r  p  s,    Ar  c                   @   r   )OEMId))r  z4s=""NrP   r\   r]   rm   rY   rY   rY   rZ   r    r   r  c                   @   s$   e Zd Z	 defdefdeffZdS )WINSTATIONCONFIGCommentUserr  N)rP   r\   r]   r   r  r  rm   rY   rY   rY   rZ   r    s    r  c                   @   ro   )PWINSTATIONCONFIGrN   N)rP   r\   r]   r  rq   rY   rY   rY   rZ   r    rr   r  c                   @      e Zd ZdS )PROTOCOLCOUNTERSNrP   r\   r]   rY   rY   rY   rZ   r        r  c                   @   r  )CACHE_STATISTICSNr  rY   rY   rY   rZ   r    r  r  c                   @   r  )PROTOCOLSTATUSNr  rY   rY   rY   rZ   r    r  r  c                   @   ro   )PPROTOCOLSTATUSrN   N)rP   r\   r]   r  rq   rY   rY   rY   rZ   r    rr   r  c                       s    e Zd ZdZ fddZ  ZS )IPv4ADDRESSr  c                    sN   |dkr!| j | }g }|r|t|d@ g7 }|dL }|sd|S t |S )NrN      rG   .)rS   rx   r   r   rf   )rV   rh   xyr   rY   rZ   rf     s   

zIPv4ADDRESS.__getitem__)rP   r\   r]   rm   rf   r   rY   rY   r   rZ   r    r  r  c                   @   s8   e Zd ZG dd deZdefdefdefdeffZdS )!RCM_REMOTEADDRESS_UNION_CASE_IPV4c                   @   r   )z(RCM_REMOTEADDRESS_UNION_CASE_IPV4._4CHAR))sin_zeroz4s=b""Nr  rY   rY   rY   rZ   _4CHAR  r   r  sin_port	sin_port2in_addrr  N)rP   r\   r]   r
   r  r    r  rm   rY   rY   rY   rZ   r        r  c                   @   s8   e Zd ZG dd deZdefdefdefdeffZdS )!RCM_REMOTEADDRESS_UNION_CASE_IPV6c                   @   r   )z(RCM_REMOTEADDRESS_UNION_CASE_IPV6._8CHAR))r  z8s=b""Nr  rY   rY   rY   rZ   _8CHAR  r   r  r  r  r  sin6_scope_idN)rP   r\   r]   r
   r  r    r   rm   rY   rY   rY   rZ   r    r  r  c                   @   r  )RCM_REMOTEADDRESSr  ipv4ipv6)r=   r9  N)rP   r\   r]   r    rk   r  r  r  rY   rY   rY   rZ   r    r  r  c                   @   r  )pResult_ENUMr  c                   @   sX   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ZdZdZdS )zpResult_ENUM.enumItemsr   l       l       l       l       l   "    l   #    l       l       l       l      l   j    l   n  l   W   l      l     l   .  l      l   z   N)rP   r\   r]   STATUS_SUCCESSSTATUS_INVALID_PARAMETERSTATUS_CANCELLEDSTATUS_INVALID_INFO_CLASSSTATUS_NO_MEMORYSTATUS_ACCESS_DENIEDSTATUS_BUFFER_TOO_SMALLSTATUS_NOT_IMPLEMENTEDSTATUS_INFO_LENGTH_MISMATCHSTATUS_UNSUCCESSFULSTATUS_CTX_WINSTATION_NOT_FOUNDSTATUS_WRONG_PASSWORD+DOES_NOT_EXISTS_OR_INSUFFICIENT_PERMISSIONSINVALID_PARAMETER2ERROR_ACCESS_DENIEDERROR_INVALID_STATEERROR_LOGON_FAILUREERROR_FILE_NOT_FOUNDERROR_STATUS_BUFFER_TOO_SMALLrY   rY   rY   rZ   rR      s(    rR   Nr  rY   rY   rY   rZ   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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defdefdefdeffZdS )TS_SYS_PROCESS_INFORMATIONNextEntryOffsetNumberOfThreadsSpareLi1SpareLi2SpareLi3
CreateTimeUserTime
KernelTime	ImageNameBasePriorityUniqueProcessIdInheritedFromUniqueProcessIdHandleCountr  SpareUl3PeakVirtualSizeVirtualSizePageFaultCountPeakWorkingSetSizeWorkingSetSizeQuotaPeakPagedPoolUsageQuotaPagedPoolUsageQuotaPeakNonPagedPoolUsageQuotaNonPagedPoolUsagePagefileUsagePeakPagefileUsagePrivatePageCountN)	rP   r\   r]   r   r   r{   r   r   rm   rY   rY   rY   rZ   r  9  s:    r  c                   @   ro   )PTS_SYS_PROCESS_INFORMATIONrN   N)rP   r\   r]   r  rq   rY   rY   rY   rZ   r&  Y  rr   r&  c                   @   s2   e Zd ZdefdefdeffZdd Zdd ZdS )	TS_ALL_PROCESSES_INFOpTsProcessInfo	SizeOfSidpSidc                 C   s   | j d j d S )Nr(  rN   )rS   r   rY   rY   rZ   getProcessInfof  s   z$TS_ALL_PROCESSES_INFO.getProcessInfoc                 C   s@   | j d j d rd| j d d nd}|sdS t t|S )Nr*  r   r   rN   rK   )rS   r   r'   r   r   )rV   r   rY   rY   rZ   getSidi  s   (zTS_ALL_PROCESSES_INFO.getSidN)	rP   r\   r]   r&  r   r   rm   r+  r,  rY   rY   rY   rZ   r'  `  s    r'  c                   @   r   )TS_ALL_PROCESSES_INFO_ARRAYN)rP   r\   r]   r'  r   rY   rY   rY   rZ   r-  o  r   r-  c                   @   ro   )PTS_ALL_PROCESSES_INFOrN   N)rP   r\   r]   r-  rq   rY   rY   rY   rZ   r.  r  rr   r.  c                   @   r  )WINSTATIONCONFIG2Nr  rY   rY   rY   rZ   r/  y  r  r/  c                   @   r  )CLIENT_STACK_ADDRESSNr  rY   rY   rY   rZ   r0  }  r  r0  c                   @       e Zd ZdZdefdeffZdS )RpcOpenSessionr   r  	phSessionN)rP   r\   r]   opnumr   r  rm   rY   rY   rY   rZ   r2    
    r2  c                   @   r  )RpcOpenSessionResponser3  	ErrorCodeN)rP   r\   r]   SESSION_HANDLEr   rm   rY   rY   rY   rZ   r6    r  r6  c                   @      e Zd ZdZdeffZdS )RpcCloseSessionr>   r3  NrP   r\   r]   r4  r8  rm   rY   rY   rY   rZ   r:        r:  c                   @   ro   )RpcCloseSessionResponser7  NrP   r\   r]   r   rm   rY   rY   rY   rZ   r=    rr   r=  c                   @   &   e Zd ZdZdefdefdeffZdS )
RpcConnectr=   hSessionTargetSessionId
szPasswordN)rP   r\   r]   r4  r8  r   r   rm   rY   rY   rY   rZ   r@        r@  c                   @   ro   )RpcConnectResponser7  Nr>  rY   rY   rY   rZ   rE    rr   rE  c                   @   r9  )RpcDisconnectrC   rA  Nr;  rY   rY   rY   rZ   rF    r<  rF  c                   @   ro   )RpcDisconnectResponser7  Nr>  rY   rY   rY   rZ   rG    rr   rG  c                   @   r9  )	RpcLogoffrD   rA  Nr;  rY   rY   rY   rZ   rH    r<  rH  c                   @   ro   )RpcLogoffResponser7  Nr>  rY   rY   rY   rZ   rI    rr   rI  c                   @   r9  )RpcGetUserNamerE   rA  Nr;  rY   rY   rY   rZ   rJ    r<  rJ  c                   @   s"   e Zd ZdefdefdeffZdS )RpcGetUserNameResponser#  r$  r7  NrP   r\   r]   r   r   rm   rY   rY   rY   rZ   rK    s
    rK  c                   @   r9  )RpcGetTerminalNamerF   rA  Nr;  rY   rY   rY   rZ   rM    r<  rM  c                   @   r  )RpcGetTerminalNameResponser%  r7  NrL  rY   rY   rY   rZ   rN    r  rN  c                   @   r9  )RpcGetStater9   rA  Nr;  rY   rY   rY   rZ   rO    r<  rO  c                   @   r  )RpcGetStateResponseplStater7  N)rP   r\   r]   r  r   rm   rY   rY   rY   rZ   rP    r  rP  c                   @   r9  )RpcIsSessionDesktopLockedrG   rA  Nr;  rY   rY   rY   rZ   rR    r<  rR  c                   @   ro   )!RpcIsSessionDesktopLockedResponser7  Nr>  rY   rY   rY   rZ   rS    rr   rS  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 )	RpcShowMessageBoxr.   rA  szTitle	szMessageulStyle	ulTimeout
bDoNotWaitN)	rP   r\   r]   r4  r8  r   r   r   rm   rY   rY   rY   rZ   rT        rT  c                   @   r  )RpcShowMessageBoxResponsepulResponser7  N)rP   r\   r]   r
  r   rm   rY   rY   rY   rZ   r[    r  r[  c                   @   r9  )RpcGetTimesrB   rA  Nr;  rY   rY   rY   rZ   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 )RpcGetTimesResponsepConnectTimepDisconnectTime
pLogonTimer7  NrP   r\   r]   ru   r   rm   rY   rY   rY   rZ   r^        r^  c                   @   r1  )RpcGetSessionCountersrH   hBindinguEntriesN)rP   r\   r]   r4  r  r   rm   rY   rY   rY   rZ   rd    r5  rd  c                   @   r  )RpcGetSessionCountersResponsepCounterr7  N)rP   r\   r]   r~  r   rm   rY   rY   rY   rZ   rg  $  r  rg  c                   @   r9  )RpcGetSessionInformationr/   r  NrP   r\   r]   r4  r   rm   rY   rY   rY   rZ   ri  +  r<  ri  c                   @   r  ) RpcGetSessionInformationResponsepSessionInfor7  N)rP   r\   r]   r"  r   rm   rY   rY   rY   rZ   rk  0  r  rk  c                   @   r9  )RpcSwitchToServicesSessionr5  re  NrP   r\   r]   r4  r  rm   rY   rY   rY   rZ   rm  7  r<  rm  c                   @   ro   )"RpcSwitchToServicesSessionResponser7  Nr>  rY   rY   rY   rZ   ro  =  rr   ro  c                   @   r9  )RpcRevertFromServicesSessionr5   re  Nrn  rY   rY   rY   rZ   rp  B  r<  rp  c                   @   ro   )$RpcRevertFromServicesSessionResponser7  Nr>  rY   rY   rY   rZ   rq  H  rr   rq  c                   @   r9  )RpcGetLoggedOnCountr7  re  Nrn  rY   rY   rY   rZ   rr  N  r<  rr  c                   @   s"   e Zd ZdefdefdeffZdS )RpcGetLoggedOnCountResponsepUserSessionspDeviceSessionsr7  Nr>  rY   rY   rY   rZ   rs  T  r  rs  c                   @   r9  )RpcGetSessionTyper8   r  Nrj  rY   rY   rY   rZ   rv  \  r<  rv  c                   @   r  )RpcGetSessionTypeResponsepSessionTyper7  N)rP   r\   r]   r  r   rm   rY   rY   rY   rZ   rw  b  r  rw  c                   @   r1  )RpcGetSessionInformationExr4   r  r  N)rP   r\   r]   r4  r   r   rm   rY   rY   rY   rZ   ry  i  r5  ry  c                   @   r  )"RpcGetSessionInformationExResponseLSMSessionInfoExPtrr7  N)rP   r\   r]   r  r   rm   rY   rY   rY   rZ   rz  p  r  rz  c                   @   s&   e Zd ZdZdefdefdeffZdS )RpcWaitForSessionStater   r  r  TimeoutNrP   r\   r]   r4  r   r   rm   rY   rY   rY   rZ   r|  y  rD  r|  c                   @   ro   )RpcWaitForSessionStateResponser7  Nr>  rY   rY   rY   rZ   r    rr   r  c                   @   r1  )RpcRegisterAsyncNotificationr>   r  MaskNr~  rY   rY   rY   rZ   r    r5  r  c                   @   r  )$RpcRegisterAsyncNotificationResponsephNotifyr7  NrP   r\   r]   NOTIFY_HANDLEr   rm   rY   rY   rY   rZ   r    r  r  c                   @   r9  )RpcWaitAsyncNotificationr=   hNotifyN)rP   r\   r]   r4  r   rm   rY   rY   rY   rZ   r    r<  r  c                   @   "   e Zd ZdefdefdeffZdS ) RpcWaitAsyncNotificationResponseSessionChangepEntriesr7  N)rP   r\   r]   r  r   rm   rY   rY   rY   rZ   r    r  r  c                   @   r9  )RpcUnRegisterAsyncNotificationrC   r  N)rP   r\   r]   r4  r  rm   rY   rY   rY   rZ   r    r<  r  c                   @   r  )&RpcUnRegisterAsyncNotificationResponser  r7  Nr  rY   rY   rY   rZ   r    r  r  c                   @   r9  )RpcOpenEnumr   re  Nrn  rY   rY   rY   rZ   r    r<  r  c                   @   r  )RpcOpenEnumResponsephEnumr7  NrP   r\   r]   ENUM_HANDLEr   rm   rY   rY   rY   rZ   r    r  r  c                   @   r9  )RpcCloseEnumr>   r  NrP   r\   r]   r4  r  rm   rY   rY   rY   rZ   r    r<  r  c                   @   r  )RpcCloseEnumResponser  r7  Nr  rY   rY   rY   rZ   r    r  r  c                   @   r?  )RpcFilterByStater=   hEnumr  bInvertN)rP   r\   r]   r4  r  r   r   rm   rY   rY   rY   rZ   r    rD  r  c                   @   ro   )RpcFilterByStateResponser7  Nr>  rY   rY   rY   rZ   r    rr   r  c                   @   r9  )RpcFilterByCallersNamerC   r  Nr  rY   rY   rY   rZ   r    r<  r  c                   @   ro   )RpcFilterByCallersNameResponser7  Nr>  rY   rY   rY   rZ   r    rr   r  c                   @   s    e Zd ZdZdefdeffZdS )RpcEnumAddFilterrD   r  hSubEnumNr  rY   rY   rY   rZ   r    r5  r  c                   @   ro   )RpcEnumAddFilterResponser7  Nr>  rY   rY   rY   rZ   r    rr   r  c                   @   r1  )RpcGetEnumResultrE   r  r  NrP   r\   r]   r4  r  r   rm   rY   rY   rY   rZ   r    r5  r  c                   @   r  )RpcGetEnumResultResponseppSessionEnumResultr  r7  NrP   r\   r]   r   r   rm   rY   rY   rY   rZ   r    r  r  c                   @   r1  )RpcFilterBySessionTyperF   r  rx  N)rP   r\   r]   r4  r  r&   rm   rY   rY   rY   rZ   r    r5  r  c                   @   ro   )RpcFilterBySessionTypeResponser7  Nr>  rY   rY   rY   rZ   r    rr   r  c                   @   r?  )RpcGetSessionIdsrG   r  Filter
MaxEntriesN)rP   r\   r]   r4  r  r  r   rm   rY   rY   rY   rZ   r  	  rD  r  c                   @   r  )RpcGetSessionIdsResponsepSessionIdspcSessionIdsr7  N)rP   r\   r]   r   r   rm   rY   rY   rY   rZ   r    r  r  c                   @   r1  )RpcGetEnumResultExr.   r  r  Nr  rY   rY   rY   rZ   r    r5  r  c                   @   r  )RpcGetEnumResultExResponser  r  r7  Nr  rY   rY   rY   rZ   r    r  r  c                   @   r9  )RpcGetAllSessionsrB   pLevelNrP   r\   r]   r4  r   rm   rY   rY   rY   rZ   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 )RpcGetAllSessionsResponser  ppSessionData	pcEntriesr7  N)rP   r\   r]   r   r  rm   rY   rY   rY   rZ   r  -  s    r  c                   @   r9  )RpcGetAllSessionsExrH   r  Nr  rY   rY   rY   rZ   r  7  r<  r  c                   @   ro   )RpcGetAllSessionsExResponser~   NrP   r\   r]   r   rm   rY   rY   rY   rZ   r  =  s    r  c                   @   r9  )RpcGetClientDatar   r  Nr  rY   rY   rY   rZ   r  E  r<  r  c                   @   r  )RpcGetClientDataResponseppBuffpOutBuffByteLenr7  N)rP   r\   r]   ru  r   rm   rY   rY   rY   rZ   r  K  r  r  c                   @   r9  )RpcGetConfigDatar>   r  Nr  rY   rY   rY   rZ   r  S  r<  r  c                   @   r  )RpcGetConfigDataResponser  r  r7  N)rP   r\   r]   r  r   rm   rY   rY   rY   rZ   r  Y  s
    r  c                   @   r1  )RpcGetProtocolStatusr=   r  InfoTypeN)rP   r\   r]   r4  r   r  rm   rY   rY   rY   rZ   r  b  r5  r  c                   @   r  )RpcGetProtocolStatusResponseppProtoStatuspcbProtoStatusr7  N)rP   r\   r]   r  r  r   rm   rY   rY   rY   rZ   r  i  r  r  c                   @   r9  )RpcGetLastInputTimerC   r  Nr  rY   rY   rY   rZ   r  q  r<  r  c                   @   r  )RpcGetLastInputTimeResponsepLastInputTimer7  Nrb  rY   rY   rY   rZ   r  w  r  r  c                   @   r9  )RpcGetRemoteAddressrD   r  Nr  rY   rY   rY   rZ   r  ~  r<  r  c                   @   r  )RpcGetRemoteAddressResponsepRemoteAddressr7  N)rP   r\   r]   r  r   rm   rY   rY   rY   rZ   r    r  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 )
RpcShadow2r   rB  eRequestControleRequestPermissioncchInvitationN)rP   r\   r]   r4  r   r  r  rm   rY   rY   rY   rZ   r        r  c                   @   r  )RpcShadow2ResponsepePermissionpszInvitationr7  N)rP   r\   r]   r  r   r   rm   rY   rY   rY   rZ   r    r  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 )	RpcShadowrE   szTargetServerNamerB  HotKeyVkHotkeyModifiersN)	rP   r\   r]   r4  r   r   r#   r    rm   rY   rY   rY   rZ   r    r  r  c                   @   ro   )RpcShadowResponser7  Nr>  rY   rY   rY   rZ   r    rr   r  c                   @   r  )RpcShadowTargeta  
    HRESULT RpcShadowTarget(
    [in] handle_t hBinding,
    [in] ULONG SessionId,
    [in, size_is(ConfigSize)] PBYTE pConfig,
    [in, range(0, 0x8000)] ULONG ConfigSize,
    [in, size_is(AddressSize)] PBYTE pAddress,
    [in, range(0, 0x1000)] ULONG AddressSize,
    [in, size_is(ModuleDataSize)] PBYTE pModuleData,
    [in, range(0, 0x1000)] ULONG ModuleDataSize,
    [in, size_is(ThinwireDataSize)]
    PBYTE pThinwireData,
    [in, range(0, 0x1000)] ULONG ThinwireDataSize,
    [in, string] WCHAR* szClientName
    );
    rF   NrP   r\   r]   r   r4  rY   rY   rY   rZ   r    s    r  c                   @   ro   )RpcShadowTargetResponser~   Nr  rY   rY   rY   rZ   r    rr   r  c                   @   r9  )RpcShadowStopr9   r  Nr  rY   rY   rY   rZ   r    r<  r  c                   @   ro   )RpcShadowStopResponser7  Nr>  rY   rY   rY   rZ   r    rr   r  c                   @   r9  )RpcGetAllListenersrG   r  N)rP   r\   r]   r4  r   rm   rY   rY   rY   rZ   r    r<  r  c                   @   r  )RpcGetAllListenersResponseppListenerspNumListenersr7  N)rP   r\   r]   r!  r   rm   rY   rY   rY   rZ   r    r  r  c                   @   r   )"RpcGetSessionProtocolLastInputTimer.   NrP   r\   r]   r4  rY   rY   rY   rZ   r        r  c                   @   ro   )*RpcGetSessionProtocolLastInputTimeResponserN   Nr  rY   rY   rY   rZ   r    rr   r  c                   @   r   )RpcGetUserCertificatesrB   Nr  rY   rY   rY   rZ   r    r  r  c                   @   ro   )RpcGetUserCertificatesResponserN   Nr  rY   rY   rY   rZ   r    rr   r  c                   @   r  )RpcQuerySessionDataa  
    HRESULT RpcQuerySessionData(
        [in] handle_t hBinding,
        [in] ULONG SessionId,
        [in] QUERY_SESSION_DATA_TYPE type,
        [in, unique, size_is(cbInputData )] byte* pbInputData,
        [in, range(0, 8192)] DWORD cbInputData,
        [out, ref, size_is(cbSessionData), length_is(*pcbReturnLength)] byte* pbSessionData,
        [in, range(0, 8192)] ULONG cbSessionData,
        [out, ref] ULONG* pcbReturnLength,
        [out, ref] ULONG* pcbRequireBufferSize
    );
    rH   Nr  rY   rY   rY   rZ   r    s    r  c                   @   ro   )RpcQuerySessionDataResponser~   Nr  rY   rY   rY   rZ   r    rr   r  c                   @   r9  )RpcOpenListenerr   szListenerNameN)rP   r\   r]   r4  r   rm   rY   rY   rY   rZ   r  !  r<  r  c                   @   r  )RpcOpenListenerResponse
phListenerr7  NrP   r\   r]   	HLISTENERr   rm   rY   rY   rY   rZ   r  '  r  r  c                   @   r9  )RpcCloseListenerr>   r  NrP   r\   r]   r4  r  rm   rY   rY   rY   rZ   r  .  r<  r  c                   @   r  )RpcCloseListenerResponser  r7  Nr  rY   rY   rY   rZ   r  4  r  r  c                   @   r9  )RpcStopListenerr=   r  Nr  rY   rY   rY   rZ   r  ;  r<  r  c                   @   ro   )RpcStopListenerResponser7  Nr>  rY   rY   rY   rZ   r  A  rr   r  c                   @   r9  )RpcStartListenerrC   r  Nr  rY   rY   rY   rZ   r  G  r<  r  c                   @   ro   )RpcStartListenerResponser7  Nr>  rY   rY   rY   rZ   r  M  rr   r  c                   @   r9  )RpcIsListeningrD   r  Nr  rY   rY   rY   rZ   r  S  r<  r  c                   @   r  )RpcIsListeningResponsepbIsListeningr7  N)rP   r\   r]   r   r   rm   rY   rY   rY   rZ   r  Y  r  r  c                   @   r9  )RpcWinStationOpenServerr   re  Nrn  rY   rY   rY   rZ   r  a  r<  r  c                   @   r  )RpcWinStationOpenServerResponsepResultphServerr7  N)rP   r\   r]   r  SERVER_HANDLEr   rm   rY   rY   rY   rZ   r  g  r  r  c                   @   r9  )RpcWinStationCloseServerr>   hServerNrP   r\   r]   r4  r  rm   rY   rY   rY   rZ   r  o  r<  r  c                   @   r  ) RpcWinStationCloseServerResponser  r7  NrP   r\   r]   r  r   rm   rY   rY   rY   rZ   r  u  r  r  c                   @   r9  )RpcIcaServerPingr=   r  Nr  rY   rY   rY   rZ   r   }  r<  r   c                   @   r  )RpcIcaServerPingResponser  r7  Nr  rY   rY   rY   rZ   r    r  r  c                   @   s6   e Zd ZdZdZdefdefdefdefdeffZdS )	RpcWinStationEnumeratea  
    BOOLEAN RpcWinStationEnumerate(
    [in] SERVER_HANDLE hServer,
    [out] DWORD* pResult,
    [in, out] PULONG pEntries,
    [in, out, unique, size_is(*pByteCount)]
    PCHAR pLogonId,
    [in, out] PULONG pByteCount,
    [in, out] PULONG pIndex
    );
    rC   r  r  pLogonId
pByteCountpIndexN)	rP   r\   r]   r   r4  r  r   r"   rm   rY   rY   rY   rZ   r    s    r  c                   @   ro   )RpcWinStationEnumerateResponser  Nr  rY   rY   rY   rZ   r    rr   r  c                   @   s.   e Zd ZdZdZdefdefddefdfZdS )	RpcWinStationRenameaH  
    BOOLEAN RpcWinStationRename(
        [in] SERVER_HANDLE hServer,
        [out] DWORD* pResult,
        [in, size_is(NameOldSize)] PWCHAR pWinStationNameOld,
        [in, range(0, 256)] DWORD NameOldSize,
        [in, size_is(NameNewSize)] PWCHAR pWinStationNameNew,
        [in, range(0, 256)] DWORD NameNewSize
    );
    rD   r  pWinStationNameOld)NameOldSizez"<L=len(pWinStationNameOld["Data"])pWinStationNameNew)NameNewSizez"<L=len(pWinStationNameNew["Data"])N)rP   r\   r]   r   r4  r  r`   rm   rY   rY   rY   rZ   r    s    
r  c                   @   r  )RpcWinStationRenameResponser  r7  Nr  rY   rY   rY   rZ   r    r  r  c                   @   s,   e Zd ZdZdZdefdefdefdfZdS )RpcWinStationQueryInformationa  
    BOOLEAN RpcWinStationQueryInformation(
        [in] SERVER_HANDLE hServer,
        [out] DWORD* pResult,
        [in] DWORD LogonId,
        [in] DWORD WinStationInformationClass,
        [in, out, unique, size_is(WinStationInformationLength)]
        PCHAR pWinStationInformation,
        [in, range(0, 0x8000)] DWORD WinStationInformationLength,
        [out] DWORD* pReturnLength
    );
    rE   r  LogonIdWinStationInformationClass)buffrc   NrP   r\   r]   r   r4  r  r   rm   rY   rY   rY   rZ   r    s    r  c                   @   ro   )%RpcWinStationQueryInformationResponser~   Nr  rY   rY   rY   rZ   r    rr   r  c                   @   r  )RpcWinStationSetInformationaM  
    BOOLEAN RpcWinStationSetInformation(
    [in] SERVER_HANDLE hServer,
    [out] DWORD* pResult,
    [in] DWORD LogonId,
    [in] DWORD WinStationInformationClass,
    [in, out, unique, size_is(WinStationInformationLength)]
    PCHAR pWinStationInformation,
    [in, range(0, 0x8000)] DWORD WinStationInformationLength
    );
    rF   Nr  rY   rY   rY   rZ   r    s    r  c                   @   ro   )#RpcWinStationSetInformationResponser~   Nr  rY   rY   rY   rZ   r    rr   r  c                
   @   sB   e Zd ZdZdefdefdefddefddefd	efd
eff	ZdS )RpcWinStationSendMessager9   r  r  pTitle)TitleLengthz<L=len(pTitle["Data"])pMessage)MessageLengthz<L=len(pMessage["Data"])Styler}  	DoNotWaitN	rP   r\   r]   r4  r  r   r`   r   rm   rY   rY   rY   rZ   r    s    r  c                   @   r  ) RpcWinStationSendMessageResponser  	pResponser7  NrP   r\   r]   r  r   r   rm   rY   rY   rY   rZ   r  	  r  r  c                   @   "   e Zd ZdZdefdefdfZdS )RpcLogonIdFromWinStationNamerG   r  pWinStationName)NameSizez<L=len(pWinStationName["Data"])N)rP   r\   r]   r4  r  r`   rm   rY   rY   rY   rZ   r!  		      r!  c                   @   r  )$RpcLogonIdFromWinStationNameResponser  r  r7  Nr  rY   rY   rY   rZ   r%  	  r  r%  c                   @   s4   e Zd ZdZdefdefdefdded  ffZdS )	RpcWinStationNameFromLogonIdr.   r  LoginIdr"  r#  z<L=%dr>   N)	rP   r\   r]   r4  r  r   r`   r^  rm   rY   rY   rY   rZ   r&  	  s    r&  c                   @   r  )$RpcWinStationNameFromLogonIdResponser  r"  r7  N)rP   r\   r]   r  r   r   rm   rY   rY   rY   rZ   r(  "	  r  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deffZd	S )
RpcWinStationConnectrB   r  ClientLogonIdConnectLogonIdTargetLogonId	pPasswordPasswordSizez<L=len(pPassword["Data"])WaitNr  rY   rY   rY   rZ   r)  *	  s    r)  c                   @   r  )RpcWinStationConnectResponser  r7  Nr  rY   rY   rY   rZ   r1  6	  r  r1  c                   @   s.   e Zd ZdZdefdefdefdefdfZdS )RpcWinStationVirtualOpenrH   r  r  PidpVirtualName)r#  z<L=len(pVirtualName["Data"])N)rP   r\   r]   r4  r  r   rs   rm   rY   rY   rY   rZ   r2  =	  s    r2  c                   @   r  ) RpcWinStationVirtualOpenResponser  r  r7  NrP   r\   r]   r  r   r   rm   rY   rY   rY   rZ   r5  F	  r  r5  c                   @   &   e Zd ZdZdefdefdeffZdS )RpcWinStationBeepOpenr/   r  r  r3  NrP   r\   r]   r4  r  r   rm   rY   rY   rY   rZ   r8  N	  rD  r8  c                   @   r  )RpcWinStationBeepOpenResponser  r  r7  Nr6  rY   rY   rY   rZ   r:  U	  r  r:  c                   @   r?  )RpcWinStationDisconnectr5  r  r'  bWaitNrP   r\   r]   r4  r  r   r   rm   rY   rY   rY   rZ   r;  \	  rD  r;  c                   @   r  )RpcWinStationDisconnectResponser  r7  Nr  rY   rY   rY   rZ   r>  d	  r  r>  c                   @   r?  )RpcWinStationResetr5   r  r  r<  Nr=  rY   rY   rY   rZ   r?  j	  rD  r?  c                   @   r  )RpcWinStationResetResponser  r7  Nr  rY   rY   rY   rZ   r@  r	  r  r@  c                   @   r7  )RpcWinStationShutdownSystemr7  r  r*  r  Nr9  rY   rY   rY   rZ   rA  x	  rD  rA  c                   @   r  )#RpcWinStationShutdownSystemResponser  r7  Nr  rY   rY   rY   rZ   rB  	  r  rB  c                   @   r1  )RpcWinStationWaitSystemEventr8   r  	EventMaskNr9  rY   rY   rY   rZ   rC  	  r5  rC  c                   @   r  )$RpcWinStationWaitSystemEventResponser  pEventFlagsr7  Nr  rY   rY   rY   rZ   rE  	  r  rE  c                   @   s:   e Zd ZdZdefdefdefddefdefdeffZ	d	S )
RpcWinStationShadowr4   r  r  pTargetServerName)r#  z!<L=len(pTargetServerName["Data"])r,  r  r  N)
rP   r\   r]   r4  r  r   rp   r#   r    rm   rY   rY   rY   rZ   rG  	  s    rG  c                   @   r  )RpcWinStationShadowResponser  r7  Nr  rY   rY   rY   rZ   rI  	  r  rI  c                   @   r1  )RpcWinStationShadowTargetSetupr   r  r  Nr9  rY   rY   rY   rZ   rJ  	  r5  rJ  c                   @   r  )&RpcWinStationShadowTargetSetupResponser  r7  Nr  rY   rY   rY   rZ   rK  	  r  rK  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d	efd
efdefdefdeffZdS )RpcWinStationShadowTargetr6  r  r  pConfig
ConfigSizepAddressAddressSizepModuleDataModuleDataSizepThinwireDataThinwireDataSizepClientNameClientNameSizeN)	rP   r\   r]   r4  r  r   r$   r   rm   rY   rY   rY   rZ   rL  	  s     rL  c                   @   r  )!RpcWinStationShadowTargetResponser  r7  Nr  rY   rY   rY   rZ   rW  	  r  rW  c                   @   r   )RpcWinStationSetPoolCountr:  r  pLicense)LicenseSizez<L=len(pLicense["Data"])N)rP   r\   r]   r4  r  rs   rm   rY   rY   rY   rZ   rX  	  r$  rX  c                   @   r  )!RpcWinStationSetPoolCountResponser  r7  Nr  rY   rY   rY   rZ   r[  	  r  r[  c                   @   r9  ) RpcWinStationQueryUpdateRequiredrn  r  Nr  rY   rY   rY   rZ   r\  	  r<  r\  c                   @   r  )(RpcWinStationQueryUpdateRequiredResponser  pUpdateFlagr7  Nr  rY   rY   rY   rZ   r]  	  r  r]  c                   @   s*   e Zd ZdZ	 defdefdefdfZdS )RpcWinStationCallbackr<  r  r  pPhoneNumber)PhoneNumberSizez<L=len(pPhoneNumber["Data"])N)rP   r\   r]   r4  r  r   r`   rm   rY   rY   rY   rZ   r_  	  s    r_  c                   @   r  )RpcWinStationCallbackResponser  r7  Nr  rY   rY   rY   rZ   rb  
  r  rb  c                   @   r?  )RpcWinStationBreakPointr;  r  r  
KernelFlagNr=  rY   rY   rY   rZ   rc  
  rD  rc  c                   @   r  )RpcWinStationBreakPointResponser  r7  Nr  rY   rY   rY   rZ   re  
  r  re  c                   @   r9  )RpcWinStationReadRegistryr:   r  Nr  rY   rY   rY   rZ   rf  &
  r<  rf  c                   @   r  )!RpcWinStationReadRegistryResponser  r7  Nr  rY   rY   rY   rZ   rg  ,
  r  rg  c                   @   r7  )RpcWinStationWaitForConnectro  r  r*  ClientProcessIdNr9  rY   rY   rY   rZ   rh  3
  rD  rh  c                   @   r  )#RpcWinStationWaitForConnectResponser  r7  Nr  rY   rY   rY   rZ   rj  ;
  r  rj  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d	efd
defddefde	fddeffZ
dS )RpcWinStationNotifyLogonr;   r  r*  ri  fUserIsAdmin	UserTokenpDomain)
DomainSizez<L=len(pDomain["Data"])	pUserName)UserNameSizez<L=len(pUserName["Data"])r-  r.  SeedpUserConfig)rN  z<L=len(pUserConfig["Data"])pfIsRedirectedN)rP   r\   r]   r4  r  r   r   r`   r!   rs   rm   rY   rY   rY   rZ   rk  B
  s$    rk  c                   @   r  ) RpcWinStationNotifyLogonResponser  rt  r7  Nr  rY   rY   rY   rZ   ru  V
  r  ru  c                   @   r7  )RpcWinStationNotifyLogoffr   r  r*  ri  Nr9  rY   rY   rY   rZ   rv  _
  rD  rv  c                   @   r  )!RpcWinStationNotifyLogoffResponser  r7  Nr  rY   rY   rY   rZ   rw  g
  r  rw  c                   @   r1  )"OldRpcWinStationEnumerateProcessesrp  r  	ByteCountNr9  rY   rY   rY   rZ   rx  n
  r5  rx  c                   @   r  )*OldRpcWinStationEnumerateProcessesResponser  pProcessBufferr7  NrP   r\   r]   r  rs   r   rm   rY   rY   rY   rZ   rz  u
  r  rz  c                   @   r1  )RpcWinStationAnnoyancePopuprq  r  	LogonIdldNr9  rY   rY   rY   rZ   r}  }
  r5  r}  c                   @   r  )#RpcWinStationAnnoyancePopupResponser  r7  r  NrP   r\   r]   r  r   r   rm   rY   rY   rY   rZ   r  
  r  r  c                   @   r1  )RpcWinStationEnumerateProcessesrr  r  ry  Nr9  rY   rY   rY   rZ   r  
  r5  r  c                   @   r  )'RpcWinStationEnumerateProcessesResponser  r{  r7  Nr|  rY   rY   rY   rZ   r  
  r  r  c                   @   r7  )RpcWinStationTerminateProcessrs  r  	ProcessIdExitCodeNr9  rY   rY   rY   rZ   r  
  rD  r  c                   @   r  )%RpcWinStationTerminateProcessResponser  r7  Nr  rY   rY   rY   rZ   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 )	RpcWinStationNtsdDebug*   r  r  r  DbgProcessIdDbgThreadIdAttachCompletionRoutineN)
rP   r\   r]   r4  r  r   r   r   r   rm   rY   rY   rY   rZ   r  
  rZ  r  c                   @   r  )RpcWinStationNtsdDebugResponser  r7  Nr  rY   rY   rY   rZ   r  
  r  r  c                   @   r?  )RpcWinStationGetAllProcesses+   r  r  pNumberOfProcessesN)rP   r\   r]   r4  r  r   BOUNDED_ULONGrm   rY   rY   rY   rZ   r  
  rD  r  c                   @   (   e Zd ZdefdefdefdeffZdS )$RpcWinStationGetAllProcessesResponser  r  ppTsAllProcessesInfor7  N)rP   r\   r]   r  r  r.  r   rm   rY   rY   rY   rZ   r  
  rc  r  c                   @   s4   e Zd ZdZdefdefdefdefddeffZdS )	RpcWinStationGetProcessSid,   r  dwUniqueProcessIdProcessStartTimepProcessUserSid)	dwSidSizez<L=len(pProcessUserSid["Data"])pdwSizeNeededN)	rP   r\   r]   r4  r  r   r   TS_PBYTErm   rY   rY   rY   rZ   r  
  s    r  c                   @   r  )"RpcWinStationGetProcessSidResponser  r  r  r7  N)rP   r\   r]   r  r  r   r   rm   rY   rY   rY   rZ   r  
  rc  r  c                   @   s*   e Zd ZdZdZdefdefdeffZdS )$RpcWinStationGetTermSrvCountersValuez
    BOOLEAN RpcWinStationGetTermSrvCountersValue(
        [in] SERVER_HANDLE hServer,
        [out] DWORD* pResult,
        [in, range(0, 0x1000)] DWORD dwEntries,
        [in, out, size_is(dwEntries)] PTS_COUNTER pCounter
    );
    -   r  	dwEntriesrh  N)	rP   r\   r]   r   r4  r  r   r~  rm   rY   rY   rY   rZ   r  
      r  c                   @   r  ),RpcWinStationGetTermSrvCountersValueResponser  rh  r7  N)rP   r\   r]   r  r~  r   rm   rY   rY   rY   rZ   r  
  r  r  c                   @   r9  )!RpcWinStationReInitializeSecurity.   r  Nr  rY   rY   rY   rZ   r  
  r<  r  c                   @   r  ))RpcWinStationReInitializeSecurityResponser  r7  Nr  rY   rY   rY   rZ   r  
  r  r  c                   @   s,   e Zd ZdZdZdefddefdeffZdS )RpcWinStationGetLanAdapterNameaa  
    BOOLEAN RpcWinStationGetLanAdapterName(
        [in] SERVER_HANDLE hServer,
        [out] DWORD* pResult,
        [in, range(0, 0x1000)] DWORD PdNameSize,
        [in, size_is(PdNameSize)] PWCHAR pPdName,
        [in, range(0, 1024)] ULONG LanAdapter,
        [out] ULONG* pLength,
        [out, size_is(,*pLength)] PWCHAR* ppLanAdapter
    );
    5   r  )
PdNameSizez<L=len(pPdName["Data"])pPdName
LanAdapterN)	rP   r\   r]   r   r4  r  r`   r   rm   rY   rY   rY   rZ   r  /  s    r  c                   @   r  )&RpcWinStationGetLanAdapterNameResponser  ppLanAdapterr7  N)rP   r\   r]   r  r`   r   rm   rY   rY   rY   rZ   r  C  r  r  c                   @   *   e Zd ZdZdZdefdefdeffZdS )"RpcWinStationQueryLogonCredentialsz
    BOOLEAN RpcWinStationQueryLogonCredentials(
        [in] SERVER_HANDLE hServer,
        [in] ULONG LogonId,
        [out, size_is(,*pcbCredentials)]
        PCHAR* ppCredentials,
        [in, out] ULONG* pcbCredentials
    );
    7   r  r  pcbCredentialsN)rP   r\   r]   r   r4  r  r   rm   rY   rY   rY   rZ   r  U  s    	r  c                   @   ro   )*RpcWinStationQueryLogonCredentialsResponser  Nr  rY   rY   rY   rZ   r  f  rr   r  c                   @   r  )RpcWinStationUpdateSettingsz
    BOOLEAN RpcWinStationUnRegisterConsoleNotification(
        [in] SERVER_HANDLE hServer,
        [out] DWORD* pResult,
        [in] ULONG SessionId,
        [in] ULONG hWnd
    );
    :   r  SettingsClassSettingsParametersNr  rY   rY   rY   rZ   r    r  r  c                   @   ro   )#RpcWinStationUpdateSettingsResponser  Nr  rY   rY   rY   rZ   r    rr   r  c                   @   r?  )RpcWinStationShadowStop;   r  r  r<  Nr=  rY   rY   rY   rZ   r    rD  r  c                   @   r  )RpcWinStationShadowStopResponser  r7  Nr  rY   rY   rY   rZ   r    r  r  c                   @   r9  )RpcWinStationCloseServerExr@   r  Nr  rY   rY   rY   rZ   r    r<  r  c                   @   r  )"RpcWinStationCloseServerExResponser  r  r7  N)rP   r\   r]   r  r  r   rm   rY   rY   rY   rZ   r    r  r  c                   @   r1  )#RpcWinStationIsHelpAssistantSession=   r  r  N)rP   r\   r]   r4  r  r   rm   rY   rY   rY   rZ   r    r5  r  c                   @   r  )+RpcWinStationIsHelpAssistantSessionResponser  r7  Nr  rY   rY   rY   rZ   r    r  r  c                   @   s2   e Zd ZdZdZdefdefdefdefdfZ	dS )	RpcConnectCallbacka  
    BOOLEAN RpcConnectCallback(
        [in] SERVER_HANDLE hServer,
        [out] DWORD* pResult,
        [in] DWORD TimeOut,
        [in] ULONG AddressType,
        [in, size_is(AddressSize)] PBYTE pAddress,
        [in, range(0, 0x1000 )] ULONG AddressSize
    );
    r  r  TimeOutAddressTyperO  )rP  z<L=len(pAddress["Data"])N)
rP   r\   r]   r   r4  r  r   r   r  rm   rY   rY   rY   rZ   r    s    
r  c                   @   r  )RpcConnectCallbackResponser  r7  outNr  rY   rY   rY   rZ   r    r  r  c                   @   r1  )!RpcWinStationOpenSessionDirectoryK   r  pszServerNameN)rP   r\   r]   r4  r  r   rm   rY   rY   rY   rZ   r  .  r5  r  c                   @   r  ))RpcWinStationOpenSessionDirectoryResponser  r7  Nr  rY   rY   rY   rZ   r  5  r  r  c                 C   s   t  }||d< | |d S )Nr  r3  )r2  requestdcer  r  rY   rY   rZ   hRpcOpenSessionB     r  c                 C      t  }||d< | |S )Nr3  )r:  r  )r  r3  r  rY   rY   rZ   hRpcCloseSessionH     
r  c              
   C   s   |d u rd}t  }||d< ||d< |d |d< z| |W S  ty? } z|jdkr9t }d|d< |W  Y d }~S |d }~ww )	NrK   rA  rB  r   rC  r>   r   r7  )r@  r  r   r   rE  )r  rA  rB  rV  r  eresprY   rY   rZ   hRpcConnectN  s    
r  c                 C   r  NrA  )rF  r  r  rA  r  rY   rY   rZ   hRpcDisconnect_  r  r  c              
   C   s`   t  }||d< z| |W S  ty/ } z|jdkr)t }d|d< |W  Y d }~S |d }~ww )NrA  i   r   r7  )rH  r  r   r   rI  )r  rA  r  r  r  rY   rY   rZ   
hRpcLogoffe  s   
r  c                 C   r  r  )rJ  r  r  rY   rY   rZ   hRpcGetUserNamet  r  r  c                 C   r  r  )rM  r  r  rY   rY   rZ   hRpcGetTerminalNamez  r  r  c                 C   r  r  )rO  r  r  rY   rY   rZ   hRpcGetState  r  r  c                 C   r  r  )rR  r  r  rY   rY   rZ   hRpcIsSessionDesktopLocked  r  r  Tc                 C   sh   |d ur|nd}|d ur|nd}t  }||d< |d |d< |d |d< ||d< ||d< ||d	< | |S )
NrL   rK   rA  r   rU  rV  rW  rX  rY  )rT  r  )r  rA  TitleMessager  r}  r  r  rY   rY   rZ   hRpcShowMessageBox  s   
r  c                 C   r  r  )r]  r  r  rY   rY   rZ   hRpcGetTimes  r  r  c                 C   r  )Nrf  )rd  r  )r  Entriesr  rY   rY   rZ   hRpcGetSessionCounters  r  r  c                 C   r  Nr  )ri  r  r  rY   rY   rZ   hRpcGetSessionInformation  r  r  c                 C   s   t  }| |S r   )rr  r  r  r  rY   rY   rZ   hRpcGetLoggedOnCount  s   
r  c                 C   r  r  )rv  r  r  rY   rY   rZ   hRpcGetSessionType  r  r  c                 C   s    t  }||d< d|d< | |S )Nr  r>   r  )ry  r  r  rY   rY   rZ   hRpcGetSessionInformationEx     
r  c                 C   s(   t  }||d< ||d< ||d< | |S )Nr  r  r}  )r|  r  )r  r  r  r}  r  rY   rY   rZ   hRpcWaitForSessionState  s
   
r  c                 C   s$   t  }||d< ||d< | |d S )Nr  r  r  )r  r  )r  r  r  r  rY   rY   rZ   hRpcRegisterAsyncNotification     r  c                 C   r  Nr  )r  r  r  r  r  rY   rY   rZ   hRpcWaitAsyncNotification  r  r  c                 C   r  r  )r  r  r  rY   rY   rZ   hRpcUnRegisterAsyncNotification  r  r  c                 C   s   t  }| |d S Nr  )r  r  r  rY   rY   rZ   hRpcOpenEnum  s   r  c                 C   r  r  )r  r  )r  r  r  rY   rY   rZ   hRpcCloseEnum  r  r  c                 C       t  }||d< ||d< | |S Nr  r  )r  r  r  r  r  r  rY   rY   rZ   hRpcGetEnumResult  r  r  c                 C   r  r  )r  r  r  rY   rY   rZ   hRpcGetEnumResultEx	  r  r  c                 C   r  )Nr  )r  r  )r  r  r  rY   rY   rZ   hRpcGetAllSessions  r  r  c                 C   (   t  }||d< z| |W S    Y d S r  )r  r  r  rY   rY   rZ   hRpcGetClientData     r  c                 C   r  r  )r  r  r  rY   rY   rZ   hRpcGetConfigData#  r  r  c                 C   r  r  )r  r  r  rY   rY   rZ   hRpcGetLastInputTime+  r  r  c                 C   r  r  )r  r  r  rY   rY   rZ   hRpcGetRemoteAddress1  r  r  c                 C   s   t  }d|d< | |S )Nr>   r  )r  r  r  rY   rY   rZ   hRpcGetAllListeners:  r  r  c                 C   s    t  }|d |d< | |d S )Nr   r  r  )r  r  )r  ListenerNamer  rY   rY   rZ   hRpcOpenListenerE  s   r  c                 C   r  Nr  )r  r  r  r  r  rY   rY   rZ   hRpcCloseListenerK  r  r  c                 C   r  r   )r  r  r  rY   rY   rZ   hRpcStopListenerQ  r  r  c                 C   r  r   )r  r  r  rY   rY   rZ   hRpcStartListenerW  r  r  c                 C   r  r   )r  r  r  rY   rY   rZ   hRpcIsListening]  r  r  c                 C   s(   t  }| j|dd}|d r|d S d S )NF
checkErrorr7  r  )r  r  )r  r  r  rY   rY   rZ   hRpcWinStationOpenServeri  s
   r  c                 C      t  }||d< | j|ddS Nr  Fr  )r  r  r  r  r  rY   rY   rZ   hRpcWinStationCloseServerq  r  r  c                 C   r	  r
  )r   r  r  rY   rY   rZ   hRpcIcaServerPingw  r  r  c                 C   sH   t  }||d< ||d< t|d|d< t|d|d< ||d< | j|ddS )	Nr  r  rA   r  r  r  Fr  )r  r   r  )r  r  r  r  r  r  r  rY   rY   rZ   hRpcWinStationSendMessage~  s   r  c                 C   s.   t  }||d< t|td |d< | j|ddS )Nr  r>   r"  Fr  )r!  r   r^  r  )r  r  WinStationNamer  rY   rY   rZ   hRpcLogonIdFromWinStationName  s   r  c                 C   s6   t  }||d< ||d< tdtd |d< | j|ddS )Nr  r'  rK   r>   r"  Fr  )r&  r   r^  r  )r  r  r'  r  rY   rY   rZ   hRpcWinStationNameFromLogonId  s
   r  Fc                 C   sH   t  }||d< ||d< ||d< ||d< |d |d< ||d< | j|dd	S )
Nr  r*  r+  r,  r   r-  r0  Fr  )r)  r  )r  r  r*  r+  r,  rV  r0  r  rY   rY   rZ   hRpcWinStationConnect  s   	r  c                 C   ,   t  }||d< ||d< ||d< | j|ddS )Nr  r'  r<  Fr  )r;  r  )r  r  r'  r<  r  rY   rY   rZ   hRpcWinStationDisconnect  
   r  c                 C   r  Nr  r  r<  Fr  )r?  r  r  r  r  r<  r  rY   rY   rZ   hRpcWinStationReset  r  r  c                 C   r  )Nr  r*  r  Fr  )rA  r  )r  r  r*  r  r  rY   rY   rZ   hRpcWinStationShutdownSystem  r  r  c                 C   $   t  }||d< ||d< | j|ddS )Nr  rD  Fr  )rC  r  )r  r  rD  r  rY   rY   rZ   hRpcWinStationWaitSystemEvent  r  r  c                 C   sD   t  }||d< ||d< ||d< ||d< ||d< ||d< | j|ddS )	Nr  r  rH  r,  r  r  Fr  )rG  r  )r  r  r  rH  r,  r  r  r  rY   rY   rZ   hRpcWinStationShadow  s   r  c                 C   r  )Nr  r  Fr  )rJ  r  )r  r  r  r  rY   rY   rZ   hRpcWinStationShadowTargetSetup  r  r  c                 C   r  )Nr  r  rd  Fr  )rc  r  )r  r  r  rd  r  rY   rY   rZ   hRpcWinStationBreakPoint  r  r  c                 C   r	  r
  )rf  r  r  rY   rY   rZ   hRpcWinStationReadRegistry  r  r  c                 C   r  Nr  ry  Fr  )rx  r  r  r  ry  r  rY   rY   rZ   #hOldRpcWinStationEnumerateProcesses  r  r"  c                 C   r  r   )r  r  r!  rY   rY   rZ    hRpcWinStationEnumerateProcesses  r  r#  c                 C   r  )Nr  r  r  Fr  )r  r  )r  r  r  r  r  rY   rY   rZ   hRpcWinStationTerminateProcess  r  r$  c                 C   sV   t  }||d< d|d< d|d< | j|dd}|d s!t|d	 d
|d s'g S |d S )Nr  r   r  i   r  Fr  r7  r  )r   r  )r  r  r   )r  r  r  r  rY   rY   rZ   hRpcWinStationGetAllProcesses  s   r%  c                 C   s   t  }||d< ||d< ||d< d|d< | j|dd}|d tjkr6|d	 }d
| |d< ||d< | j|dd}|d r@t|d S d S )Nr  r  r  s                               r  Fr  r  r      r  r7  )r  r  r  r
  r   )r  r  r  r  r  r  
sizeNeededrY   rY   rZ   hRpcWinStationGetProcessSid  s   r(  c                 C   r	  r
  )r  r  r  rY   rY   rZ   "hRpcWinStationReInitializeSecurity"  r  r)  c                 C   ,   t  }||d< ||d< ||d< | j|ddS )Nr  r  r  Fr  )r  r  )r  r  r  r  r  rY   rY   rZ   hRpcWinStationGetLanAdapterName(  r  r+  c                 C   r*  )Nr  r  r  Fr  )r  r  )r  r  r  r  r  rY   rY   rZ   hRpcWinStationUpdateSettings0  r  r,  c                 C   r  r  r  r  r  rY   rY   rZ   hRpcWinStationShadowStop9  r  r.  c                 C   r	  r
  r-  r  rY   rY   rZ   hRpcWinStationCloseServerExA  r  r/  c                 C   r  )Nr  r  Fr  r-  )r  r  r  r  rY   rY   rZ   $hRpcWinStationIsHelpAssistantSessionG  r  r0  c                 C   r  )Nr  r  Fr  r-  )r  r  r  r  rY   rY   rZ   "hRpcWinStationOpenSessionDirectoryV  r  r1      c                 C   s4   t  }||d< ||d< ||d< ||d< | j|ddS )NrB  r  r  r  Fr  )r  r  )r  rB  r  r  r  r  rY   rY   rZ   hRpcShadow2]  s   r3  c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TSTSEndpointc                 C   s:   || _ || _||| _|| _|| _|   | jj| _d S r   )	_TSTSEndpoint__doKerberos
_target_ipr   _stringbinding	_endpoint_smbconnection_bind_dcer  )rV   smb	target_ipstringbindingendpointkerberosrY   rY   rZ   r   j  s   zTSTSEndpoint.__init__c                 C   sd   t | j| _| j| j | j | _| jr| j	t
 | jt | j  | j| j | jS r   )r   DCERPCTransportFactoryr7  _rpctransportset_smb_connectionr9  get_dce_rpcr;  r5  set_auth_typer+   set_auth_levelr,   connectbindr8  r   rY   rY   rZ   r:  t  s   
zTSTSEndpoint._bindc                 C   s   | j   d S r   )r;  
disconnectr   rY   rY   rZ   _disconnect  r   zTSTSEndpoint._disconnectc                 C   s   | S r   rY   r   rY   rY   rZ   	__enter__  s   zTSTSEndpoint.__enter__c                 C   s   |    d S r   )rJ  )rV   typer   	tracebackrY   rY   rZ   __exit__  r   zTSTSEndpoint.__exit__N)rP   r\   r]   r   r:  rJ  rK  rN  rY   rY   rY   rZ   r4  i  s    
r4  c                       s\   e Zd Z fddZeZeZeZeZeZe	Z	e
Z
eZeZeZeZeZeZeZeZeZ  ZS )TermSrvSessionc                       t  j||dt|d d S Nz"ncacn_np:{}[\pipe\LSM_API_service]r>  r?  r@  )r   r   TermSrvSession_UUIDrV   r<  r=  r@  r   rY   rZ   r     
   

zTermSrvSession.__init__)rP   r\   r]   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   rY   rY   r   rZ   rO    s$    rO  c                       s,   e Zd Z fddZeZeZeZeZ  ZS )TermSrvNotificationc                    rP  rQ  )r   r   TermSrvNotification_UUIDrT  r   rY   rZ   r     rU  zTermSrvNotification.__init__)	rP   r\   r]   r   r  r  r  r  r   rY   rY   r   rZ   rV    s    rV  c                       0   e Zd Z fddZeZeZeZeZeZ  Z	S )TermSrvEnumerationc                    rP  rQ  )r   r   TermSrvEnumeration_UUIDrT  r   rY   rZ   r     rU  zTermSrvEnumeration.__init__)
rP   r\   r]   r   r  r  r  r  r  r   rY   rY   r   rZ   rY        rY  c                       rX  )	RCMPublicc                    rP  Nz&ncacn_np:{}[\pipe\TermSrv_API_service]rR  )r   r   RCMPublic_UUIDrT  r   rY   rZ   r     rU  zRCMPublic.__init__)
rP   r\   r]   r   r  r  r  r  r  r   rY   rY   r   rZ   r\    r[  r\  c                       rX  )RcmListenerc                    rP  r]  )r   r   RcmListener_UUIDrT  r   rY   rZ   r     rU  zRcmListener.__init__)
rP   r\   r]   r   r  r  r  r  r  r   rY   rY   r   rZ   r_    r[  r_  c                       s    e Zd Z fddZeZ  ZS )SessEnvPublicRpcc                    rP  )Nz#ncacn_np:{}[\pipe\SessEnvPublicRpc]rR  )r   r   SessEnvPublicRpc_UUIDrT  r   rY   rZ   r     rU  zSessEnvPublicRpc.__init__)rP   r\   r]   r   r3  r   rY   rY   r   rZ   ra    s    ra  c                       s   e Zd Z fddZeZeZeZeZeZe	Z	e
Z
eZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZ  ZS )	LegacyAPIc                    rP  )Nz-ncacn_np:{}[\pipe\Ctx_WinStation_API_service]rR  )r   r   LegacyAPI_UUIDrT  r   rY   rZ   r     rU  zLegacyAPI.__init__)rP   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/  r0  r   rY   rY   r   rZ   rc    s8    rc  r   )r   r   T)r>   )T)Fr   )r2  (  structr   r   impacket.dcerpc.v5r   impacket.uuidr   r   r   impacket.dcerpc.v5.ndrr   r	   r
   r   r   r   r   r   r   impacket.dcerpc.v5.dtypesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r   impacketr(   impacket.dcerpc.v5.enumr)   impacket.dcerpc.v5.rpcrtr*   r+   r,   rS  rW  rZ  r^  r`  rb  rd  r   WDPREFIX_LENGTHSTACK_ADDRESS_LENGTHr   r   r   r   r   r   NASISPECIFICNAME_LENGTHNASIUSERNAME_LENGTHNASIPASSWORD_LENGTHNASISESSIONNAME_LENGTHr   rk  r   r   r   r   r   r   MAX_COUNTER_EXTENSIONSr^  PROTOCOL_CONSOLEPROTOCOL_ICAPROTOCOL_TSHAREPROTOCOL_RDPPDNAME_LENGTHWDNAME_LENGTHCDNAME_LENGTHrh  MODEMNAME_LENGTHr   rc  r   MAX_LICENSE_SERVER_LENGTHLOGONID_CURRENTMAX_PDCONFIGTERMSRV_TOTAL_SESSIONSTERMSRV_DISC_SESSIONSTERMSRV_RECON_SESSIONSTERMSRV_CURRENT_ACTIVE_SESSIONSTERMSRV_CURRENT_DISC_SESSIONSTERMSRV_PENDING_SESSIONSTERMSRV_SUCC_TOTAL_LOGONSTERMSRV_SUCC_LOCAL_LOGONSTERMSRV_SUCC_REMOTE_LOGONSTERMSRV_SUCC_SESSION0_LOGONS$TERMSRV_CURRENT_TERMINATING_SESSIONS!TERMSRV_CURRENT_LOGGEDON_SESSIONSNO_FALLBACK_DRIVERSFALLBACK_BESTGUESSFALLBACK_PCLFALLBACK_PSFALLBACK_PCLANDPSVIRTUALCHANNELNAME_LENGTHWINSTATION_QUERYWINSTATION_SETWINSTATION_RESETWINSTATION_VIRTUALWINSTATION_SHADOWWINSTATION_LOGONWINSTATION_LOGOFFWINSTATION_MSGWINSTATION_CONNECTWINSTATION_DISCONNECT_NDRENUMr`   rp   rs   ru   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  r8  r
  r  r   r&  r3  r]  r`  rf  rg  ri  rj  rl  rm  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   SessionInfo_ExPSESSIONENUM_EXr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r+  r4  r<  ru  rv  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/  r0  r2  r6  r:  r=  r@  rE  rF  rG  rH  rI  rJ  rK  rM  rN  rO  rP  rR  rS  rT  r[  r]  r^  rd  rg  ri  rk  rm  ro  rp  rq  rr  rs  rv  rw  ry  rz  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  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r!  r%  r&  r(  r)  r1  r2  r5  r8  r:  r;  r>  r?  r@  rA  rB  rC  rE  rG  rI  rJ  rK  rL  rW  rX  r[  r\  r]  r_  rb  rc  re  rf  rg  rh  rj  rk  ru  rv  rw  rx  rz  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  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/  r0  r1  r3  r4  rO  rV  rY  r\  r_  ra  rc  rY   rY   rY   rZ   <module>   s  ,d	#
'-		
		E	

X	 
			
						#		
			
		
			