o
    Žõ±j).  ã                   @   sB  d dl Z d dlZd dlZd dlmZ d dlT d dlT 	 eZdZG dd„ dej	ƒZ
e e
¡Ze e
¡ZG dd„ deƒZeeƒZG d	d
„ d
eƒZeeƒZG dd„ deƒZeeƒZG dd„ deƒZeeƒZG dd„ deƒZeeƒZG dd„ deƒZeeƒZG dd„ deƒZeeƒZG dd„ deƒZeeƒZG dd„ deƒZeeƒZG dd„ deƒZ ee ƒZ!G dd„ deƒZ"ee"ƒZ#G dd„ deƒZ$ee$ƒZ%G dd „ d eƒZ&ee&ƒZ'G d!d"„ d"eƒZ(ee(ƒZ)G d#d$„ d$eƒZ*ee*ƒZ+G d%d&„ d&eƒZ,ee,ƒZ-G d'd(„ d(eƒZ.ee.ƒZ/G d)d*„ d*e j0ƒZ1d+d,„ Z2d8d.d/„Z3d9d1d2„Z4d:d3d4„Z5d;d6d7„Z6dS )<é    N)Úwintypes)Ú*éÿÿÿÿc                   @   s8   e Zd Zeed ¡ dƒƒZd
dd„Zdd„ Zdd	„ Z	dS )ÚSID_NAME_USEze
        User Group Domain Alias WellKnownGroup DeletedAccount
        Invalid Unknown Computer Labelé   Nc                 C   s.   |d ur|| j vrtdƒ‚tj |¡ d S d S )Nzinvalid SID type)Ú	sid_typesÚ
ValueErrorr   ÚDWORDÚ__init__)ÚselfÚvalue© r   ú§/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/pypykatz/commons/winapi/local/function_defs/netapi32.pyr
      s
   
ýzSID_NAME_USE.__init__c                 C   s&   | j | jvrtd| j  ƒ‚| j| j  S )Nzinvalid SID type for value: %s)r   Ú
_sid_typesr   ©r   r   r   r   Ú__str__"   s   zSID_NAME_USE.__str__c                 C   s
   d| j  S )NzSID_NAME_USE(%s))r   r   r   r   r   Ú__repr__'   s   
zSID_NAME_USE.__repr__©N)
Ú__name__Ú
__module__Ú__qualname__ÚdictÚ	enumerateÚsplitr   r
   r   r   r   r   r   r   r      s    þ
r   c                   @   ó   e Zd ZdefgZdS )ÚFILE_INFO_2ÚfidN)r   r   r   r	   Ú_fields_r   r   r   r   r   /   ó    ÿr   c                   @   s.   e Zd ZdefdefdefdefdefgZdS )ÚFILE_INFO_3r   ÚpermissionsÚ	num_locksÚpathnameÚusernameN)r   r   r   r	   ÚLMSTRr   r   r   r   r   r   5   s    ûr   c                   @   r   )ÚSHARE_INFO_0ÚnetnameN©r   r   r   r$   r   r   r   r   r   r%   ?   r   r%   c                   @   s"   e Zd ZdefdefdefgZdS )ÚSHARE_INFO_1r&   ÚtypeÚremarkN©r   r   r   r$   r	   r   r   r   r   r   r(   E   ó
    ý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gZd	S )
ÚSHARE_INFO_2r&   r)   r*   r    Úmax_usesÚcurrent_usesÚpathÚpasswdNr+   r   r   r   r   r-   M   ó    ør-   c                   @   s(   e Zd ZdefdefdefdefgZdS )ÚSHARE_INFO_501r&   r)   r*   ÚflagsNr+   r   r   r   r   r3   Z   ó    ür3   c                
   @   sF   e Zd Zdefdefdefdefdefdefdefdefd	efg	Zd
