o
    àý°jn  ã                
   @   s:  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mZmZmZ d dlmZ G dd	„ d	ƒZG d
d„ dƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ dƒZedkr›eejƒ ejdddZejdddd ejddd d ejd!dd"d ejd#d$dd%Zej d&d'd(Z!e!jd)dd*d+d, e!jd-dd*d.d, e!jd/dd*d0d, e!jd1dd2d3d, e!jd4dd*d5d, e!jd6dd*d7d, ej d8d9d(Z"e"jd)dd*d:d, e"jd-dd*d;d, e"jd/dd*d<d, e"jd1dd2d3d, e"jd4dd*d5d, e"jd6dd*d7d, ej d=d>d(Z#e#jd)dd*d?d, e#jd@ddAdBd, e#jdCddAdDd, ej dEdFd(Z$e$jd)dd*dGd, e$jd@ddAdBd, e$jdCddAdDd, e %dH¡Z&e&jdIddJdKd, e&jdLddMd e&jdNddOd e&jdPddQdRd, e %dS¡Z&e&jdTddUdVd, e&jdWddUdXd, e&jdYdZd[gd\d[d]d^d_ e'e j(ƒd`kr¶e )¡  e  *d`¡ e +¡ Z,e-e,daƒrÄe,j.sÎe-e,dbƒrÜe,j/rÜe,j0sÜe 1dc¡ e  *d`¡ e-e,ddƒrúe,j2rúe-e,ddƒrðe,j3súe 1de¡ e  *d`¡ e 4e,j5e,j6¡ e	e,j7ƒ\Z8Z9Z:Z;e,j<du re;e,_<e8du rdfZ8e:dfkrAe9dfkrAe,j=du rAe,j>dgu rAe,j?du rAd dhl@m@Z@ e@diƒZ:e,j?durJde,_Ae,j=durYe,j= Bdj¡\ZCZDndfZCdfZDee8e9e:e,ƒZEz
eE Fe;e,j<¡ W dS  eGyš ZH ze I¡ jJejKkrˆd dlLZLeL M¡  e 1eNeHƒ¡ W Y dZH[HdS dZH[Hww dS )ké    N)Údatetime)Úversion)Úlogger)Úparse_target)Ú	transportÚsamrÚlsadÚlsat)ÚSMBConnectionc                   @   ó,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚLsaTranslatorc                 C   s   || _ d| _d | _|  ¡  d S )Nzncacn_np:445[\pipe\lsarpc])Ú_smbConnectionÚ!_LsaTranslator__stringBindingSamrÚ	_lsat_dceÚConnect©ÚselfÚsmbConnection© r   úƒ/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/../../../bin/net.pyÚ__init__2   s   zLsaTranslator.__init__c                 C   ó>   t  | j¡}| | j¡ | ¡ | _| j ¡  | j t	j
¡ d S ©N)r   ÚDCERPCTransportFactoryr   Úset_smb_connectionr   Úget_dce_rpcr   ÚconnectÚbindr	   ÚMSRPC_UUID_LSAT©r   Úrpcr   r   r   r   8   ó
   

zLsaTranslator.Connectc                 C   sD   t  | j¡d }t | j||f¡}t  | j|¡ |d d d d S )NÚPolicyHandleÚTranslatedSidsÚSidsr   ÚSid)r   ÚhLsarOpenPolicy2r   r	   ÚhLsarLookupNames3Ú
hLsarClose)r   ÚnameÚpolicyHandleÚrespr   r   r   Ú
LookupName?   s   zLsaTranslator.LookupNamec                 C   s:   t  | j¡d }t | j||¡}t  | j|¡ |d d S )Nr"   ÚTranslatedNamesÚNames)r   r&   r   r	   ÚhLsarLookupSids2r(   )r   Úsid_listr*   r+   r   r   r   Ú
LookupSidsE   s   zLsaTranslator.LookupSidsN)Ú__name__Ú
__module__Ú__qualname__r   r   r,   r1   r   r   r   r   r   1   s
    r   c                   @   sh   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d„Zdd„ Zddd„ZdS )Ú
