HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.109.1.lve.el8.x86_64 #1 SMP Thu Mar 5 20:23:46 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.30
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/platform/__pycache__/win.cpython-310.pyc
o

�N�g���@s�dZddlZddlZddlZddlZddlmZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZe�
e�Ze�d�Ze�d�Zejddd�Zejd	dd�Zejd
dd�ZdZdZdZd
Ze	je	jBe	jBe	jBe	jBe	jBe	j Be	j!Be	j"Be	j#Be	j$Be	j%Be	j&BZ'e	j(e	j)Be	j*Be	j+Be	j,Be	j-Be	j.Be	j/Be	j0Be	j#Be	j$Be	j%Be	j&BZ1dZ2ej3Z4dZ5dZ6dZ7dZ8ej3Z9ej3Z:dZ;dZ<dZ=dZ>dZ?dZ@dZAdZBdZCdZDdZEdZFdZGdZHdZIdZJdZ#dZ$dZ%dZ&e#e$Be%Be&BZKd
ZLdZMdZNdZOdZPdZQd ZRd!ZSd"ZTeKeLBeMBeNBeOBePBeQBeRBeSBeTBZUd
ZVdZWej3ZXd
ZYdZZej3Z[dZ\d
Z]dZ^dZ_Gd#d$�d$ej`�Zae�bea�ZcGd%d&�d&ejd�ZdGd'd(�d(eje�ZeGd)d*�d*ejf�ZfejgZhejiZje�beh�Zke�bej�ZlGd+d,�d,ejm�Zne�ben�ZoGd-d.�d.ejm�Zpe�bep�ZqGd/d0�d0ejm�Zre�ber�ZsejtZuGd1d2�d2ejm�Zve�bev�ZwGd3d4�d4ejm�Zxe�bex�ZyGd5d6�d6ejm�Zze�bez�Z{ezd7�Z|e�}�Z~e~�d8e����Z�ej�Z�Gd9d:�d:ejm�Z�e�be��Z�e�bej3�Z�ej3Z�e�Z�e�beje�Z�e�bejt�Z�e�bej��Z�Gd;d<�d<ejm�Z�Gd=d>�d>e��Z�Gd?d@�d@e��Z�GdAdB�dBe��Z�GdCdD�dDe��Z�GdEdF�dFe��Z�e�be��Z�e�be��Z�GdGdH�dHe��Z�GdIdJ�dJe��Z�dKdL�Z�dMdN�Z�e�edO�j�Z�e��dO�j�Z�e�Z�e��dP�j�Z�e��dQ�j�Z�e��dR�j�Z�GdSdT�dTejm�Z�e�be��Z�e�bej��Z�e�bej��Z�Z�e�bej��Z�GdUdV�dVejm�Z�e�be��Z�GdWdX�dXejm�Z�e�be��Z�GdYdZ�dZe��Z�e�be��Z�Gd[d\�d\ejm�Z�e�be��Z�Gd]d^�d^eje�Z�d_d`�Z�Gdadb�dbej��Z�dcdd�Z�dedf�Z�dgdh�Z�e�ej�e�ej��e�ej�ejdeje�e�ej�ejdejeej�ej��e�ej�ejdejeejeejee�ej�ejdej��	e�ej�eje�e�ej�ejdejee��e�ej�ejde�e�e�ej��e�ej�ejdej�ej�ej�ej�ej�ej�ej�ej�ej�e�e��
e�ej�eje�e�ej�edejeejeejee�ej�ejdej��	e�ej�edej�e��e�ej�edejeej�e��e�ej�edejeej�e�e[eXe��e�ej�eaes�e�ej�eaejt�e�ej�eae��e�ej�eaeoe�e��e�ej�eaeje�e�ej�eaejeeoe��e�ej�eaejeeoe4ej3ejtej3eye{e�e�ese�e�ec�deUe^eYdfdidj�Z�dkdl�Z�dmdn�Z�dodp�Z�e��dqdr�Z�de~ddddfdsdt�Z�dde~dfdudv�Z�de~dfdwdx�Z�dde~de�fdydz�Z�e���e���e���dd{e	jWfd|d}�Z�d�d~d�Z�d�d��Z�d�d��Z�d�d��Z�							d�d�d��Z�d�d�d��Z�d�d�d��Z�d�d��Z�d�d��Z�d�d��Z�										d�d�d��Z�dS)�a 
Windows specific utility functions, this module should be imported in a try,
except block because it is only applicable on Windows platforms.


Much of what is here was adapted from the following:

    https://stackoverflow.com/a/43233332
    http://stackoverflow.com/questions/29566330
�N)�wintypes�ntdll�secur32�kernel32T)�use_last_error�advapi32�userenvzS-1-5-18zS-1-5-19���������R�s	NegotiatesKerbeross%MICROSOFT_AUTHENTICATION_PACKAGE_V1_0iiii�� �@��c@seZdZdd�Zdd�ZdS)�NTSTATUScCs
t�|�S�N)rZRtlNtStatusToDosError��self�r�E/opt/saltstack/salt/lib/python3.10/site-packages/salt/platform/win.py�to_error��
zNTSTATUS.to_errorcCs&|jj}tj�|�}|�d|j�d�S�N�(�))�	__class__�__name__r�ULONG�from_buffer�value)r�name�statusrrr�__repr__�szNTSTATUS.__repr__N)r$�
__module__�__qualname__rr*rrrrr�src@seZdZdd�ZdS)�BOOLcC�|jj}|�dt|��d�Sr )r#r$�bool�rr(rrrr*��z
BOOL.__repr__N)r$r+r,r*rrrrr-�sr-c@s:eZdZdZdd�Zdd�Zejfdd�ZeZ	dd	�Z
d
S)�HANDLE)�closedcCs
|jpdS�Nr�r'rrrr�__int__�rzHANDLE.__int__cCs,t|dd�sd|_t|�}d|_|Std��)Nr3FTzalready closed)�getattrr3�intr'�
ValueError)rr'rrr�Detach�sz
HANDLE.DetachcCsT|r&t|dd�s(z	||���WdSty%t��dkr"	YdSYdSwdSdS)Nr3F�)r7r:�OSError�ctypes�get_last_error)r�CloseHandlerrr�Close�s���zHANDLE.ClosecCs|jj�dt|��d�Sr �r#r$r8rrrrr*�szHANDLE.__repr__N)r$r+r,�	__slots__r6r:rr?r@�__del__r*rrrrr2�s	r2c@sXeZdZdej_e��Ze�de	�
e��ejZdd�Zdd�Z
dd�Zed	d
��ZdS)�
LARGE_INTEGERNrcCs|jSrr5rrrrr6�szLARGE_INTEGER.__int__cCs|jj}|�d|j�d�Sr )r#r$r'r0rrrr*�szLARGE_INTEGER.__repr__cCs$|j|j}|dkr|dStd��)Nrg�cAzvalue predates the Unix epoch)r'�_unix_epochr9)r�	time100nsrrr�as_time�szLARGE_INTEGER.as_timecCst|d�}|||j�S)Ni���)r8rE)�cls�trFrrr�	from_time�szLARGE_INTEGER.from_time)r$r+r,rZRtlSecondsSince1970ToTime�restyperrDrEr=�byrefr'r6r*rG�classmethodrJrrrrrD�srDc@�&eZdZdejfdejfdeffZdS)�STRING�Length�
MaximumLength�BufferN)r$r+r,r�USHORT�PCHAR�_fields_rrrrrO��
�rOc@rN)�UNICODE_STRINGrPrQrRN)r$r+r,rrS�PWCHARrUrrrrrW�rVrWc@s:eZdZdejfdejffZddd�Zdd�Zdd	�Z	d
S)�LUIDZLowPartZHighPartrcCs|�t�|��Sr)�from_buffer_copyr=�c_ulonglong)rHr'rrr�__new__szLUID.__new__cCstj�|�jSr)r=r[r&r'rrrrr6szLUID.__int__cCr.r rAr0rrrr*r1z
LUID.__repr__N)r)
r$r+r,r�DWORD�LONGrUr\r6r*rrrrrY�s�
rYc@seZdZdefdejffZdS)�SID_AND_ATTRIBUTESZSidZ
AttributesN)r$r+r,�PSIDrr]rUrrrrr_s�r_c@s"eZdZdejfdedffZdS)�TOKEN_GROUPSZ
GroupCountZGroupsr	N)r$r+r,rr]r_rUrrrrras
�racs2eZdZdeefdeffZd�fdd�	Z�ZS)�TOKEN_SOURCE�
SourceName�SourceIdentifierNcsXt���|durt|t�s|�d�}||_|dur'|j}t�t	�
|��dS||_dS)N�mbcs)�super�__init__�
isinstance�bytes�encodercrdr�NtAllocateLocallyUniqueIdr=rL)rrcrd�luid�r#rrrg.s



