o
    Žõ±j\  ã                   @   s�   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlZG dd	„ d	ejƒZd
d„ Zdd„ ZedkrFeƒ  dS dS )é    N)Úlogger)ÚSMBConnectionParams)ÚSMBConnectionFactory)Ú
SMBMachine)ÚServiceStatus)Úaiocmdc                   @   s   e Zd ZdZdZdZdS )ÚSMBREG_COMMANDÚRÚEVÚEKN)Ú__name__Ú
__module__Ú__qualname__ÚREADÚ	ENUMVALUEÚENUMKEY© r   r   ú‰/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/aiosmb/examples/smbreg.pyr      s    r   c               
   Ã   sÜ  �dd l } dd l}dd l}| jdd�}t |¡ |jddddd� |jdd	d
� |jdddd� | ¡ }|jdkr?t	 
|j¡ |jdkr[tdƒ t	 
d¡ t ¡  d¡ |j|jd� g }d }|jd urh|j}n'zt |¡}W n tyŽ } ztdt|ƒ ƒ | d¡ W Y d }~nd }~ww |jD ]}| dd¡\}	}
t|	 ¡ ƒ}	| |	|
f¡ q’t |¡ ¡ }| ¡ I d H \}}|d urÈtdt|ƒ ƒ d S t|ƒ}| d¡I d H \}}|d urâtd| ƒ d S |t j!k�r
t	 "d¡ | #d¡I d H \}}|d u�rt|ƒ d S t $d¡I d H  | %¡ I d H \}}|d u�rt|ƒ d S |D ]Ë\}}|tj&k�rd| dd¡\}}| '|¡I d H \}}|d u�rGt|ƒ �q | (||¡I d H \}}}|d u�r^t|ƒ �q t|ƒ �q |tj)k�r­| '|¡I d H \}}|d u�rt|ƒ �q d}	 | *||¡I d H \}}}}|d7 }|d u�r�t|ƒ nt|ƒ t|ƒ t|ƒ �q‚�q |tj+k�rê| '|¡I d H \}}|d u�rÈt|ƒ �q d}	 | ,||¡I d H \}}|d7 }|d u�rät|ƒ nt|ƒ �qË�q d S )Nr   zRegistry manipulation via SMB)Údescriptionz-vz	--verboseÚcount)ÚactionÚdefaultÚurlz—Connection URL base, target can be set to anything. Owerrides all parameter based connection settings! Example: "smb2+ntlm-password://TEST\victim@test")ÚhelpÚcommandsÚ*z}Commands in the following format: "r:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest:Negotiate")Únargsr   é   é   zsetting deepdebugT)Úlevelz>Either URL or all connection parameters must be set! Error: %sú:zLogin failed! Reason: %sÚRemoteRegistryzCheck service status error! %sz0RemoteRegistry is not running! Starting it now..é   )-ÚargparseÚsysÚloggingÚArgumentParserr   Úextend_parserÚadd_argumentÚ
parse_argsÚverboser   ÚsetLevelÚDEBUGÚprintÚasyncioÚget_event_loopÚ	set_debugÚbasicConfigr   Ú	ExceptionÚstrÚexitr   Úsplitr   ÚupperÚappendr   Úfrom_urlÚget_connectionÚloginr   Úcheck_service_statusr   ÚRUNNINGÚinfoÚenable_serviceÚsleepÚ
get_regapir   ÚOpenRegPathÚ
QueryValuer   Ú	EnumValuer   ÚEnumKey)r#   r$   r%   ÚparserÚargsr   Úsmb_urlÚeÚcmdÚcÚpathÚ
connectionÚ_ÚerrÚmachineÚregistry_srv_statusÚresÚreg_apiÚtargetÚregpathÚnameÚhkeyÚval_typeÚvalueÚiÚ
value_nameÚ
value_typeÚ
value_datar   r   r   Úamain   sÄ   €




€þ







ø

ù€Ûr]   c                   C   s   t  tƒ ¡ d S )N)r.   Úrunr]   r   r   r   r   Úmain‡   s   r_   Ú__main__)r.   Úaiosmbr   Ú aiosmb.commons.connection.paramsr   Ú!aiosmb.commons.connection.factoryr   Ú!aiosmb.commons.interfaces.machiner   Úaiosmb.dcerpc.v5.common.servicer   Úaiosmb.external.aiocmd.aiocmdr   ÚenumÚEnumr   r]   r_   r   r   r   r   r   Ú<module>   s   u
ÿ