SamrObjectc                 C   s*   || _ d| _d | _d | _d | _|  ¡  d S )Nzncacn_np:445[\pipe\samr])r   Ú_SamrObject__stringBindingSamrÚ_dceÚ_domain_handleÚ_translatorÚ_connectr   r   r   r   r   M   s   zSamrObject.__init__c                 C   r   r   )r   r   r6   r   r   r   r7   r   r   r   ÚMSRPC_UUID_SAMRr   r   r   r   r:   U   r!   zSamrObject._connectc                 C   ó"   | j d u rt| jƒ| _ | j  |¡S r   )r9   r   r   r,   )r   Úusernamer   r   r   Ú_get_user_sid\   ó   
zSamrObject._get_user_sidc                 C   r<   r   )r9   r   r   r1   )r   r0   r   r   r   Ú_resolve_sida   r?   zSamrObject._resolve_sidc                 C   s*   t  | j||f¡}|d d d d }|S )NÚRelativeIdsÚElementr   ÚData)r   ÚhSamrLookupNamesInDomainr7   )r   Údomain_handleÚobject_nameÚresponseÚ	object_idr   r   r   Ú_get_object_ridf   s   zSamrObject._get_object_ridc                 C   ó(   |   ||¡}t | j|tj|¡}|d S ©NÚ
UserHandle)rI   r   ÚhSamrOpenUserr7   ÚMAXIMUM_ALLOWED)r   rE   r=   Úuser_ridrG   r   r   r   Ú_get_user_handlek   ó   zSamrObject._get_user_handlec                 C   rJ   )NÚGroupHandle)rI   r   ÚhSamrOpenGroupr7   rN   )r   rE   Ú
alias_nameÚ	group_ridrG   r   r   r   Ú_get_group_handlep   rQ   zSamrObject._get_group_handlec                 C   rJ   )NÚAliasHandle)rI   r   ÚhSamrOpenAliasr7   rN   )r   rE   rT   Ú	alias_ridrG   r   r   r   Ú_get_alias_handleu   rQ   zSamrObject._get_alias_handleFc                 C   s   | j d u r|  |¡| _ | j S r   )r8   Ú_SamrObject__get_domain_handle)r   Úbuiltinr   r   r   Ú_open_domainz   s   
zSamrObject._open_domainc                 C   s(   | j d krt | j| j ¡ d | _ d S d S r   )r8   r   ÚhSamrCloseHandler7   ©r   r   r   r   Ú_close_domain   s   

þzSamrObject._close_domainc                 C   sh   |rdnd}t  | j¡d }t  | j|¡d d | d }t  | j||¡d }t j| j||dd }|S )	Né   r   ÚServerHandleÚBufferÚNameÚDomainId)ÚdomainIdÚDomainHandle)r   ÚhSamrConnectr7   Ú hSamrEnumerateDomainsInSamServerÚhSamrLookupDomainInSamServerÚhSamrOpenDomain)r   r\   ÚindexÚserver_handleÚdomain_nameÚ	domain_idrE   r   r   r   Ú__get_domain_handle„   s   zSamrObject.__get_domain_handleN)F)r2   r3   r4   r   r:   r>   r@   rI   rP   rV   rZ   r]   r`   r[   r   r   r   r   r5   L   s    
r5   c                       sV   e Zd Z‡ fdd„Zdd„ Zdd„ Zddd	„Zd
d„ Zdd„ Zdd„ Z	dd„ Z
‡  ZS )ÚUserc                    s    t ƒ  |¡ tj| _tj| _d S r   )Úsuperr   r   ÚUSER_NORMAL_ACCOUNTÚ_create_account_typeÚ_enum_account_typer   ©Ú	__class__r   r   r   Ž   s   zUser.__init__c              
   c   sœ    |   ¡ }zCzt | j|| j¡}|d d D ]}|V  qW n tjy: } zt|ƒ d¡dk r0‚ W Y d }~nd }~ww W |  ¡  d S W |  ¡  d S |  ¡  w ©Nrc   ÚSTATUS_MORE_ENTRIESr   )	r]   r   ÚhSamrEnumerateUsersInDomainr7   ru   ÚDCERPCSessionErrorÚstrÚfindr`   ©r   rE   rG   ÚitemÚer   r   r   Ú	Enumerate“   s"   €ÿÿ€ÿþýzUser.Enumeratec              
   C   sÈ  |   d¡}zÙz´|  ||¡}t | j|tjj¡}|d d }t | j|¡d d }tt	dd„ |ƒƒ}t 
