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 )N2SYSTEM\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   	[