o
    Žõ±j:  ã                   @   s*   d dl mZ d dlmZ G dd„ dƒZdS )é    )Úlogger)Úhexdumpc                   @   sL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )ÚSYSTEMc                 C   s   || _ d | _d | _d | _d S ©N)ÚhiveÚcurrentcontrolÚbootkeyÚmachinename)ÚselfÚsystem_hive© r   ú’/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/pypykatz/registry/system/system.pyÚ__init__   s   
zSYSTEM.__init__c                 C   sJ   t  d¡ | jd ur| jS | j d¡d }d| | _t  d| j ¡ | jS )Nz([SYSTEM] determining current control setzSelect\Currenté   zControlSet%03dz%[SYSTEM] current control set name: %s)r   Údebugr   r   Ú	get_value)r
   Úccsr   r   r   Úget_currentcontrol   s   


zSYSTEM.get_currentcontrolc                 C   sº   t  d¡ | jd ur| jS | jd u r|  ¡  g d¢}d}dD ]}|| j d| j|f ¡7 }qt |¡}d| _t	t
|ƒƒD ]}|  j||| || d … 7  _q<t  d| j ¡  ¡ | jS )	Nz[SYSTEM] get_bootkey invoked)é   é   é   é   é   é	   é   é   r   é   r   é   é   é
   é   é   Ú )ÚJDÚSkew1ÚGBGÚDataz%s\Control\Lsa\%só    r   z[SYSTEM] bootkey: %s)r   r   r   r   r   r   Ú	get_classÚbytesÚfromhexÚrangeÚlenÚhex)r
   Ú
transformsÚbootkey_obfÚkeyÚir   r   r   Úget_bootkey%   s   



$zSYSTEM.get_bootkeyc                 C   s   |   ¡  |  ¡  |  ¡  d S r   )r   r2   Úget_machine_name)r
   r   r   r   Úget_secrets9   s   zSYSTEM.get_secretsc                 C   sZ   | j d u r	|  ¡  zd| j |f }| j |¡d }| d¡}| dd¡}|W S    Y d S )Nz%s\Services\%s\ObjectNamer   ú	utf-16-leú r"   )r   r   r   r   ÚdecodeÚreplace)r
   Úservice_namer0   Úvalr   r   r   Úget_service_user>   s   

zSYSTEM.get_service_userc              
   C   sº   | j d u r	|  ¡  z:| jd ur| jW S d| j  }| j |¡}t|d tƒr.|d  d¡| _n|d | _| jd ur@| j dd¡| _| jW S  t	y\ } zt
d| ƒ W Y d }~d S d }~ww )Nz1%s\Control\ComputerName\ComputerName\ComputerNamer   r5   r6   r"   z#[SYSTEM] get_machine_name error: %s)r   r   r	   r   r   Ú
isinstancer)   r7   r8   Ú	ExceptionÚprint)r
   r0   r:   Úer   r   r   r3   K   s$   




€þzSYSTEM.get_machine_namec                 C   s   i }| j |d< | j|d< |S )NÚCurrentControlSetÚBootKey)r   r   ©r
   Útr   r   r   Úto_dict`   s   

zSYSTEM.to_dictc                 C   s(   d}|d| j  7 }|d| j ¡  7 }|S )Nz3============== SYSTEM hive secrets ==============
zCurrentControlSet: %s
zBoot Key: %s
)r   r   r-   rB   r   r   r   Ú__str__f   s   zSYSTEM.__str__N)Ú__name__Ú
__module__Ú__qualname__r   r   r2   r4   r;   r3   rD   rE   r   r   r   r   r      s    
r   N)Úpypykatz.registryr   Úpypykatz.commons.commonr   r   r   r   r   r   Ú<module>   s   