¡ }|D ]-}tj| j||dd }	t | j|	|¡d	 }
t ¡ }|
|d
< |d  |¡ t | j|	¡ q7t | j||¡}tt	dd„ |d d ƒƒ|jd< |  ¡  |   d¡}t | j||¡}tt	dd„ |d d ƒƒ}t | j||¡}tt	dd„ |d d ƒƒ|jd< |W W |  ¡  S  tjy× } zt|ƒ d¡dk rÍ‚ W Y d }~nd }~ww W |  ¡  d S |  ¡  w )NFrc   ÚAllÚGroupsc                 S   ó   | d S )NÚ
RelativeIdr   )Úgr   r   r   Ú<lambda>¨   ó    zUser.Query.<locals>.<lambda>)ÚgroupIdrR   r%   Ú
SidPointerr$   c                 S   r„   ©NrC   r   ©Úar   r   r   r‡   ´   rˆ   r.   rB   ÚGlobalGroupsTc                 S   r„   r‹   r   rŒ   r   r   r   r‡   º   rˆ   Ú
Membershipc                 S   r„   r‹   r   rŒ   r   r   r   r‡   ½   rˆ   ÚLocalGroupsry   r   )r]   rP   r   ÚhSamrQueryInformationUser2r7   ÚUSER_INFORMATION_CLASSÚUserAllInformationÚhSamrGetGroupsForUserÚlistÚmapÚSAMPR_PSID_ARRAYrS   ÚhSamrRidToSidÚPSAMPR_SID_INFORMATIONÚappendr^   ÚhSamrLookupIdsInDomainÚfieldsr`   ÚhSamrGetAliasMembershipr{   r|   r}   )r   r)   rE   Úuser_handlerG   ÚgroupsÚgroup_id_listÚsidArrayÚgidÚgroup_handleÚ	group_sidÚsiÚglobal_lookup_idsÚalias_membershipÚalias_id_listÚlocal_lookup_idsr€   r   r   r   ÚQueryŸ   sB   
 
 
üÿ€ÿz
User.QueryÚ c              
   C   sŠ   |   ¡ }t | j||| jtj¡d }z-zt | j|||¡ W n tjy3 } zt | j|¡ ‚ d }~ww |  	|¡ W |  
¡  d S |  
¡  w rK   )r]   r   ÚhSamrCreateUser2InDomainr7   rt   ÚUSER_ALL_ACCESSÚhSamrSetNTInternal1r{   ÚhSamrDeleteUserÚ_hEnableAccountr`   )r   r)   Únew_passwordÚnew_nt_hashrE   rž   r€   r   r   r   ÚCreateÆ   s   €þzUser.Createc                 C   s<   |   ¡ }z|  ||¡}t | j|¡ W |  ¡  d S |  ¡  w r   )r]   rP   r   r¯   r7   r`   )r   r)   rE   rž   r   r   r   ÚRemoveÓ   s
   zUser.Removec                 C   sZ   t  | j|t jj¡d d d }t  ¡ }t jj|d< |t jA |d d< t  | j||¡ d S ©Nrc   r‚   ÚUserAccountControlÚtagÚControl©	r   r‘   r7   r’   r“   ÚSAMPR_USER_INFO_BUFFERÚUserControlInformationÚUSER_ACCOUNT_DISABLEDÚhSamrSetInformationUser2©r   rž   Úuser_account_controlÚbufferr   r   r   r°   Û   ó
    zUser._hEnableAccountc                 C   sZ   t  | j|t jj¡d d d }t  ¡ }t jj|d< t j|B |d d< t  | j||¡ d S rµ   r¹   r¾   r   r   r   Ú_hDisableAccountâ   rÁ   zUser._hDisableAccountc                 C   sd   |   |¡}|  ¡ }z#|  ||¡}|dkr|  |¡ n|  |¡ W |  ¡  d S W |  ¡  d S |  ¡  w )NÚenable)rª   r]   rP   r°   rÂ   r`   )r   r)   ÚactionÚinforE   rž   r   r   r   ÚSetUserAccountControlé   s   
