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   