o
    Ñ­j¤  ã                   @   s–  d dl Z d dlZd dl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 edƒjZdZdZdZdZejjZdd	d
„Zdd„ ZG dd„ dejƒZegej_eej_eegej_eej_eeƒej_ee  e¡gej!_eej!_eeƒej!_ee  e¡gej"_eej"_eeƒej"_g ej#_eej#_eeegej$_eej$_eeƒej$_eee	egej%_eej%_eeƒej%_e j&dd„ ƒZ'dd„ Z(dd„ Z)ddd„Z*dS )é    N)	ÚBOOLÚCHARÚDWORDÚHANDLEÚLONGÚLPWSTRÚMAX_PATHÚPDWORDÚULONG)ÚSHELL_NAMESéÿÿÿÿé   éz   é   i   c                    ó   ‡ fdd„}|S )Nc                    s   | ˆ krt  ¡ ‚| S ©N)ÚctypesÚWinError)ÚretÚfuncÚargs©Ú	error_val© úK/var/www/html/CropPilot/venv/lib/python3.10/site-packages/shellingham/nt.pyÚcheck   s   z_check_handle.<locals>.checkr   )r   r   r   r   r   Ú_check_handle   s   r   c                    r   )Nc                    s&   | rdS t  ¡ }|ˆ krdS t  |¡‚)NTF)r   ÚGetLastErrorr   )r   r   r   Úcode©Úexpectedr   r   r   (   s   
z_check_expected.<locals>.checkr   )r    r   r   r   r   Ú_check_expected'   s   r!   c                   @   sV   e Zd Zdefdefdefde e¡fdefdefdefdefd	efd
ee	 ff
Z
dS )ÚProcessEntry32ÚdwSizeÚcntUsageÚth32ProcessIDÚth32DefaultHeapIDÚth32ModuleIDÚ
cntThreadsÚth32ParentProcessIDÚpcPriClassBaseÚdwFlagsÚ	szExeFileN)Ú__name__Ú
__module__Ú__qualname__r   r   ÚPOINTERr
   r   r   r   Ú_fields_r   r   r   r   r"   3   s    
ör"   c              	   o   s4   � | |i |¤Ž}z|V  W t  |¡ d S t  |¡ w r   )Úkernel32ÚCloseHandle)Úfr   ÚkwargsÚhandler   r   r   Ú_handleg   s
   €r7   c                  c   s‚   � t j} t| tdƒ�-}tƒ }t |¡|_t  ||¡}|r/|V  t  	||¡}|sW d   ƒ d S W d   ƒ d S 1 s:w   Y  d S )Nr   )
r2   ÚCreateToolhelp32Snapshotr7   ÚTH32CS_SNAPPROCESSr"   r   Úsizeofr#   ÚProcess32FirstÚProcess32Next)r4   ÚsnapÚentryr   r   r   r   Ú_iter_processesp   s   €þü"ür?   c                 C   s>   t tƒ}	 t d|j¡}t | d||¡r|jS | jd9  _q)NTÚ r   r   )r   r   r   Úcreate_unicode_bufferÚvaluer2   ÚQueryFullProcessImageNameW)ÚprochÚsizeÚ	path_buffr   r   r   Ú_get_full_path{   s   ürG   é
   c           	   	   C   sÖ   dd„ t ƒ D ƒ}| pt ¡ } td|d ƒD ]S}z||  \}}W n ty*   Y  d S w t|tƒr6| dd¡}| d¡d  	¡ }|t
vrF|} qt}ttj|d| ƒ�}|t|ƒfW  d   ƒ   S 1 scw   Y  qd S )Nc                 S   s   i | ]
}|j |j|jf“qS r   )r%   r)   r,   )Ú.0Úprocr   r   r   Ú
<dictcomp>…   s    ÿÿzget_shell.<locals>.<dictcomp>r   é   ÚmbcsÚreplaceÚ.)r?   ÚosÚgetpidÚrangeÚKeyErrorÚ
isinstanceÚbytesÚdecodeÚ
rpartitionÚlowerr   Ú!PROCESS_QUERY_LIMITED_INFORMATIONr7   r2   ÚOpenProcessrG   )	ÚpidÚ	max_depthÚproc_mapÚ_ÚppidÚ
executableÚnameÚkeyrD   r   r   r   Ú	get_shell„   s,   þë
	
&ÿrc   )r   )NrH   )+Ú
contextlibr   rP   Úctypes.wintypesr   r   r   r   r   r   r   r	   r
   Úshellingham._corer   rB   ÚINVALID_HANDLE_VALUEÚERROR_NO_MORE_FILESÚERROR_INSUFFICIENT_BUFFERr9   rY   Úwindllr2   r   r!   Ú	Structurer"   r3   ÚargtypesÚrestyper8   Úerrcheckr0   r;   r<   ÚGetCurrentProcessIdrZ   rC   Úcontextmanagerr7   r?   rG   rc   r   r   r   r   Ú<module>   s`    ,

	
ÿÿÿÿÿ
	