üzUser.SetUserAccountControl)r«   )r2   r3   r4   r   r   rª   r³   r´   r°   rÂ   rÆ   Ú__classcell__r   r   rv   r   rq      s    
'rq   c                       s   e Zd Z‡ fdd„Z‡  ZS )ÚComputerc                    s&   t ƒ  |¡ tj| _tjtjB | _d S r   )rr   r   r   ÚUSER_WORKSTATION_TRUST_ACCOUNTrt   ÚUSER_SERVER_TRUST_ACCOUNTru   r   rv   r   r   r   ø   s   zComputer.__init__)r2   r3   r4   r   rÇ   r   r   rv   r   rÈ   ÷   s    rÈ   c                   @   r   )
ÚGroupc              
   c   s˜    |   ¡ }zAzt | j|¡}|d d D ]}|V  qW n tjy8 } zt|ƒ d¡dk r.‚ W Y d }~nd }~ww W |  ¡  d S W |  ¡  d S |  ¡  w rx   )r]   r   ÚhSamrEnumerateGroupsInDomainr7   r{   r|   r}   r`   r~   r   r   r   r   ÿ   s"   €ÿÿ€ÿþýzGroup.Enumeratec              	   C   sx   |   ¡ }z2|  ||¡}t | j|¡}t | j|ttdd„ |d d ƒƒ¡}ttdd„ |d d ƒƒW |  ¡  S |  ¡  w )Nc                 S   r„   r‹   r   rŒ   r   r   r   r‡     rˆ   zGroup.Query.<locals>.<lambda>ÚMembersc                 S   r„   r‹   r   rŒ   r   r   r   r‡     rˆ   r.   rB   )	r]   rV   r   ÚhSamrGetMembersInGroupr7   r›   r•   r–   r`   )r   Ú
group_namerE   r£   rG   r   r   r   rª     s   &zGroup.Queryc                 C   sN   |   ¡ }z|  ||¡}|  ||¡}t | j||tj¡ W |  ¡  d S |  ¡  w r   )r]   rV   rI   r   ÚhSamrAddMemberToGroupr7   ÚSE_GROUP_ENABLED_BY_DEFAULTr`   ©r   rÏ   r=   rE   r£   rO   r   r   r   ÚJoin  s   z
Group.Joinc                 C   sJ   |   ¡ }z|  ||¡}|  ||¡}t | j||¡ W |  ¡  d S |  ¡  w r   )r]   rV   rI   r   ÚhSamrRemoveMemberFromGroupr7   r`   rÒ   r   r   r   ÚUnJoin  s   zGroup.UnJoinN©r2   r3   r4   r   rª   rÓ   rÕ   r   r   r   r   rË   þ   ó
    
	rË   c                   @   r   )
