
    .Ph                     |   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	Zd
 Z G 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j         e          gej!        _        eej!        _         ee          ej!        _        e ej         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             Z'd Z(d Z)ddZ*dS )    N)	BOOLCHARDWORDHANDLELONGLPWSTRMAX_PATHPDWORDULONG)SHELL_NAMES   z      i   c                       fd}|S )Nc                 :    | k    rt          j                    | S N)ctypesWinError)retfuncargs	error_vals      N/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/shellingham/nt.pycheckz_check_handle.<locals>.check   s!    )/###
     )r   r   s   ` r   _check_handler      s#        
 Lr   c                       fd}|S )Nc                 j    | rdS t          j                    }|k    rdS t          j        |          )NTF)r   GetLastErrorr   )r   r   r   codeexpecteds       r   r   z_check_expected.<locals>.check(   s>     	4"$$85od###r   r   )r#   r   s   ` r   _check_expectedr$   '   s#    $ $ $ $ $ Lr   c                   p    e Zd Zdefdefdefd ej        e          fdefdefdefdefd	efd
ee	z  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   su        	5	U	% 	nfnU334		u	&	4 	E	dXo&HHHr   r&   c              /      K    | |i |}	 |V  t                               |           d S # t                               |           w xY wr   )kernel32CloseHandle)fr   kwargshandles       r   _handler<   g   s\      QF%V$$$$$V$$$$s	   , Ac               #   J  K   t           j        } t          | t          d          5 }t	                      }t          j        |          |_        t                               ||          }|r!|V  t           	                    ||          }|!d d d            d S # 1 swxY w Y   d S )Nr   )
r7   CreateToolhelp32Snapshotr<   TH32CS_SNAPPROCESSr&   r   sizeofr'   Process32FirstProcess32Next)r9   snapentryr   s       r   _iter_processesrE   p   s      )A	&	*	* 6d  }U++%%dE22 	6KKK((u55C  	6	6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s   A&BBBc                     t          t                    }	 t          j        d|j                  }t
                              | d||          r|j        S |xj        dz  c_        O)NT r   r   )r   r	   r   create_unicode_buffervaluer7   QueryFullProcessImageNameW)prochsize	path_buffs      r   _get_full_pathrN   {   s^    ??D0TZ@@	..uaDII 	#?"

a

	r   
   c                 ,   d t                      D             }| pt          j                    } t          d|dz             D ]}	 ||          \  }}n# t          $ r Y  nw xY wt          |t                    r|                    dd          }|                    d          d         	                                }|t          vr|} t          }t          t          j        |d|           5 }|t          |          fcd d d            c S # 1 swxY w Y   d S )Nc                 6    i | ]}|j         |j        |j        fS r   )r)   r-   r0   ).0procs     r   
<dictcomp>zget_shell.<locals>.<dictcomp>   s7        	T5t~F  r   r      mbcsreplace.)rE   osgetpidrangeKeyError
isinstancebytesdecode
rpartitionlowerr   !PROCESS_QUERY_LIMITED_INFORMATIONr<   r7   OpenProcessrN   )	pid	max_depthproc_map_ppid
executablenamekeyrK   s	            r   	get_shellrl      s    #%%  H 
C1i!m$$ 1 1	'}D** 	 	 	EE	 j%(( 	>#**69==J$$S))!,2244{""C/X)3377 	15.//0	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 4s$   A
AA(DD	D	)r   )NrO   )+
contextlibr   rY   ctypes.wintypesr   r   r   r   r   r   r	   r
   r   shellingham._corer   rI   INVALID_HANDLE_VALUEERROR_NO_MORE_FILESERROR_INSUFFICIENT_BUFFERr?   rb   windllr7   r   r$   	Structurer&   r8   argtypesrestyper>   errcheckr4   rA   rB   GetCurrentProcessIdrc   rJ   contextmanagerr<   rE   rN   rl   r   r   r   <module>rz      s        				
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 * ) ) ) ) ) vbzz'    $* ! =!   	 	 	    V%    "(  #  .3U^ ! *,2 ! )-:]. . ! * %+NFN>,J,J#K   "&  #2?$ $    $*>6>.+I+I"J  !%  "1/# #   )+  %',  $!&e 4  %   -! !   17vv/N # ,.2 # +/>0 0 # ,
 % % %6 6 6       r   