S )ÚSHARE_INFO_502r&   r)   r*   r    r.   r/   r0   r1   ÚreservedNr+   r   r   r   r   r6   c   s    ÷r6   c                   @   sL   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g
ZdS )ÚSHARE_INFO_503r&   r)   r*   r    r.   r/   r0   r1   Ú
servernamer7   Nr+   r   r   r   r   r8   q   s    ör8   c                   @   r   )ÚSESSION_INFO_0ÚcnameNr'   r   r   r   r   r:   �   r   r:   c                   @   s(   e Zd ZdefdefdefdefgZdS )ÚSESSION_INFO_10r;   r#   ÚtimeÚ	idle_timeNr+   r   r   r   r   r<   ‡   r5   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gZdS )ÚSESSION_INFO_1r;   r#   Ú	num_opensr=   r>   Ú
user_flagsNr+   r   r   r   r   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gZdS )	ÚSESSION_INFO_2r;   r#   r@   r=   r>   rA   Úcltype_nameNr+   r   r   r   r   rB   ›   s    ùrB   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gZd	S )
ÚSESSION_INFO_502r;   r#   r@   r=   r>   rA   rC   Ú	transportNr+   r   r   r   r   rD   §   r2   rD   c                   @   r   )ÚLOCALGROUP_MEMBERS_INFO_0ÚsidN)r   r   r   ÚPSIDr   r   r   r   r   rF   ´   r   rF   c                   @   ó"   e Zd ZdefdefdefgZdS )ÚLOCALGROUP_MEMBERS_INFO_1rG   ÚsidusageÚnameN©r   r   r   rH   r	   r$   r   r   r   r   r   rJ   º   r,   rJ   c                   @   rI   )ÚLOCALGROUP_MEMBERS_INFO_2rG   rK   ÚdomainandnameNrM   r   r   r   r   rN   Â   r,   rN   c                   @   r   )ÚLOCALGROUP_MEMBERS_INFO_3rO   Nr'   r   r   r   r   rP   Ê   r   rP   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 )ÚNetSessionEnumResé   é|   éW   é   i	  i/	  é   i
	  r   éê   N)r   r   r   ÚERROR_ACCESS_DENIEDÚERROR_INVALID_LEVELÚERROR_INVALID_PARAMETERÚERROR_NOT_ENOUGH_MEMORYÚNERR_ClientNameNotFoundÚNERR_InvalidComputerÚERROR_FILE_NOT_FOUNDÚNERR_FileIdNotFoundÚNERR_SUCCESSÚERROR_MORE_DATAr   r   r   r   rQ   Ð   s    rQ   c                 C   s"   t jj}tg|_t|_|| ƒ d S r   )ÚwindllÚNetapi32ÚNetApiBufferFreeÚPVOIDÚargtypesr	   Úrestype)ÚpbuffÚ_NetApiBufferFreer   r   r   rd   Þ   s   rd   é
   c                 C   s†  dd„ }t jj}tttttttttg	|_t|_||_	tƒ }tƒ }tƒ }tdƒ}	| r-t
