
    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y)    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y)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   sb     **6()4
 ++3+;+;Y **U[[)
 	
    c                      y)NF )_s    r"   <lambda>zKauth_scopes.<lambda>,   s    r$   contextkernel_module_namefilter_funcreturnc              #      K   |j                   |   }|j                  d      }t        j                  j	                  |d      D ]  } ||      r|  yw)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'   sV      !34**>:%%00C 	Eu%	s   AAAc           
   #   6  K   | j                   j                  | j                  d      }t        j                  j                  | j                   | j                  d         }t        j                  j                  | j                   |j                  ||      }| j                  | j                   | j                  d         D ]  }|j                  }|dk(  rt        j                  j                  | j                   ||| j                  d         \  }}t        j                  |j                  d      }d|t!        j"                  |j$                        t'        |j)                         D 	cg c]  }	|	 c}	      t!        j"                  |      ||ff  y c c}	w w)Nr   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
identifierls
             r"   
_generatorzKauth_scopes._generator:   sX    %%dkk(&;<{{''dkk(6KL##@@LL&++VT
 ++DLL$++h:OP 	E((H1}'*'7'7'M'Mh$++h2G($K !2253F3FLJ  $$U^^4E$7$7$9:q:; $$X.
 
	  ;s   E%F'	F0)Fc           	          t        j                  dt        fdt        j                  fdt
        fdt        j                  fdt        fdt        fg| j                               S )NNameIData	ListenerszCallback AddressModuleSymbol)r   TreeGridstrr	   r@   intrL   )rD   s    r"   runzKauth_scopes.runZ   s_    !!,**+c"#\%5%5633 OO

 
	
r$   N)__name__
__module____qualname____doc___version_required_framework_versionclassmethodr#   r   r)   ContextInterfacerT   r   rU   boolr   objectsObjectInterfacer5   rL   rV   r&   r$   r"   r   r      s    -H"+
 
 
 .=	##44   seTk*	
 
*$$4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   	getLoggerrW   vollogpluginsPluginInterfacer   r&   r$   r"   <module>rn      sK     % 7 < 1 8 - )			8	$T
:%%55 T
r$   