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 qt| }| I d H \}}|d urtdt|  d S t|}|dI d H \}}|d urt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rt| nt| t| t| qq |tj+kr|'|I d H \}}|d urt| q d}	 |,||I d H \}}|d7 }|d urt| nt| qːq d S )Nr   zRegistry manipulation via SMB)descriptionz-vz	--verbosecount)actiondefaulturlzConnection 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