zTOKEN_SOURCE.__init__�NN)	r$r+r,�CHAR�TOKEN_SOURCE_LENGTHrYrUrg�
__classcell__rrrmrrb(s

�rbsPYTHON  �-c@s6eZdZdefdefdefdefdefdejffZdS)�QUOTA_LIMITSZPagedPoolLimitZNonPagedPoolLimitZMinimumWorkingSetSizeZMaximumWorkingSetSizeZ
PagefileLimitZ	TimeLimitN)r$r+r,�SIZE_TrrDrUrrrrrsDs�rscsVeZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Z�fdd�Ze	ddd��Z
�ZS)�ContiguousUnicodecst�j|i|��dSr)rfrg)r�args�kwargsrmrrrgZszContiguousUnicode.__init__cCs>t�t�}t|d|���}|j|}|j}|r|d|�SdS�N�_)r=�sizeof�WCHARr7rPrR)rr(�
wchar_size�s�length�bufrrr�_get_unicode_string]s

z%ContiguousUnicode._get_unicode_stringcCs�t|�}t�t�}td�|��d|}t�|t�|�|�t�|�t�|�}|D]}t|�d|}t�|||�||7}q+dS)N�r	)	�typer=rzr{�len�join�resize�	addressof�memmove)r�valuesrHr|�bufsize�addrr'rrr�_set_unicode_bufferfs

