o
    Žõ±j¾  ã                   @   s   d dl Z G dd„ dƒZdS )é    Nc                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚRemoteCMDHelperc                 C   s   dg| _ g | _d S )NÚsmbapi)Úlive_keywordsÚkeywords)Úself© r   úŒ/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/pypykatz/remote/cmdhelper.pyÚ__init__
   s   
zRemoteCMDHelper.__init__c                 C   sÌ  t jdd�}|jdd�}d|_d|_|jddd�}|jd	d
dd� |jdddd� |jddgd� |jdddd� |jddddd� |jdtdd� |jdd
dd� |jdd d�}|jd	d
dd� |jdddd� |jddgd� |jdddd� |jddddd� |jdtdd� |jdd
dd� |jd!d"d�}|jd	d
dd� |jdddd� |jddgd� |jdddd� |jddddd� |jdtdd� |jdd
dd� |jd#d$dd%d� |jd&d'|gd(� d S ))NF)Úadd_helpzSMB via Windows API)ÚhelpTÚ
livesmbapiÚsharezRemote share relted operationsz--jsonÚ
store_truez Print credentials in JSON format)Úactionr   z-oz	--outfilez[Save results to file (you can specify --json for json file, or text format will be written)ÚopÚenum)Úchoicesz-fz--target-filezTargets file, one per linez-tz--targetÚappendzTarget to check. Stackable.z	--timeoutzPre-check timeout.)Útyper   z--disable-pre-checkz_Disables pre-check to see if the remote destination is alive. Will make enumeration take years!Úsessionz'Remote user sessions related operationsÚ
localgroupz$Remote localgroup related operationsz-gz--groupz'Localgroup name to look for. Stackable.r   z$SMB operations using the windows API)r   Úparents)ÚargparseÚArgumentParserÚadd_subparsersÚrequiredÚdestÚ
add_parserÚadd_argumentÚint)r   ÚparserÚlive_parserÚlive_subcommand_parserÚlive_smbapi_subparsersÚlive_smbapi_shareÚlive_smbapi_sessionÚlive_smbapi_localgroupr   r   r   Úadd_args   s<   zRemoteCMDHelper.add_argsc                 C   sb   t | jƒdkr|j| jv r|  |¡ t | jƒdkr+|jdkr-|j| jv r/|  |¡ d S d S d S d S )Nr   Úlive)Úlenr   ÚcommandÚrunr   ÚmoduleÚrun_live©r   Úargsr   r   r   Úexecute;   s
   
$ÿzRemoteCMDHelper.executec                 C   ó   d S ©Nr   )r   Úresultsr/   r   r   r   Úprocess_resultsB   ó   zRemoteCMDHelper.process_resultsc                 C   s  |j dkrS|jdkrQddlm} |ƒ }|jr| |j¡ |jr%| |j¡ t|j	ƒdkr0t
dƒ‚|jr7|j|_d|_|jr@d|_|j|_|jrK|j|_| ¡  d S d S |j dkr¦|jdkr¤dd	lm} |ƒ }|jro| |j¡ |jrx| |j¡ t|j	ƒdkrƒt
dƒ‚|jrŠ|j|_d|_|jr“d|_|j|_|jrž|j|_| ¡  d S d S |j d
k�r|jdk�rddlm} |ƒ }|jrÄ| |j¡ |jrÍ| |j¡ t|j	ƒdkrØt
dƒ‚|jrß|j|_g d¢|_|jrë|j|_d|_|jrôd|_|j|_|jrÿ|j|_| ¡  d S d S d S )Nr   r   r   )ÚShareEnumeratorzNo targets loaded!TFr   )ÚSessionMonitorr   )ÚLocalGroupEnumerator)zRemote Desktop UsersÚAdministratorszDistributed COM Users)r   r   Ú%pypykatz.remote.live.share.enumeratorr6   Útarget_fileÚload_targets_fileÚtargetÚload_tagetsr)   ÚhostsÚ	ExceptionÚtimeoutÚ	pre_checkÚdisable_pre_checkÚjsonÚto_jsonÚoutfileÚout_filer+   Ú'pypykatz.remote.live.session.enumeratorr7   Ú*pypykatz.remote.live.localgroup.enumeratorr8   ÚgroupsÚgroup)r   r/   r6   Úser7   r8   r   r   r   r-   E   s€   

ç

è
âzRemoteCMDHelper.run_livec                 C   r1   r2   r   r.   r   r   r   r+   �   r5   zRemoteCMDHelper.runN)	Ú__name__Ú
__module__Ú__qualname__r	   r'   r0   r4   r-   r+   r   r   r   r   r   	   s    -Xr   )r   r   r   r   r   r   Ú<module>   s   