
    ,h                     B   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j2                        Zegej6                  _        eej6                  _        eegej<                  _        eej<                  _         ee      ej<                  _        e ej@                  e      gejB                  _        eejB                  _         ee      ejB                  _        e ej@                  e      gejD                  _        eejD                  _         ee      ejD                  _        g ejF                  _        eejF                  _        eeegejH                  _        eejH                  _         ee      ejH                  _        eee	egejJ                  _        eejJ                  _         ee      ejJ                  _        e jL                  d        Z'd Z(d Z)ddZ*y)    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      P/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/shellingham/nt.pycheckz_check_handle.<locals>.check   s    )//##
     )r   r   s   ` r   _check_handler      s    
 Lr   c                       fd}|S )Nc                 h    | ryt        j                         }|k(  ryt        j                  |      )NTF)r   GetLastErrorr   )r   r   r   codeexpecteds       r   r   z_check_expected.<locals>.check(   s1    ""$8ood##r   r   )r#   r   s   ` r   _check_expectedr$   '   s    $ Lr   c                   r    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
y)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   sh    	5	U	% 	nfnnU34		u	&	4 	E	dXo&Hr   r&   c              /      K    | |i |}	 | t         j                  |       y # t         j                  |       w xY wwr   )kernel32CloseHandle)fr   kwargshandles       r   _handler<   g   s;     F%V$V$s   	A & A =A c               #   *  K   t         j                  } t        | t        d      5 }t	               }t        j                  |      |_        t         j                  ||      }|r| t         j                  ||      }|rd d d        y # 1 sw Y   y xY ww)Nr   )
r7   CreateToolhelp32Snapshotr<   TH32CS_SNAPPROCESSr&   r   sizeofr'   Process32FirstProcess32Next)r9   snapentryr   s       r   _iter_processesrE   p   s}     ))A	&	* 6d }}U+%%dE2K((u5C 	6 6 6s   "BAB>	BBBc                     t        t              }	 t        j                  d|j                        }t
        j                  | d||      r|j                  S |xj                  dz  c_        Z)N r   r   )r   r	   r   create_unicode_buffervaluer7   QueryFullProcessImageNameW)prochsize	path_buffs      r   _get_full_pathrN   {   sT    ?D
00TZZ@	..uaDI??"

a
	 r   c                 2   t               D ci c]%  }|j                  |j                  |j                  f' }}| xs t	        j
                         } t        d|dz         D ]  }	 ||    \  }}t        |t              r|j                  dd      }|j                  d      d   j                         }|t        vr|} [t        }t        t         j"                  |d|       5 }	|t%        |	      fcd d d        c S  y c c}w # t        $ r Y  y w xY w# 1 sw Y   xY w)Nr      mbcsreplace.)rE   r)   r-   r0   osgetpidrangeKeyError
isinstancebytesdecode
rpartitionlowerr   !PROCESS_QUERY_LIMITED_INFORMATIONr<   r7   OpenProcessrN   )
pid	max_depthprocproc_map_ppid
executablenamekeyrK   s
             r   	get_shellrh      s.    $% 	T55t~~FFH  
C1i!m$ 1	'}D* j%(#**69=J$$S)!,224{"C/X))337 	15./0	1 	1+10 =  	( +	$	1 	1s#   *C8$C=D=	D
	D
D	)r   )N
   )+
contextlibr   rT   ctypes.wintypesr   r   r   r   r   r   r	   r
   r   shellingham._corer   rI   INVALID_HANDLE_VALUEERROR_NO_MORE_FILESERROR_INSUFFICIENT_BUFFERr?   r]   windllr7   r   r$   	Structurer&   r8   argtypesrestyper>   errcheckr4   rA   rB   GetCurrentProcessIdr^   rJ   contextmanagerr<   rE   rN   rh   r   r   r   <module>rw      s     	
 
 
 * bz''    $* ! ==!!	V%%  "(   #   .3U^ ! ! *,2 ! ! )-:. ! ! * %+NFNN>,J#K    "&   #2$     $*>6>>.+I"J   !%   "1#    )+   %',   $!&e 4   %    -!    17vv/N # # ,.2 # # +/>0 # # ,
 % %6r   