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/asystem.pyÚ__init__   s   
zSYSTEM.__init__c                 Ã   sV   �t  d¡ | jd ur| jS | j d¡I d H }|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                 Ã   sÈ   �t  d¡ | jd ur| jS | jd u r|  ¡ I d H  g d¢}d}dD ]}|| j d| j|f ¡I d H 7 }q"t |¡}d| _t	t
|ƒƒD ]}|  j||| || d … 7  _qCt  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                 Ã   s0   �|   ¡ I d H  |  ¡ I d H  |  ¡ I d H  d S r   )r   Úget_machine_namer2   )r
   r   r   r   Úget_secrets:   s   €zSYSTEM.get_secretsc                 Ã   sh   �| j d u r|  ¡ I d H  z d| j |f }| j |¡I d H }|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              
   Ã   sÈ   �| j d u r|  ¡ I d H  z=| jd ur| jW S d| j  }| j |¡I d H }t|d tƒr5|d  d¡| _n|d | _| jd urG| j dd¡| _| jW S  t	yc } 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   M   s&   €




€þzSYSTEM.get_machine_namec                 C   s   i }| j |d< | j|d< |S )NÚCurrentControlSetÚBootKey)r   r   ©r
   Útr   r   r   Úto_dictc   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__i   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   