�z%ContiguousUnicode._set_unicode_bufferc
Csg}|jD]}||kr|�|pd�q|�t||�pd�q|�|�t|�}t�t�}t�|�t�|�}t	|j|�D]A\}}t�
|t�}	t|d|���}
t|�|}|
_
||}||krc|dusl||krs|ss|
jssd|
_d|
_n|	|
_||
_||7}q<dS)N�ryr)�_string_names_�appendr7r�r�r=rzr{r��zip�castrXr�rPrRrQ)
rr(r'r��nrHr|r��v�ptr�ustrr~Zfull_lengthrrr�_set_unicode_stringqs,



�z%ContiguousUnicode._set_unicode_stringcCs||jvrt�|�|�Sr)r��AttributeErrorr�r0rrr�__getattr__�s

zContiguousUnicode.__getattr__cs,||jvr
|�||�dSt��||�dSr)r�r�rf�__setattr__)rr(r'rmrrr��s
zContiguousUnicode.__setattr__NcCs�tj�|�}|durt�||�t�t�|�|t�|��t�|�|}|jD]}t	|d|���}tj
�|j�}|rA|j
|7_
q'|Srx)r=�	Structurer\r�r�rLrzr�r�r7�c_void_pr&rRr')rH�address�size�x�deltar�r�r�rrr�from_address_copy�s
�z#ContiguousUnicode.from_address_copyr)r$r+r,rgr�r�r�r�r�rMr�rqrrrmrruXs	ruc�eZdZ�fdd�Z�ZS)�AuthInfoc�t���|j|_dSr�rfrg�_message_type_�MessageTyperrmrrrg��
zAuthInfo.__init__�r$r+r,rgrqrrrmrr���r�csBeZdZeZdZdefdefdefdeffZd	�fdd�	Z	�Z
S)
�MSV1_0_INTERACTIVE_LOGON)�LogonDomainName�UserName�Passwordr�Z_LogonDomainNameZ	_UserNameZ	_PasswordNcs<t���|dur||_|dur||_|dur||_dSdSr)rfrgr�r�r�)rr�r�r�rmrrrg�s

�z!MSV1_0_INTERACTIVE_LOGON.__init__�NNN)r$r+r,�MsV1_0InteractiveLogonr�r��LOGON_SUBMIT_TYPErWrUrgrqrrrmrr��s�r�cs@eZdZdZdefdejfdefdeffZd
�fdd	�	Z	�Z
S)�S4ULogon)�UserPrincipalName�
DomainNamer��FlagsZ_UserPrincipalNameZ_DomainNameNrcs4t���||_|dur||_|dur||_dSdSr)rfrgr�r�r�)rr�r�r�rmrrrg�s