Ú
Localgroupc              
   c   sš    |   d¡}zAzt | j|¡}|d d D ]}|V  qW n tjy9 } zt|ƒ d¡dk r/‚ W Y d }~nd }~ww W |  ¡  d S W |  ¡  d S |  ¡  w )NTrc   ry   r   )r]   r   ÚhSamrEnumerateAliasesInDomainr7   r{   r|   r}   r`   r~   r   r   r   r   )  s"   €
ÿÿ€ÿþýzLocalgroup.Enumeratec                 C   sl   |   d¡}z+|  ||¡}t | j|¡}|  ttdd„ |d d ƒƒ¡}ttdd„ |ƒƒW |  ¡  S |  ¡  w )NTc                 S   s   | d d   ¡ S )NrC   rŠ   )ÚformatCanonical)Úsr   r   r   r‡   :  s    z"Localgroup.Query.<locals>.<lambda>rÍ   r$   c                 S   r„   )Nrd   r   )Úxr   r   r   r‡   ;  rˆ   )	r]   rZ   r   ÚhSamrGetMembersInAliasr7   r@   r•   r–   r`   )r   rÏ   rE   Úalias_handlerG   r   r   r   rª   5  s   
 zLocalgroup.Queryc                 C   óJ   |   d¡}z|  ||¡}|  |¡}t | j||¡ W |  ¡  d S |  ¡  w ©NT)r]   rZ   r>   r   ÚhSamrAddMemberToAliasr7   r`   ©r   rÏ   r=   rE   rÞ   Úuser_sidr   r   r   rÓ   ?  ó   

zLocalgroup.Joinc                 C   rß   rà   )r]   rZ   r>   r   ÚhSamrRemoveMemberFromAliasr7   r`   râ   r   r   r   rÕ   H  rä   zLocalgroup.UnJoinNrÖ   r   r   r   r   rØ   (  r×   rØ   c                   @   s\   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d„ ZdS )ÚNetc                 C   st   || _ || _|| _|| _|j ¡ | _d| _d| _|j	| _
|j| _|j| _d | _|jd ur8|j d¡\| _| _d S d S )Nr«   ú:)Ú_Net__domainÚ_Net__usernameÚ_Net__passwordÚ_Net__optionsÚentryÚlowerÚ_Net__actionÚ_Net__lmhashÚ_Net__nthashÚaesKeyÚ_Net__aesKeyÚkÚ_Net__doKerberosÚdc_ipÚ_Net__kdcHostÚ_Net__smbConnectionÚhashesÚsplit)r   Údomainr=   ÚpasswordÚoptionsr   r   r   r   S  s   
ÿzNet.__init__c              	   C   sj   t ||t| jjƒd| _| jr$| j | j| j| j	| j
| j| j| j¡ d S | j | j| j| j	| j
| j¡ d S )N)Ú	sess_port)r
   Úintrë   Úportr÷   rô   ÚkerberosLoginré   rê   rè   rï   rð   rò   rö   Úlogin)r   Ú
remoteNameÚ
remoteHostr   r   r   r   c  s   ÿ"zNet.connectc                 C   s   | j  ¡  d | _ d S r   )r÷   Úcloser_   r   r   r   Ú
disconnectl  s   

