o
    Žõ±j]  ã                   @   s‚   d dl Z d dlmZ d dlZd dlmZ d dlT d dlmZ d dl	m
Z
 G dd„ dƒZG d	d
„ d
ƒZedkr?eƒ Ze ¡ ZdS dS )é    N)Úlogger)ÚLocalWindowsAPI)Ú*)ÚLiveRegistryHive)ÚSC_MANAGER_ENUMERATE_SERVICEc                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚUserc                 C   s   || _ || _|| _d S ©N)ÚusernameÚdomainÚsid)ÚselfÚnamer
   r   © r   ú’/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/pypykatz/commons/winapi/machine.pyÚ__init__   s   
zUser.__init__c                 C   s    dt | jƒt | jƒt | jƒf S )Nz%s:%s:%s)Ústrr
   r	   r   )r   r   r   r   Ú__str__   s    zUser.__str__N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r      s    r   c                   @   sR   e Zd ZdZd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 )ÚLiveMachinez
	
	Nc                 C   s$   |d ur|nt ƒ | _d | _d | _d S r   )r   Úapir
   Úhostname)r   r   r   r   r   r      s   
zLiveMachine.__init__c                 C   ó0   | j d u rt tjd¡}t |d¡d | _ | j S )Nú2SYSTEM\CurrentControlSet\Services\Tcpip\ParameterszNV Hostnamer   )r   ÚwinregÚOpenKeyÚHKEY_LOCAL_MACHINEÚQueryValueEx©r   Úparamsr   r   r   Úget_hostname!   ó   
zLiveMachine.get_hostnamec                 C   r   )Nr   ÚDomainr   )r
   r   r   r   r   r   r   r   r   Ú
get_domain'   r"   zLiveMachine.get_domainc           	      C   sl   | j j ¡ }| j j td|¡}| j j |t¡}| j j |¡}| j j 	|¡}| j j 
d |¡\}}}t|||ƒS )NF)r   Úkernel32ÚGetCurrentProcessIdÚOpenProcessÚPROCESS_QUERY_INFORMATIONÚadvapi32ÚOpenProcessTokenÚTOKEN_MANIP_ACCESSÚGetTokenInformation_sidÚConvertSidToStringSidÚLookupAccountSidr   )	r   ÚpidÚproc_handleÚtoken_handleÚptr_sidÚsid_strr   r
   Ú
token_typer   r   r   Úget_current_user-   s   zLiveMachine.get_current_userc                 C   sx   t  d¡ tdƒ}i }| d¡D ])}| d¡s| d¡rq| jj | 	¡ ¡}| jj 
d |¡\}}}t|||ƒ||< q|S )NzListing SIDs from registry...ÚSOFTWAREz/Microsoft\Windows NT\CurrentVersion\ProfileListÚ_ClassesÚ.)r   Údebugr   Úenum_keyÚendswithÚ
startswithr   r)   ÚConvertStringSidToSidÚencoder.   r   )r   Úsoftware_hiveÚusersr3   r2   r   r
   r4   r   r   r   Ú
list_users6   s   
zLiveMachine.list_usersc                 c   sL   � t  d¡ | jjjtd�}| jj |¡D ]}|jjdkrq|jjV  qd S ©NzListing services with pid...)ÚdwDesiredAccessr   )	r   r9   r   r)   ÚOpenSCManagerr   ÚEnumServicesStatusExÚServiceStatusProcessÚdwProcessId©r   ÚhsrvmgrÚserviceattrr   r   r   Úlist_services_pid]   s   €
ýzLiveMachine.list_services_pidc                 c   sV   � t  d¡ | jjjtd�}| jj |¡D ]}|jjdkrq|j	|j
|jjfV  qd S rB   )r   r9   r   r)   rD   r   rE   rF   rG   ÚlpServiceNameÚlpDisplayNamerH   r   r   r   Úlist_servicese   s   €
ýzLiveMachine.list_servicesc                 c   s(   � | j j ¡ D ]
}|dkrq|V  qd S )Nr   )r   ÚpsapiÚEnumProcesses)r   r/   r   r   r   Úlist_all_pidsm   s   €ýzLiveMachine.list_all_pidsr   )r   r   r   Ú__doc__r   r!   r$   r5   rA   rK   rN   rQ   r   r   r   r   r      s    
	'r   Ú__main__)ÚplatformÚpypykatzr   r   Ú-pypykatz.commons.winapi.local.localwindowsapir   Ú!pypykatz.commons.winapi.constantsÚ-pypykatz.commons.readers.registry.live.readerr   Ú4pypykatz.commons.winapi.local.function_defs.advapi32r   r   r   r   ÚurN   Útr   r   r   r   Ú<module>   s   	[þ