| ƒ} |r3t
|ƒ}|r9t
|ƒ}|dkr@t}
n"|dkrGt}
n|dkrNt}
n|dkrUt}
n|dkr\t}
ntd| ƒ‚d	}g }d}|	jdkso|rÁ|| |||t|ƒtt|ƒt|ƒt|	ƒƒ	}d
}||j7 }|jdkr²t |t|
|j ƒ¡}t|jƒD ]}| t |j| |¡¡ qŸt|ƒ ||jkrº	 |S |	jdkso|so|S )Nc                 S   ó,   t | ƒ}|t jks|t jkr|S td| ƒ‚©NzNetSessionEnum exception! %s©rQ   r`   ra   Ú	Exception©ÚresultÚfuncÚ	argumentsÚrr   r   r   Úerrcè   ó   zNetSessionEnum.<locals>.errcr   r   rV   rj   éö  z#NetSessionEnum unsupported level %sTF)rb   rc   ÚNetSessionEnumr$   r	   re   ÚLPDWORDrf   rg   ÚerrcheckÚLPWSTRr:   r?   rB   r<   rD   rn   r   ÚbyrefÚMAX_PREFERRED_LENGTHÚctypesÚcastÚPOINTERÚrangeÚappendÚUserSessionInfoÚfrom_session_infoÚcontentsrd   )r9   Ú
clientnamer#   Úlevelrt   Ú_NetSessionEnumÚbufÚentriesreadÚtotalentriesÚresume_handleÚsi_typeÚ
first_callÚsessionsÚentries_read_totalÚresÚmapÚir   r   r   rw   ç   sV   (


órw   rV   c              
   C   sh  dd„ }t jj}ttttttttg|_t|_||_	tƒ }tƒ }tƒ }tdƒ}| r,t
| ƒ} |r2t
|ƒ}|dkr9t}	n|dkr@t}	n|dkrGt}	n|dkrNt}	ntd| ƒ‚d}
g }d}|jdksa|
r²|| ||t|ƒtt|ƒt|ƒt|ƒƒ}d	}
||j7 }|jdkr£t |t|	|j ƒ¡}t|jƒD ]}| t |j| |¡¡ q�t|ƒ ||jkr«	 |S |jdksa|
sa|S )
Nc                 S   rk   rl   rm   ro   r   r   r   rt   "  ru   z%NetLocalGroupGetMembers.<locals>.errcr   r   rV   é   z,NetLocalGroupGetMembers unsupported level %sTF)rb   rc   ÚNetLocalGroupGetMembersr$   r	   re   rx   rf   rg   ry   rz   rF   rJ   rN   rP   rn   r   r{   r|   r}   r~   r   r€   r�   ÚLocalGroupInfoÚfrom_structr„   rd   )r9   Úlocalgroupnamer†   rt   Ú_NetLocalGroupGetMembersrˆ   r‰   rŠ   r‹   rŒ   r�   Ú
groupinfosr�   r�   r‘   r’   r   r   r   r”   !  sN   &


ór”   c              	   C   sf  dd„ }t jj}tttttttg|_t|_||_	tƒ }tƒ }tƒ }tdƒ}| r+t
| ƒ} |dkr2t}n"|dkr9t}n|dkr@t}n|dkrGt}n|dkrNt}ntd| ƒ‚d	}	g }
d}|jdksa|	r±|| |t|ƒtt|ƒt|ƒt|ƒƒ}d
}	||j7 }|jdkr¢t |t||j ƒ¡}t|jƒD ]}|
 t |j| |¡¡ q�t|ƒ ||jkrª	 |
S |jdksa|	sa|
S )Nc                 S   rk   rl   rm   ro   r   r   r   rt   V  ru   zNetShareEnum.<locals>.errcr   r   rV   rv   i÷  z!NetShareEnum unsupported level %sTF)rb   rc   ÚNetShareEnumr$   r	   re   rx   rf   rg   ry   rz   r%   r(   r-   r6   r8   rn   r   r{   r|   r}   r~   r   r€   r�   Ú	ShareInfor–   r„   rd   )r9   r†   rt   Ú_NetShareEnumrˆ   r‰   rŠ   r‹   rŒ   r�   Ú
shareinfosr�   r�   r‘   r’   r   r   r   rš   U  sN   $


órš   r“   c                 C   s\  dd„ }t jj}tttttttttg	|_t|_||_	tƒ }tƒ }tƒ }tdƒ}	| r-t
| ƒ} |r3t
|ƒ}|r9t
|ƒ}|dkr@t}
n|dkrGt}
ntd| ƒ‚d}g }d}|	jdksZ|r¬|| |||t|ƒtt|ƒt|ƒt|	ƒƒ	}d}||j7 }|jdkr�t |t|
|j ƒ¡}t|jƒD ]}| t |j| |¡¡ qŠt|ƒ ||jkr¥	 |S |	jdksZ|sZ|S )	za
	Only members of the Administrators or Account Operators local group can successfully execute 
	c                 S   rk   )NzNetFileEnum exception! %srm   ro   r   r   r   rt   �  ru   zNetFileEnum.<locals>.errcr   rV   r“   z NetFileEnum unsupported level %sTF)rb   rc   ÚNetFileEnumr$   r	   re   rx   rf   rg   ry   rz   r   r   rn   r   r{   r|   r}   r~   r   r€   r�   r›   r–   r„   rd   )r9   Úbasepathr#   r†   rt   Ú_NetFileEnumrˆ   r‰   rŠ   r‹   rŒ   r�   r�   r�   r�   r‘   r’   r   r   r   rž   ‰  sJ   (


órž   )NNNrj   )NNrV   )NrV   )NNNr“   )7ÚenumÚdatetimer}   r   Ú3pypykatz.commons.winapi.local.function_defs.definesÚ9pypykatz.commons.winapi.local.function_defs.netapi32_highrz   r$   r|   r	   r   r   ÚPSID_NAME_USEÚ	Structurer   ÚPFILE_INFO_2r   ÚPFILE_INFO_3r%   ÚPSHARE_INFO_0r(   ÚPSHARE_INFO_1r-   ÚPSHARE_INFO_2r3   ÚPSHARE_INFO_501r6   ÚPSHARE_INFO_502r8   ÚPSHARE_INFO_503r:   ÚPSESSION_INFO_0r<   ÚPSESSION_INFO_10r?   ÚPSESSION_INFO_1rB   ÚPSESSION_INFO_2rD   ÚPSESSION_INFO_502rF   ÚPLOCALGROUP_MEMBERS_INFO_0rJ   ÚPLOCALGROUP_MEMBERS_INFO_1rN   ÚPLOCALGROUP_MEMBERS_INFO_2rP   ÚPLOCALGROUP_MEMBERS_INFO_3ÚEnumrQ   rd   rw   r”   rš   rž   r   r   r   r   Ú<module>   sh    


	

	
:
44