
    Xf<                         d dl Z d dlmZm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 d dlmZ  e j        e          Z G d	 d
ej        j                  ZdS )    N)IterableCallable)	renderers
interfaces)requirements)utility)format_hints)mac)lsmodc                       e Zd ZdZdZdZed             Zed fdej	        j
        dedeegef         deej        j                 fd	            Zd
 Zd ZdS )Kauth_scopesz#Lists kauth scopes and their status   r   r   c                     t          j        ddddg          t          j        dt          j        d          t          j        d	t          j        d
          gS )NkernelzKernel module for the OSIntel32Intel64)namedescriptionarchitecturesmacutils)   r   r   )r   	componentversionr   r   )r   pluginr   )r   ModuleRequirementVersionRequirementr
   MacUtilitiesPluginRequirementr   Lsmod)clss    `/home/panchajanya/Development/work/volatility3/volatility3/framework/plugins/mac/kauth_scopes.pyget_requirementszKauth_scopes.get_requirements   sr     *6()4  
 +3+;Y   *U[)  
 	
    c                     dS )NF )_s    r"   <lambda>zKauth_scopes.<lambda>,   s    u r$   contextkernel_module_namefilter_funcreturnc              #      K   |j         |         }|                    d          }t          j                            |d          D ]} ||          s|V  dS )zw
        Enumerates the registered kauth scopes and yields each object
        Uses smear-safe enumeration API
        kauth_scopesks_linkN)modulesobject_from_symbolr
   r   
walk_tailq)r!   r)   r*   r+   r   scopesscopes          r"   list_kauth_scopeszKauth_scopes.list_kauth_scopes'   sp       !34**>::%00CC 	 	E;u%% 	 	r$   c           	   #     K   | j         j        | j        d                  }t          j                            | j         | j        d                   }t          j                            | j         |j	        ||          }| 
                    | j         | j        d                   D ]}|j        }|dk    rt          j                            | j         ||| j        d                   \  }}t          j        |j        d          }d|t!          j        |j                  t'          d |                                D                       t!          j        |          ||ffV  d S )Nr   r      c                     g | ]}|S r&   r&   ).0ls     r"   
<listcomp>z+Kauth_scopes._generator.<locals>.<listcomp>S   s    :::q:::r$   )r)   r0   configr   r    list_modulesr
   r   generate_kernel_handler_info
layer_namer5   ks_callbacklookup_module_addressr   pointer_to_stringks_identifierr	   Hexks_idatalenget_listeners)	selfr   modshandlersr4   callbackmodule_namesymbol_name
identifiers	            r"   
_generatorzKauth_scopes._generator:   s`     %dk(&;<{''dk(6KLL#@@L&+VT
 
 ++DL$+h:OPP 	 	E(H1}}'*'7'M'Mh$+h2G( ($K !253FLLJ  $U^44::E$7$7$9$9:::;; $X..
 
 
 
 
	 	r$   c           	          t          j        dt          fdt          j        fdt
          fdt          j        fdt          fdt          fg|                                           S )NNameIData	ListenerszCallback AddressModuleSymbol)r   TreeGridstrr	   rD   intrO   )rH   s    r"   runzKauth_scopes.runZ   s^    !,*+c"#\%5633 OO

 

 
	
r$   N)__name__
__module____qualname____doc___version_required_framework_versionclassmethodr#   r   r)   ContextInterfacerW   r   rX   boolr   objectsObjectInterfacer5   rO   rY   r&   r$   r"   r   r      s        --H"+
 
 [
 
 .=_	 #4   seTk*	
 
*$4	5   [$  @
 
 
 
 
r$   r   )loggingtypingr   r   volatility3.frameworkr   r   #volatility3.framework.configurationr   volatility3.framework.objectsr   volatility3.framework.renderersr	   volatility3.framework.symbolsr
   volatility3.plugins.macr   	getLoggerrZ   vollogpluginsPluginInterfacer   r&   r$   r"   <module>rq      s     % % % % % % % % 7 7 7 7 7 7 7 7 < < < < < < 1 1 1 1 1 1 8 8 8 8 8 8 - - - - - - ) ) ) ) ) )		8	$	$T
 T
 T
 T
 T
:%5 T
 T
 T
 T
 T
r$   