�zS4ULogon.__init__)NNr)r$r+r,r�r�rr%rWrUrgrqrrrmrr��s�r�c@�eZdZeZdS)�MSV1_0_S4U_LOGONN)r$r+r,�MsV1_0S4ULogonr�rrrrr���r�c@r�)�KERB_S4U_LOGONN)r$r+r,�KerbS4ULogonr�rrrrr��r�r�cr�)�
ProfileBuffercr�rr�rrmrrrg�r�zProfileBuffer.__init__r�rrrmrr��r�r�c@s~eZdZeZdZdefdejfdejfde	fde	fde	fde	fd	e	fd
e	fde
fde
fd
e
fde
fde
fde
fdejffZdS)�MSV1_0_INTERACTIVE_PROFILE)ZLogonScriptZ
HomeDirectoryZFullNameZProfilePathZHomeDirectoryDriveZLogonServerr�Z
LogonCountZBadPasswordCountZ	LogonTimeZ
LogoffTimeZKickOffTimeZPasswordLastSetZPasswordCanChangeZPasswordMustChangeZ_LogonScriptZ_HomeDirectoryZ	_FullNameZ_ProfilePathZ_HomeDirectoryDriveZ_LogonServerZ	UserFlagsN)
r$r+r,r�r�r��PROFILE_BUFFER_TYPErrSrDrWr%rUrrrrr��s(	�r�cCs|jdkrt�|����|Sr4)r'r=�WinErrorr��result�funcrvrrr�
_check_statuss
r�cC�|s	t�t����|Sr�r=r�r>r�rrr�_check_bool�r����i����i����i�cs8eZdZdejfdejfdejffZ�fdd�Z�Z	S)�SECURITY_ATTRIBUTES�nLengthZlpSecurityDescriptor�bInheritHandlec�"t�|�|_t�jdi|��dS�Nr)r=rzr�rfrg�r�kwdsrmrrrg!�zSECURITY_ATTRIBUTES.__init__)
r$r+r,rr]�LPVOIDr-rUrgrqrrrmrr�s�r�cs�eZdZdZdejfdejfdejfdejfdejfdejfdejfd	ejfd
ejfdejfdejfd
ejfdejfdejfdefdej	fdej	fdej	ffZ
�fdd�Z�ZS)�STARTUPINFOz1https://msdn.microsoft.com/en-us/library/ms686331�cbZ
lpReservedZ	lpDesktopZlpTitleZdwXZdwYZdwXSizeZdwYSizeZ
dwXCountCharsZ
dwYCountCharsZdwFillAttributeZdwFlagsZwShowWindowZcbReserved2ZlpReserved2Z	hStdInputZ
hStdOutputZ	hStdErrorcr�r�)r=rzr�rfrgr�rmrrrgDr�zSTARTUPINFO.__init__)
r$r+r,�__doc__rr]�LPWSTRZWORD�LPBYTEr2rUrgrqrrrmrr�,s,�r�c@�eZdZdS)�PROC_THREAD_ATTRIBUTE_LISTN�r$r+r,rrrrr�L�r�c@seZdZdeffZdS)�
STARTUPINFOEXZlpAttributeListN)r$r+r,�PPROC_THREAD_ATTRIBUTE_LISTrUrrrrr�Ssr�c@s4eZdZdZdejfdejfdejfdejffZdS)�PROCESS_INFORMATIONz1https://msdn.microsoft.com/en-us/library/ms684873ZhProcessZhThreadZdwProcessIdZ
dwThreadIdN)r$r+r,r�rr2r]rUrrrrr�Zs�r�c@r�)�
HANDLE_IHVNr�rrrrr�hr�r�cC�|jtkrt�t����|jSr)r'�INVALID_HANDLE_VALUEr=r�r>r�rrr�errcheck_ihvl�
r�c@r�)�	DWORD_IDVNr�rrrrr�rr�r�cCr�r)r'�INVALID_DWORD_VALUEr=r�r>r�rrr�errcheck_idvvr�r�cCr�rr�r�rrr�
errcheck_bool|r�r�cGsf||_||_t|t�rt|_dSt|t�rt|_dSt|t�r$t	|_dSt|t
�r.t|_dSt|_dSr)
rK�argtypes�
issubclassrr��errcheckr-r�r�r�r�r�r�)r�rKr�rrr�_win�s








