
    *1f:                         d dl Z d dlmZmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ  e j        e          Z G d dej                  ZdS )	    N)
exceptions	renderers)requirements)plugins)utility)pslistc                   8    e Zd ZdZdZed             Zd Zd ZdS )Envarsz0Lists processes with their environment variables   r   r   c                     t          j        ddddg          t          j        dt          j        d          t          j        d	d
t          d          gS )NkernelzLinux kernelIntel32Intel64)namedescriptionarchitecturesr   r   )r   pluginversionpidzFilter on specific process IDsT)r   r   element_typeoptional)r   ModuleRequirementPluginRequirementr   PsListListRequirementint)clss    \/home/panchajanya/Development/work/volatility3/volatility3/framework/plugins/linux/envars.pyget_requirementszEnvars.get_requirements   st     **()4  
 *fmY   (< 	  
 	
    c              #     K   |D ]k}|j         }t          j        |j                  }	 |j        j         }n8# t
          j        $ r& t                              d| d| d           d}Y nw xY w	 |j	        }n8# t
          j        $ r& t                              d| d| d           d}Y w xY w|r|
                                }|"t                              d| d| d	           | j        j        |         }|j	        j        |j	        j        z
  }	d|	cxk     rd
k    s(n t                              d| d| d|	 d           E	 |                    |j	        j        |	          }
nT# t
          j        $ rB t                              d| d| dt!          |j	        j                   d|	 d	           Y w xY w|
                    d          }
|
                    d          D ]}	 |                                                    dd          \  }}nK# t(          $ r> t                              d| d| dt!          |j	        j                   d           Y vw xY wd|||||ffV  mdS )zAGenerates a listing of processes along with environment variablesz#Unable to read parent pid for task  z, setting ppid to 0.r   zUnable to access mm for task z; it is likely a kernel thread, will not extract any envars.Nz+Unable to construct process layer for task z, will not extract any envars.i    zTask z  appears to have envars of size zD bytes which fails the sanity checking, will not extract any envars.zUnable to read full envars for z starting at virtual offset z for z$ bytes, will not extract any envars.    =   zUnable to extract envars for z', they don't appear to be '=' separated)r   r   array_to_stringcommparentr   InvalidAddressExceptionvollogdebugmmadd_process_layercontextlayersenv_end	env_startreadhexrstripsplitdecode
ValueError)selftaskstaskr   r   ppidr-   proc_layer_name
proc_layerenvars_size
envar_data
envar_pairkeyvalues                 r   
_generatorzEnvars._generator)   s       @	= @	=D(C *4955D{5   Z#ZZZZZ   	W5   {C{{${{{     %="&"8"8":":"*LLpcppDppp   !\0A
 #go0AAK////4////LL ^  ^  ^d  ^  ^K  ^  ^  ^   !+1BK!P!PJJ!9   LL q#  q  q  q  qbefjfmfwbxbx  q  q  @K  q  q  q   H	 (..w77
","2"27";"; = =J!%/%6%6%8%8%>%>sA%F%F
UU% ! ! ! dC  d  d$  d  ddghlhohydzdz  d  d  d   !	!
 sD$U;<<<<<A@	= @	=sG   62A+*A+/A772B,+B, E,,AF=<F=-+HAI! I!c           
      r   t           j                            | j                            dd                     }t          j        dt          fdt          fdt          fdt          fdt          fg| 	                    t           j        
                    | j        | j        d         |                              S )	Nr   PIDPPIDCOMMKEYVALUEr   )filter_func)r   r   create_pid_filterconfiggetr   TreeGridr   strrD   
list_tasksr/   )r9   rK   s     r   runz
Envars.runo   s    m55dkooeT6R6RSS!S\FC=63-%QT~VOO((L$+h"7[ )   
 
 	
r!   N)	__name__
__module____qualname____doc___required_framework_versionclassmethodr    rD   rR    r!   r   r
   r
      s[        ::"+
 
 [
&D= D= D=L

 

 

 

 

r!   r
   )loggingvolatility3.frameworkr   r   #volatility3.framework.configurationr    volatility3.framework.interfacesr   volatility3.framework.objectsr   volatility3.plugins.linuxr   	getLoggerrS   r+   PluginInterfacer
   rY   r!   r   <module>rb      s   
  7 7 7 7 7 7 7 7 < < < < < < 4 4 4 4 4 4 1 1 1 1 1 1 , , , , , ,		8	$	$i
 i
 i
 i
 i
W$ i
 i
 i
 i
 i
r!   