o
    jj                     @   sN   d dl mZ d dlZd dlZd dlZ	 G dd dZg ZdZG dd dZdS )    loggerNc                   @   s   e Zd Zdd ZdS )LDAPCMDArgsc                 C   s    d | _ d| _d| _ddg| _d S )Nr   Flogini)urlverboseno_interactivecommandsself r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/pypykatz/ldap/cmdhelper.py__init__   s   zLDAPCMDArgs.__init__N)__name__
__module____qualname__r   r   r   r   r   r      s    r   z>FOR AVAILABLE SUBCOMMANDS TYPE "... ldap help" insted of "-h" c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )LDAPCMDHelperc                 C   s   dg| _ dg| _d S )Nldap)live_keywordskeywordsr   r   r   r   r      s   zLDAPCMDHelper.__init__c           
      C   s   |j ddd}| }d|_d|_|j ddd}|jdd	d
ddd |jddd |jdddd tjdd}|jdd}d|_d|_|j ddtd}|jddd |jdddgddd  |jdd	d
ddd |jdddd |j dd!|gd"}	d S )#Nr   zLDAP related commands)helpTldap_moduleclientzHLDAP client. Use "help" instead of "-h" to get the available subcommandsz-vz	--verbosecountr   zVerbosity, can be stacked)actiondefaultr   r   zLDAP connection stringr
   *z!OPTIONAL! Takes a series of commands which will be executed until error encountered. If the command is 'i' is encountered during execution it drops back to interactive shell.)nargsr   F)add_helpz7LIVE LDAP commands work under the current user context.liveldapcommandzOLDAP (live) client. Use "help" instead of "-h" to get the available subcommands)r   epilogz--hostzSpecify a custom logon server.z--authmethodntlmkerberosz)Authentication method to use during login)choicesr   r   zLDAP (live) commands)r   parents)
add_parseradd_subparsersrequireddestadd_argumentargparseArgumentParsermsldap_epilog)
r   parserlive_parser
ldap_groupldap_subparsersldap_client_grouplive_subcommand_parserlive_ldap_subparserslive_client_parser
live_groupr   r   r   add_args    s$   zLDAPCMDHelper.add_argsc                 C   sT   |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)commandr   runlenr   modulerun_live)r   argsr   r   r   execute:   s
   
$zLDAPCMDHelper.executec                 C   sJ  ddl m} ddlm} ddlm} | }|d }|jd ur!|j}d|j|d |d |f }|jdkr9|	d	 n|jd
krLt
d|  |j	tjd nd|j }|j	|d |jdkrt }	||	_|j|	_|jd urt|jdkrg |	_|jd dkrdg|	_n|jd dkr|	jd |jD ]}
|	j|
 qt||	 d S d S )Nr   r   amain)get_logon_infologonserverzldap+sspi-%s://%s\%s@%sdomainusernamed      z*Using the following auto-generated URL: %s)level   r   r   r   )msldapr   msldap.examples.msldapclientrA   winacl.functions.highlevelrB   host
authmethodr   setLevelprintloggingINFOr    r   r   r
   r;   appendasyncior:   )r   r>   
ldaploggerrA   rB   inforC   ldap_urlrH   lar9   r   r   r   r=   B   s:   






zLDAPCMDHelper.run_livec                 C   s   ddl m} |jdkrSt }|j|_|j|_|jd urJt|jdkrJg |_|jd dkr1dg|_n|jd dkr>|jd |jD ]}|j| qAt	
|| d S d S )Nr   r@   r   r   r   )rK   rA   r   r   r   r   r
   r;   rS   rT   r:   )r   r>   rA   rX   r9   r   r   r   r:   j   s   


zLDAPCMDHelper.runN)r   r   r   r   r7   r?   r=   r:   r   r   r   r   r      s    (r   )	pypykatzr   rT   r+   rQ   r   msldap_subcommand_listr-   r   r   r   r   r   <module>   s   