r�c
Csrd}|durd}t�}t�t��tt�|��t�}zt�|||||t�|��W|r/|�	�|S|r8|�	�ww)NFT)
r2r�OpenProcessTokenr�GetCurrentProcess�TOKEN_ALL_ACCESSr=rL�DuplicateTokenExr@)Zsource_token�accessZimpersonation_level�
token_typeZ
attributesZclose_source�tokenrrr�duplicate_tokenXs.��	�
�r�cCst��}t�t�|��|jSr)rr2r�LsaConnectUntrustedr=rLr')�handlerrr�lsa_connect_untrustedvsr�cCstt|t�s
|�d�}|dd�}t�|d�}tt|�t|�|�}t��}t	�}t
�t�|�t�|�t�|��|j
S)Nre�r)rhrirjr=�create_string_bufferrOr�rr2�LSA_OPERATIONAL_MODEr�LsaRegisterLogonProcessrLr')�logon_process_namerr(r��moderrr�lsa_register_logon_process|s

�r�cCsft|t�s
|�d�}|dd�}t�|�}tt|�t|�|�}t��}t	�
|t�|�t�|��|jS)Nrer�)
rhrirjr=r�rOr�rr%r�LsaLookupAuthenticationPackagerLr')�
lsa_handleZpackage_namerr(�packagerrr�!lsa_lookup_authentication_package�s


�r��	LOGONINFO)�TokenZLogonIdZProfileZQuotascCs4|durt�}nt�|�}|durt}t|t�s|�d�}t�|�}tt	|�t	|�|�}|durBt|t
�r8t}n
t|t�r@t
}nt}|durQt|t�rOtj}nt}t��}	t��}
d}t�}t�}
t�}t�}d}|durrt�}d}z�t|ttf�rt||�}zbz2t�|t�|�||t�|�t�|�|t�|�t�|	�t�|
�t�|�t�|
�t�|�t�|��Wnt y�|j!r�t�"|�#����wW|	r�|	j!}t$�%|�j!}|t&kr�t'�(||
j!�}t�)|�n|	r�|	j!}t$�%|�j!}|t&kr�t'�(||
j!�}t�)|�wwW|�rt�*|�n
|�rt�*|�wwt+|
|||�S)NreFT),�LPTOKEN_GROUPSr=rL�py_source_contextrhrirjr�rOr�r��NEGOTIATE_PACKAGE_NAMEr��MICROSOFT_KERBEROS_NAME�MSV1_0_PACKAGE_NAMEr��win32conZLOGON32_LOGON_NETWORK�Interactiverr�r%rYr2rsrr��strr�r�LsaLogonUserrzr<r'r�rr��from_addressr�r�r��LsaFreeReturnBuffer�LsaDeregisterLogonProcessr�)Z	auth_info�local_groups�origin_name�source_contextZauth_packageZ
logon_typer�Z
plocal_groupsrZprofile_bufferZprofile_buffer_lengthZprofileZlogonidZhtokenZquotasZ	substatusZ
deregisterr��buftyperrr�lsa_logon_user�s�	







����
�����	
���rcCstt|||�|||�Sr)rr�)r(�password�domainr
rrrrr�
logon_msv1�s
�rcCsDt�td�}t�t|��}t�|t�|��t	t
||j�|||�S)Nr	)r=�create_unicode_buffer�MAX_COMPUTER_NAME_LENGTHrr]r�r�GetComputerNameWrLrr�r')r(r
rrrr~rrr�logon_msv1_s4u�s�rc	Cs:t|�}ztt||�||||d�Wt�|�St�|�w)N)r�)r�rr�rr)r(Zrealmr
rrr�r�rrr�logon_kerb_s4us�rFc	Cs*t��}t�|||t�|�|||�|jSr)rr2r�DuplicateHandler=rLr')ZhsrcZ	srchandleZhtgtr�Zinherit�optionsZ	tgthandlerrrrs
�rcCsft��t��}}t�t�|�t�|�dd�|r"t�|tjtj�|r-t�|tjtj�|j	|j	fSr4)
rr2r�
CreatePiper=rL�SetHandleInformationrZHANDLE_FLAG_INHERITr')Zinherit_readZ
inherit_write�read�writerrrr,s
�
�rcCs�tjtjBtjB}t�||�}|��}|��}d}td|�D]}|�|�\\}	}
}}|	t	j
ko6||ko6||k}
|
r<dSq|�|��||�|�
d|d�t�|||�dS)z9
    Set an object permission for the given user sid
    Frr	N)�
win32securityZOWNER_SECURITY_INFORMATIONZGROUP_SECURITY_INFORMATIONZDACL_SECURITY_INFORMATIONZGetUserObjectSecurityZGetSecurityDescriptorDaclZGetAceCount�rangeZGetAce�
ntsecurityconZACCESS_ALLOWED_ACE_TYPEZAddAccessAllowedAceZGetAclRevisionZSetSecurityDescriptorDaclZSetUserObjectSecurity)�obj�perm�sid�info�sdZdaclZace_cnt�found�idxZaceTypeZaceFlagsZace_maskZace_sidZ
ace_existsrrr�
set_user_perm:s.���
���r*cCsDt�|tj�d}t��}t|t|�t�t	�
��}t|t|�dS)z`
    Grant the token's user access to the current process's window station and
    desktop.
    rN)r �GetTokenInformation�	TokenUser�win32processZGetProcessWindowStationr*�
WINSTA_ALL�win32serviceZGetThreadDesktop�win32apiZGetCurrentThreadId�DESKTOP_ALL)�thZcurrent_sidZwinstaZdesktoprrr�grant_winsta_and_desktopWs
r3cCs<d}|��D]\}}||d|d7}q|d7}t�|�S)Nr��=r�)�itemsr=r)�envZsenv�kr�rrr�environment_stringes

r8c
Cs�|tjO}|durt�|�}|durt�}|durt�|�}|dur)t�t|��}t�}t�	|||||||t�
|�t�
|��	}	|	dkrSt��}
t
t�|
��}|
|_|�|Sr4)r�CREATE_UNICODE_ENVIRONMENTr=rr��pointerr8r�r�CreateProcessWithTokenWrLr0�GetLastErrorr<�
FormatMessage�winerror)r��
logonflags�applicationname�commandline�
creationflags�environment�currentdirectory�startupinfo�process_info�retZwinerr�excrrrr;ms6



�r;c
cs��t��D]�}|jdkr
qzt�tjd|j�}Wn$tjy<}z|jdkr6t	�
d|j|���WYd}~q|�d}~wwztj
tjBtjBtjB}t�||�}Wntyp}zt	�
d|j|��|���WYd}~qd}~wwzt�|tj�d}Wnty�}zt	�d|j|��|���WYd}~qd}~wwt�|�}	|r�||	kr�t	�
d|�q|r�t�|tj�|kr�qdd	�}
|r�d
}|D]	}|
||�s�d}q�|s�qt|�VqdS)zj
    Enumerate tokens from any existing processes that can be accessed.
    Optionally filter by sid.
    rrz$Unable to OpenProcess pid=%d name=%sNz-OpenProcessToken failed pid=%d name=%s user%sz)GetTokenInformation pid=%d name=%s user%sz)Token for pid does not match user sid: %scSs6t�d|�}t�|tj�D]\}}||krdSq
dS)NTF)r ZLookupPrivilegeValuer+�TokenPrivileges)�tokZprivrlZ	priv_luid�flagsrrr�has_priv�s��z"enumerate_tokens.<locals>.has_privTF)�psutilZprocess_iter�pidr0ZOpenProcessrZPROCESS_ALL_ACCESS�errorr>�log�debugr(r �TOKEN_DUPLICATE�TOKEN_QUERY�TOKEN_IMPERSONATE�TOKEN_ASSIGN_PRIMARYr��	Exception�usernamer+r,�	exceptionZConvertSidToStringSidZTokenSessionId�	dup_token)
r%�
session_id�privs�p�phrHr�r2Zprocess_sidZproc_sidrLZhas_allr(rrr�enumerate_tokens�s��

��������������
	��	
��r^cCsFt|||�D]}t|�}t|�t�|�dkrtd��|Std��)zU
    Find an existing process token for the given sid and impersonate the token.
    rzImpersonation failure)r^rY�
elevate_tokenr ZImpersonateLoggedOnUserr<)r%rZr[rJrrr�impersonate_sid�sr`cCs&t��}d|_t�|tjtjtj|�S)z$
    duplicate the access token
    T)r r�r�r��SecurityImpersonationrZMAXIMUM_ALLOWED�TokenPrimary)r2Zsec_attrrrrrY�s�rYcCsZt�|tj�}t�}|D]\}}|�|tjf�qt�|d|�dkr+tt	�
t	�����dS)z-
    Set all token privileges to enabled
    rN)r r+rI�set�addrZSE_PRIVILEGE_ENABLEDZAdjustTokenPrivilegesr<r0r=r<)r2Z