zNet.disconnectc                 C   s$  |   ||¡ |  | j¡}|| jƒ}|  | jd¡r=td | j| jj¡ƒ | 	| jj| jj
¡ td | j| jj| jj
¡ƒ nO|  | jd¡r`td | j| jj¡ƒ | | jj¡ td | j¡ƒ n,|  | jd¡r„td | j| jj¡ƒ | | jjd¡ td	 | j¡ƒ n|  | jd
¡r¨td | j| jj¡ƒ | | jjd
¡ td | j¡ƒ nä|  | jd¡rÐtd | jj| jj¡ƒ | | jj| jj¡ td | jj¡ƒ n¼|  | jd¡røtd | jj| jj¡ƒ | | jj| jj¡ td | jj¡ƒ n”|  | jd¡r\| | jj¡}t|ƒtkr$d}|D ]}td ||¡ƒ |d7 }qnhtd d¡|d ƒ td d¡|d ƒ td d¡|d ƒ td d¡|d ƒ td d¡|d  d!krZd"n|d  ƒ td# d¡|  |d$ tj@ tjk¡ƒ td% d¡|  |d& ¡ƒ td'ƒ td( d¡|  |d) ¡ƒ td* d¡|  |d+ ¡ƒ td, d¡|  |d- ¡ƒ td. d¡|  |d/ tj@ tjk¡ƒ td0 d¡|  |d/ tj@ tjk¡ƒ td'ƒ td1 d¡|d2 sàd3n|d2 ƒ td4 d¡|d5 ƒ td6 d¡|d7 ƒ td8 d¡|d9 ƒ td: d¡|  |d; ¡ƒ td< d¡|d= ƒ td'ƒ td> d¡|  |d? d? ¡ƒ td'ƒ td@ƒ |dA D ]
}tdB |¡ƒ q9td'ƒ tdCƒ |dD D ]
}tdB |¡ƒ qPn0tdE | j¡ƒ d}|  ¡ D ]!}	d ||	dF ¡}
| jj!r‚|
dG |	dH ¡7 }
t|
ƒ |d7 }qj|  "¡  d S )INÚcreatez[*] Creating {} account '{}'z)[+] {} account created succesfully: {}:{}Úremovez[*] Deleting {} account '{}'z#[+] {} account deleted succesfully!rÃ   z[*] Enabling {} account '{}'z#[+] {} account enabled succesfully!Údisablez[*] Disabling {} account '{}'z$[+] {} account disabled succesfully!Újoinz*[*] Adding user account '{}' to group '{}'z)[+] User account added to {} succesfully!Úunjoinz.[*] Removing user account '{}' from group '{}'z-[+] User account removed from {} succesfully!r)   ra   z
  {0}. {1}z	User nameé   ÚUserNamez	Full nameÚFullNameÚCommentÚAdminCommentzUser's commentÚUserCommentzCountry/region codeÚCountryCoder   z000 (System Default)zAccount activer¶   zAccount expiresÚAccountExpiresr«   zPassword last setÚPasswordLastSetzPassword expiresÚPasswordMustChangezPassword changeableÚPasswordCanChangezPassword requiredÚWhichFieldszUser may change passwordzWorkstations allowedÚWorkStationsr‚   zLogon scriptÚ
ScriptPathzUser profileÚProfilePathzHome directoryÚHomeDirectoryz
Last logonÚ	LastLogonzLogon countÚ
LogonCountzLogon hours allowedÚ
LogonHourszLocal Group Membershipsr   z  * {}zGlobal Group membershipsrŽ   z[*] Enumerating {}s ..rd   z ({0})r…   )#r   Ú_Net__get_action_classrî   r÷   Ú_Net__is_option_presentrë   ÚprintÚformatr  r³   Ú	newPasswdr  r´   rÃ   rÆ   r  r	  r)   rÓ   r
  rÕ   rª   Útyper•   ÚljustÚ	_Net__b2sr   r¼   Ú_Net__get_time_stringÚUSER_PASSWORD_NOT_REQUIREDÚUF_PASSWD_CANT_CHANGEÚ_Net__format_logon_hoursr   Údebugr  )r   r  r  ÚactionClassÚactionObjectrÅ   ÚiÚmemberÚgroupÚobjectÚmessaer   r   r   Úrunp  s–   
 þ&&&&"ÿ
zNet.runc                 C   s   |d8 }|d }|S )Nl     }*{Gíi€–˜ r   )r   Útr   r   r   Ú__getUnixTimeÇ  s   zNet.__getUnixTimec                 C   sJ   |d d> |d  }|dks|dkrd}|S t  |  |¡¡}| d¡}|S )NÚHighParté    ÚLowPartr   l   ÿÿÿÿ ÚNeverz%m/%d/%Y %H:%M:%S %p)r   ÚfromtimestampÚ_Net__getUnixTimeÚstrftime)r   Úlarge_integerÚtimer   r   r   Ú__get_time_stringÌ  s   þ
zNet.__get_time_stringc                 C   s$   d  tdd„ |ƒ¡}|dkrd}|S )Nr«   c                 S   s   |   ¡ S r   )Úhex)Úbr   r   r   r‡   Ö  rˆ   z*Net.__format_logon_hours.<locals>.<lambda>Ú*ffffffffffffffffffffffffffffffffffffffffffr‚   )r	  r–   )r   rÛ   Úlogon_hoursr   r   r   Ú__format_logon_hoursÕ  s   zNet.__format_logon_hoursc                 C   s   |rdS dS )NÚYesÚNor   )r   r@  r   r   r   Ú__b2sÛ  s   z	Net.__b2sc                 C   s   t tjt | ¡ ƒS r   )ÚgetattrÚsysÚmodulesr2   Ú
capitalize)r   rÄ   r   r   r   Ú__get_action_classÞ  ó   zNet.__get_action_classc                 C   s   t ||ƒo	t||ƒS r   )ÚhasattrrG  )r   rü   Úoptionr   r   r   Ú__is_option_presentá  rL  zNet.__is_option_presentN)r2   r3   r4   r   r   r  r2  r:  r&  r)  r%  r  r  r   r   r   r   ræ   R  s    	W	ræ   Ú__main__TzSAMR rpc client implementation.)Úadd_helpÚdescriptionÚtargetÚstorez6[[domain/]username[:password]@]<targetName or address>)rÄ   Úhelpz-debugÚ
store_truezTurn DEBUG output ONz-tsz&Adds timestamp to every logging outputzAn account entry namerì   )rU  ÚdestÚrequiredÚuserz(Enumerate all domain/local user accounts)rU  z-nameÚNAMEz Display single user information.)rÄ   ÚmetavarrU  z-createz(Add new user account to domain/computer.z-removez2Remove existing user account from domain/computer.z
-newPasswdÚPASSWORDz)New password to set for creating account.z-enablezEnables account.z-disablezDisables account.Úcomputerz'Enumerate all computers in domain levelz$Display single computer information.z#Add new computer account to domain.z-Remove existing computer account from domain.Ú
localgroupz2Enumerate local groups (aliases) of local computerz0Operate on single specific domain group account.z-joinÚUSERz#Add user account to specific group.z-unjoinz(Remove user account from specific group.r/  z7Enumerate domain groups registered in domain controllerz.Operate on single specific localgroup account.Úauthenticationz-hasheszLMHASH:NTHASHz$NTLM hashes, format is LMHASH:NTHASHz-no-passz&don't ask for password (useful for -k)z-kzÁUse 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)Ú
connectionz-dc-ipz
ip addressztIP Address of the domain controller. If omitted it will use the domain part (FQDN) specified in the target parameterz
-target-ipz£IP Address of the target machine. If omitted it will use whatever was specified as target. This is useful when target is the NetBIOS name and you cannot resolve itz-portÚ139Ú445ú?zdestination portz)Destination port to connect to SMB Server)ÚchoicesÚnargsÚdefaultr[  rU  ra   r	  r
  z9argument '-name' is required with join/unjoin operations.r  z;argument '-newPasswd' is required for creating new account.r«   F)Úgetpassz
Password: rç   )OrH  ÚargparseÚloggingr   Úimpacketr   Úimpacket.examplesr   Úimpacket.examples.utilsr   Úimpacket.dcerpc.v5r   r   r   r	   Úimpacket.smbconnectionr
   r   r5   rq   rÈ   rË   rØ   ræ   r2   r   ÚBANNERÚArgumentParserÚparserÚadd_argumentÚadd_subparsersÚ
subparsersÚ
add_parserÚuser_parserÚcomputer_parserÚlocalgroup_parserÚgroup_parserÚadd_argument_groupr/  ÚlenÚargvÚ
print_helpÚexitÚ
parse_argsrü   rM  r	  r
  r)   Úerrorr  r"  ÚinitÚtsr*  rS  rú   r=   rû   ÚaddressÚ	target_iprø   Úno_passrñ   rh  ró   rù   ÚlmhashÚnthashÚnetr2  Ú	Exceptionr€   Ú	getLoggerÚlevelÚDEBUGÚ	tracebackÚ	print_excr|   r   r   r   r   Ú<module>   sÂ   $Aj** 




ÿ
ÿÿ
0

(


8€ü