o
    jK#                     @   s6  d dl mZ d dl mZ d dlZd dlZd dlZ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mZ d d
lmZmZ edkrd dlZG dd dejZeej ejdddZejdddd ejddddd ejde ddd ejdddd ejd dd!d ejd"dd#d$d% e!d&Z"e"jd'dd(d)d% e"jd*dd+d e"jd,dd-d e"jd.dd/d0d% e"jd1dd2d3d% e"jd4g d5d6d7d8d9 e#ej$d:kre%  e&d: e' Z(e)e(j*e(j+ e(j,dur$ze(j,-d;\Z.Z/e0e1e.e1e/ W n e2y#   e3d< e&d: Y nw e
e(j4\Z5Z6Z7Z8e5du r4d=Z5e7d=krZe6d=krZe(j9du rZe(j:d>u rZe(j;du rZd d?l<m<Z< e<d@Z7e(j;durcde(_=e(j9durre(j9-dA\Z>Z?nd=Z>d=Z?zuee8e6e7e5e>e?e(j;de(j=e(j@dB
ZAeABejCejDZEeFeEZGeGHe(jIeeZJe(jKdCkreJL Me ne(jKdDkreJL Me eGN  eeJZOe(jPdu reOQ  ne(jPR D ]ZSedEeS dFdG eOTeS qeJN  eAU  W dS  e2y ZV z e3eWeV zeAU  W n   Y W Y dZV[VdS W Y dZV[VdS dZV[Vww dS )H    )division)print_functionN)logger)parse_target)version)NULL)wmi)DCOMConnection
COMVERSION)RPC_C_AUTHN_LEVEL_PKT_PRIVACYRPC_C_AUTHN_LEVEL_PKT_INTEGRITY__main__c                   @   sT   e Zd Z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d ZdS )WMIQUERYc                 C   s"   t j|  || _d| _d| _d S )NzWQL> z'[!] Press help for extra shell commands)cmdCmd__init__iWbemServicespromptintro)selfr    r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/../../../bin/wmiquery.pyr   -   s   
zWMIQUERY.__init__c                 C   s   t d d S )Na  
     lcd {path}                 - changes the current local directory to {path}
     exit                       - terminates the server process (and this session)
     describe {class}           - describes class
     ! {cmd}                    - executes a local shell cmd
     )printr   liner   r   r   do_help3   s   zWMIQUERY.do_helpc                 C   s   t | d S N)ossystemr   sr   r   r   do_shell;   s   zWMIQUERY.do_shellc              
   C   s   | d}|dd  dkr|d d }z| j|\}}|  |  W d S  tyP } zt jtj	kr>dd l
}|  tt| W Y d }~d S d }~ww )N
;r   )stripr   	GetObjectprintInformation
RemRelease	Exceptionlogging	getLoggerlevelDEBUG	traceback	print_excerrorstr)r   sClassiObject_er.   r   r   r   do_describe>   s   
zWMIQUERY.do_describec                 C   s&   |dkrt t  d S t| d S )N )r   r   getcwdchdirr   r   r   r   do_lcdL   s   zWMIQUERY.do_lcdc           
   
   C   s6  d}	 zd| ddd }| }|du r,tddd |D ]
}td| dd qt  d	}tddd |D ].}t|| d
 tu rV|| d
 D ]}t|dd qFtddd q4td|| d
  dd q4t  W n, ty } z t|ddk rt	 j
tjkrdd l}	|	   W Y d }~nd }~ww q|  d S )NTl       r   | endz%s |Fvaluez |S_FALSE)NextgetPropertiesr   typelistr)   r1   findr*   r+   r,   r-   r.   r/   r(   )
r   iEnumprintHeaderpEnumrecordcolkeyitemr5   r.   r   r   r   
printReplyR   s<   
zWMIQUERY.printReplyc              
   C   s   | d}|dd  dkr|d d }z| j| d}| | |  W d S  tyB } ztt| W Y d }~d S d }~ww )Nr"   r#   r$   )	r%   r   	ExecQueryrN   r(   r)   r*   r0   r1   )r   r   iEnumWbemClassObjectr5   r   r   r   defaultq   s   

zWMIQUERY.defaultc                 C   s   d S r   r   )r   r   r   r   	emptyline|      zWMIQUERY.emptylinec                 C   s   dS )NTr   r   r   r   r   do_exit   rS   zWMIQUERY.do_exitN)__name__
__module____qualname__r   r   r!   r6   r:   rN   rQ   rR   rT   r   r   r   r   r   ,   s    r   Tz[Executes WQL queries and gets object descriptions using Windows Management Instrumentation.)add_helpdescriptiontargetstorez6[[domain/]username[:password]@]<targetName or address>)actionhelpz
-namespacez//./root/cimv2z'namespace name (default //./root/cimv2))r\   rQ   r]   z-filerz4input file with commands to execute in the WQL shell)rD   r]   z-debug
store_truezTurn DEBUG output ONz-tsz&Adds timestamp to every logging outputz-com-versionzMAJOR_VERSION:MINOR_VERSIONz<DCOM version, format is MAJOR_VERSION:MINOR_VERSION e.g. 5.7)r\   metavarr]   authenticationz-hasheszLMHASH:NTHASHz$NTLM hashes, format is LMHASH:NTHASHz-no-passz&don't ask for password (useful for -k)z-kzUse Kerberos authentication. Grabs credentials from ccache file (KRB5CCNAME) based on target parameters. If valid credentials cannot be found, it will use the ones specified in the command linez-aesKeyzhex keyz<AES key to use for Kerberos Authentication (128 or 256 bits)z-dc-ipz
ip addresszoIP Address of the domain controller. If ommited it use the domain part (FQDN) specified in the target parameterz-rpc-auth-level)	integrityprivacyrQ   ?rQ   zdefault, integrity (RPC_C_AUTHN_LEVEL_PKT_INTEGRITY) or privacy (RPC_C_AUTHN_LEVEL_PKT_PRIVACY). For example CIM path "root/MSCluster" would require privacy level by default))choicesnargsrQ   r]   r;   .z>Wrong COMVERSION format, use dot separated integers e.g. "5.7"r7   F)getpassz	Password::)oxidResolver
doKerberoskdcHostrc   rb   zWQL> %sr=   r>   )X
__future__r   r   argparsesysr   r*   impacket.examplesr   impacket.examples.utilsr   impacketr   impacket.dcerpc.v5.dtypesr   impacket.dcerpc.v5.dcomr   impacket.dcerpc.v5.dcomrtr	   r
   impacket.dcerpc.v5.rpcrtr   r   rU   r   r   r   r   BANNERArgumentParserparseradd_argumentFileTypeadd_argument_groupgrouplenargv
print_helpexit
parse_argsoptionsinittsdebugcom_versionsplitmajor_versionminor_versionset_default_versionintr)   r0   rZ   domainusernamepasswordaddresshashesno_passaesKeyrh   klmhashnthashdc_ipdcomCoCreateInstanceExCLSID_WbemLevel1LoginIID_IWbemLevel1Login
iInterfaceIWbemLevel1LoginiWbemLevel1Login	NTLMLogin	namespacer   rpc_auth_levelget_dce_rpcset_auth_levelr(   shellfilecmdloop	readlinesr   onecmd
disconnectr5   r1   r   r   r   r   <module>   s   

V



8

 