privilegesZenable_privsrlrKrrrr_�s�r_cCst�t��|t��ddtj�S)zCreate an inheritable handlerr	)r0rr�r�DUPLICATE_SAME_ACCESS)r�rrr�make_inheritable
s�rfc
Cst|tjO}|durt�|�}|	durt�}	|dur t�t|��}t�}
t�	|||||||||t�
|	�t�
|
��|
Sr)rr9r=rr�r:r8r�r�CreateProcessWithLogonWrL)rWrrr?r@rArBrCrDrErFrrrrgs,

�
rg)FF)rNNrNNNr�rn)
NNNrNNrNNN)�r��collectionsr=�logging�osrr"rMr0rr-r r/�	getLoggerr$rPZWinDLLrrrrrZ
SYSTEM_SIDZ
LOCAL_SRV_SIDZNETWORK_SRV_SIDZLOGON_WITH_PROFILEZWINSTA_ACCESSCLIPBOARDZWINSTA_ACCESSGLOBALATOMSZWINSTA_CREATEDESKTOPZWINSTA_ENUMDESKTOPSZWINSTA_ENUMERATEZWINSTA_EXITWINDOWSZWINSTA_READATTRIBUTESZWINSTA_READSCREENZWINSTA_WRITEATTRIBUTESZDELETEZREAD_CONTROLZ	WRITE_DACZWRITE_OWNERr.ZDESKTOP_CREATEMENUZDESKTOP_CREATEWINDOWZDESKTOP_ENUMERATEZDESKTOP_HOOKCONTROLZDESKTOP_JOURNALPLAYBACKZDESKTOP_JOURNALRECORDZDESKTOP_READOBJECTSZDESKTOP_SWITCHDESKTOPZDESKTOP_WRITEOBJECTSr1rr%ZSECURITY_LOGON_TYPErZNetworkZBatchZServicer�r�r�ZMsV1_0Lm20LogonZMsV1_0NetworkLogonZMsV1_0WorkstationUnlockLogonr�ZMsV1_0NoElevationLogonZKerbInteractiveLogonZKerbWorkstationUnlockLogonr�Z&MSV1_0_S4U_LOGON_FLAG_CHECK_LOGONHOURSZ$KERB_S4U_LOGON_FLAG_CHECK_LOGONHOURSZKERB_S4U_LOGON_FLAG_IDENTITYrprrrZSTANDARD_RIGHTS_REQUIREDrUrRrTrSZTOKEN_QUERY_SOURCEZTOKEN_ADJUST_PRIVILEGESZTOKEN_ADJUST_GROUPSZTOKEN_ADJUST_DEFAULTZTOKEN_ADJUST_SESSIONIDr�ZDUPLICATE_CLOSE_SOURCEreZ
TOKEN_TYPErbZTokenImpersonationZSECURITY_IMPERSONATION_LEVELZSecurityAnonymousZSecurityIdentificationraZSecurityDelegationr^r�POINTERZ	PNTSTATUSr-r2rD�c_charro�c_wcharr{rTrXr�rOZLPSTRINGrWZLPUNICODE_STRINGrYZLPLUIDr�r`r_ZLPSID_AND_ATTRIBUTESrarrbZLPTOKEN_SOURCErrjZpy_origin_name�getpidZpy_logon_process_name�c_size_trtrsZLPQUOTA_LIMITSZLPULONGr�ZLPLSA_OPERATIONAL_MODEZLPHANDLEZLPLPVOIDr]ZLPDWORDrur�r�r�r�r�ZPMSV1_0_S4U_LOGONZPKERB_S4U_LOGONr�r�r�r�r'r�r�ZINFINITEZSTD_INPUT_HANDLEZSTD_OUTPUT_HANDLEZSTD_ERROR_HANDLEr�ZLPSECURITY_ATTRIBUTESZBYTEr�r�ZPHANDLE�c_ulongr�Z
LPSTARTUPINFOr�r�r�ZLPSTARTUPINFOEXr�ZLPPROCESS_INFORMATIONr�r�r�r�r�r�ZGetStdHandler?rrr�ZGetExitCodeProcessrrgZLPCWSTRr�rr�r�rkrr�r�rr�r	r�r�r�r��
namedtupler�rrrrr*r3r8r;r^r`rYr_rfrrrr�<module>s.


��������	�
������������	�
������������	��











N






�
��	�����
�
���
�
�
�
�
�T
�
�

�
�


�
'
K

