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    