
    Xf              	           d dl Z d dlmZmZmZ d dlmZmZmZm	Z	 d dl
mZ d dlmZ d dlmZ i ddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(i d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJi dKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtZ e j        e          Z G du dve	j        j                  ZdS )w    N)IteratorListTuple)	constants	renderers
exceptions
interfaces)requirements)format_hints)
driverscan'   FILE_DEVICE_8042_PORT2   FILE_DEVICE_ACPI)   FILE_DEVICE_BATTERY   FILE_DEVICE_BEEP*   FILE_DEVICE_BUS_EXTENDER   FILE_DEVICE_CD_ROM   FILE_DEVICE_CD_ROM_FILE_SYSTEM0   FILE_DEVICE_CHANGER   FILE_DEVICE_CONTROLLER   FILE_DEVICE_DATALINK   FILE_DEVICE_DFS5   FILE_DEVICE_DFS_FILE_SYSTEM6   FILE_DEVICE_DFS_VOLUME   FILE_DEVICE_DISK   FILE_DEVICE_DISK_FILE_SYSTEM3   FILE_DEVICE_DVD	   FILE_DEVICE_FILE_SYSTEM:   FILE_DEVICE_FIPS4   FILE_DEVICE_FULLSCREEN_VIDEO
   FILE_DEVICE_INPORT_PORT   FILE_DEVICE_KEYBOARD/   FILE_DEVICE_KS9   FILE_DEVICE_KSEC   FILE_DEVICE_MAILSLOT-   FILE_DEVICE_MASS_STORAGE   FILE_DEVICE_MIDI_IN   FILE_DEVICE_MIDI_OUT+   FILE_DEVICE_MODEM   FILE_DEVICE_MOUSE   FILE_DEVICE_MULTI_UNC_PROVIDER   FILE_DEVICE_NAMED_PIPE   FILE_DEVICE_NETWORK   FILE_DEVICE_NETWORK_BROWSER   FILE_DEVICE_NETWORK_FILE_SYSTEM(   FILE_DEVICE_NETWORK_REDIRECTOR   FILE_DEVICE_NULL   FILE_DEVICE_PARALLEL_PORT   FILE_DEVICE_PHYSICAL_NETCARD   FILE_DEVICE_PRINTER   FILE_DEVICE_SCANNER   FILE_DEVICE_SCREEN7   FILE_DEVICE_SERENUM   FILE_DEVICE_SERIAL_MOUSE_PORT   FILE_DEVICE_SERIAL_PORT1   FILE_DEVICE_SMARTCARD.   FILE_DEVICE_SMB   FILE_DEVICE_SOUND   FILE_DEVICE_STREAMS   FILE_DEVICE_TAPE    FILE_DEVICE_TAPE_FILE_SYSTEM8   FILE_DEVICE_TERMSRVFILE_DEVICE_TRANSPORTFILE_DEVICE_UNKNOWNFILE_DEVICE_VDMFILE_DEVICE_VIDEOFILE_DEVICE_VIRTUAL_DISKFILE_DEVICE_WAVE_INFILE_DEVICE_WAVE_OUT)!   "   ,   #   $   %   &   c                       e Zd ZdZdZdZedeej	        j
                 fd            Zdee         fdZdej        fdZdS )	
DeviceTreezXListing tree based on drivers and attached devices in a particular windows memory image.)r   r   r   )r   r   r   returnc                 v    t          j        ddddg          t          j        dt          j        d          gS )	NkernelzWindows kernelIntel32Intel64)namedescriptionarchitecturesr   )r   r   r   )r   pluginversion)r
   ModuleRequirementPluginRequirementr   
