o
    j7                     @   s*   d dl Z d dlZd dlT G dd dZdS )    N)*c                   @   sZ   e Zd ZejfddZdd Zdd Zddd	Zdd
dZ	dd Z
dddZdddZdS )LiveRegistryHivec                 C   s   || _ || _d S N)	hive_nameroot)selfr   r    r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/pypykatz/commons/readers/registry/live/reader.py__init__   s   
zLiveRegistryHive.__init__c                 C      d S r   r   r   r   r   r	   close      zLiveRegistryHive.closec                 C   r   r   r   r   r   r   r	   setup   r   zLiveRegistryHive.setupTc              
   C   s   | j d u r	|   |dks|d u r| j S | jd | }ztj| j |tjd}W |S  tyA } z|du r6|W Y d }~d S d }~ww )N \)accessT)r   r   r   winreg	OpenKeyExKEY_READ	Exception)r   key_paththrowkeyer   r   r	   find_key   s   
zLiveRegistryHive.find_keyc              
   C   s   | j d u r	|   | ||}g }d}	 zt||}|| |d7 }W n tyD } zt|tr>|j	dkr>W Y d }~|S |d }~ww qNr   T   i  )
r   r   r   r   EnumKeyappendOSError
isinstanceWindowsErrorwinerror)r   r   r   r   namesinamer   r   r   r	   enum_key!   s$   


zLiveRegistryHive.enum_keyc              
   C   s   | j d u r	|   g }d}	 zt||}||d   |d7 }W n tyB } zt|tr<|j	dkr<W Y d }~|S |d }~ww qr   )
r   r   r   	EnumValuer   encoder    r!   r"   r#   )r   r   valuesr%   valuer   r   r   r	   list_values6   s"   

zLiveRegistryHive.list_valuesc                 C   sf   | j d u r	|   t|}t|}|dkrd}| ||}|d u r%d S t||}|d |d fS )Ndefaultr   r   r   )r   r   ntpathdirnamebasenamer   r   QueryValueEx)r   
value_pathr   r   
value_namer   resr   r   r	   	get_valueI   s   


zLiveRegistryHive.get_valuec                 C   sT   | j d u r	|   tj}| jd | }|dD ]}t||}qt|}|d  S )Nr   r   )	r   r   r   HKEY_LOCAL_MACHINEr   split
RegOpenKeyRegQueryInfoKeydecode)r   r   r   pkeyr&   kir   r   r	   	get_classX   s   
zLiveRegistryHive.get_classN)T)__name__
__module____qualname__r   r6   r
   r   r   r   r'   r,   r5   r=   r   r   r   r	   r      s    


r   )r   r.   ,pypykatz.commons.readers.local.common.winregr   r   r   r   r	   <module>   s    