DriverScan)clss    b/home/panchajanya/Development/work/volatility3/volatility3/framework/plugins/windows/devicetree.pyget_requirementszDeviceTree.get_requirementsT   sR     *,()4  
 *!**?  	
 		
    c           
   #     K   | j         j        | j        d                  }t          j                            | j         |j        |j                  D ]}	 	 |                                }nb# t          t          j        f$ rI t                              t          j        d|j        j        d           t%          j                    }Y nw xY wdt)          j        |j        j                  d|t%          j                    t%          j                    t%          j                    ffV  |                                D ]}	 |                                }nb# t          t          j        f$ rI t                              t          j        d|j        j        d           t%          j                    }Y nw xY wt2                              |j        d          }dt)          j        |j        j                  d	||t%          j                    |ffV  t9          |                                d
          D ]\  }}	 |                                }nb# t          t          j        f$ rI t                              t          j        d|j        j        d           t%          j                    }Y nw xY w|j        j                                         }	t2                              |j        d          }
|t)          j        |j        j                  d|||	|
ffV  ݐ# t          j        $ r7 t                              t          j        d|j        j        d           Y w xY wd S )Nr   zFailed to get Driver name : xr   DRVzFailed to get Device name : UNKNOWNr   DEVr   )startz$Failed to get Attached Device Name: ATTz3Invalid address identified in drivers and devices: )!contextmodulesconfigr   r   scan_drivers
layer_namesymbol_table_nameget_driver_name
ValueErrorr   InvalidAddressExceptionvolloglogr   LOGLEVEL_VVVVvoloffsetr   UnparsableValuer   HexNotApplicableValueget_devicesget_device_nameDEVICE_CODESget
DeviceType	enumerateget_attached_devicesDriverObject
DriverName
get_string)selfr   driverdriver_namedevicedevice_namedevice_typelevelattached_deviceattached_device_driver_nameattached_device_types              r   
_generatorzDeviceTree._generatora   s     %dk(&;< !+88L&+V-E
 
 W	 W	FT>"("8"8":":KK"J$FG > > >JJ!/Lvz7HLLL   #,";"="=KKK> $():;;#!466!466!466
 
 
 
 %0022 6 6FB&,&<&<&>&>&
(JK B B B

%3P6:;LPPP   '0&?&A&AB #/"2"263Di"P"PK (,VZ->??!''%8::'
 
 
 
 3<3355Q3 3 3  .F*9*I*I*K*KKK *J,NO F F F"JJ ) 7 eGZGa e e e   +4*C*E*EKKKF ,8CNNPP 4 0</?/?+6	0 0,
 " , 01B C C % + + ; 4
 
 
 
 
'36p 5   

+_&*J[___   eW	 W	s   A*)L*AC	LC		A5L?ELAF30L2F33BL8ILAJ,	)L+J,	,A,LAM M c           	          t          j        dt          j        fdt          fdt          fdt          fdt          fdt          fg|                                           S )NOffsetTyper   
DeviceNameDriverNameOfAttDevicer   )r   TreeGridr   r   strr   )r   s    r   runzDeviceTree.run   s]    !<+,s#s#(#.s# OO

 

 
	
r   N)__name__
__module____qualname____doc___required_framework_version_versionclassmethodr   r	   configurationRequirementInterfacer   r   r   r   r   r   r    r   r   r   r   N   s        bb"+H

j&>&S!T 

 

 

 [

[HUO [ [ [ [z
Y' 
 
 
 
 
 
r   r   )loggingtypingr   r   r   volatility3.frameworkr   r   r   r	   #volatility3.framework.configurationr
   volatility3.framework.renderersr   volatility3.plugins.windowsr   r   	getLoggerr   r   pluginsPluginInterfacer   r   r   r   <module>r      s  
  ( ( ( ( ( ( ( ( ( ( N N N N N N N N N N N N < < < < < < 8 8 8 8 8 8 2 2 2 2 2 2;';"; %; "	;
 *; $; 0; %; (; &; !; -; (; "; .;  !!;" )#; ;$ "%;& .';( ));* &+;,  -;. "/;0 &1;2 *3;4 %5;6 &7;8 #9;: #;;< 0=;> (?;@ %A;B -C;D 1E; ; ;F 0G;H "I;J +K;L .M;N %O;P %Q;R $S;T %U;V /W;X )Y;Z '[;\ !];^ #_;` %a;b "c;d .e;f %g; ;h (%!#*%&u; ; ;z 
	8	$	${
 {
 {
 {
 {
#3 {
 {
 {
 {
 {
r   