
    5i8                     T    d dl Z d dlmZmZ d dlmZ g dZg dZ G d d          ZdS )    N)
MSLDAP_UACvn)bh_dt_convert)+accountExpiresbadPasswordTimebadPwdCountcncodePagecountryCodedisplayNamedistinguishedName	givenNameinitials
lastLogoff	lastLogonlastLogonTimestamp
logonCountnamedescriptionobjectCategoryobjectClass
objectGUID	objectSidprimaryGroupID
pwdLastSetsAMAccountNamesAMAccountTypesnuserAccountControluserPrincipalNamewhenChangedwhenCreatedmemberOfmemberservicePrincipalNamemsDS-AllowedToDelegateTo
adminCount	isDeletedmailtitlehomeDirectoryunixUserPassworduserPassword
unicodePwd
scriptPath
sIDHistory)$r   r    canLogonr   r   r   when_pw_changewhen_pw_expiresr   r   r"   r!   r$   r#   r%   r   r	   
UAC_SCRIPTUAC_ACCOUNTDISABLEUAC_LOCKOUTUAC_PASSWD_NOTREQDUAC_PASSWD_CANT_CHANGE#UAC_ENCRYPTED_TEXT_PASSWORD_ALLOWEDUAC_DONT_EXPIRE_PASSWDUAC_USE_DES_KEY_ONLYUAC_DONT_REQUIRE_PREAUTHUAC_PASSWORD_EXPIREDr'   r(   r)   r*   r+   r-   r,   r.   r/   c                   V    e Zd Zd Zd Zd Zedd            Zd Zd Z	d Z
d	 Zd
 ZdS )MSADUserc                    d | _         d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _	        d | _
        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _         d | _!        d | _"        d | _#        d | _$        d | _%        d | _&        d | _'        d | _(        d | _)        d | _*        d | _+        d | _,        d | _-        d | _.        d S N)/r   r	   r   r   r   r   r   r   r   r   r   r   r   r   r    r%   r)   r*   r+   r-   r,   r.   r/   r0   r#   r$   r   r   r   r   r   r   r!   r"   r   r   r   r   allowedtodelegateto
admincountr(   r
   r   r2   r3   must_change_pwr1   )selfs    P/home/kali/Ninja/venv/lib/python3.11/site-packages/msldap/ldap_objects/aduser.py__init__zMSADUser.__init__    sr   $'$'$$-$.$$)$$$$/$.$$$"$$)$*$$$$/$/$/ $-$+ $$$/$. $$/$$ $$/$ $!$$/$. $-$ $$$$---    c                    t           j        t           j        t           j        t           j        t           j        g}|D ]}|| j        z  rt          j        j        c S  | j	        t          j
                    k    rt          j        j        S |j        t          j
                    k    rt          j        j        S |j        j        dk     rt          j        j        S | j	        |j        z
                      d           S )Ntzinfo)r   DONT_EXPIRE_PASSWDSMARTCARD_REQUIREDINTERDOMAIN_TRUST_ACCOUNTWORKSTATION_TRUST_ACCOUNTSERVER_TRUST_ACCOUNTr   datetimemaxr   	timedeltamin	maxPwdAgedaysreplace)rE   adinfoflagsflags       rF   calc_PasswordMustChangez MSADUser.calc_PasswordMustChange_   s    (**GImoy  pT  V`  Vu  v% ! !d
T$$ !    ! 
_*,,,,


+----


U""



/F,
,	5	5T	5	B	BBrH   c                 2   t           j        t           j        t           j        t           j        t           j        t           j        g}|D ]}|| j        z  r dS t           j        | j        z  sR| j	        
                    d           t          j                                        z
                                  dk     rdS | j        t          j        j        k    rdS | j        t          j                                        z
                                  dk     rdS dS )NFrK   r   T)r   ACCOUNTDISABLELOCKOUTrN   rO   rP   rQ   r   rM   r   rX   rR   nowtotal_secondsrD   rU   )rE   rZ   r[   s      rF   calc_CanLogonzMSADUser.calc_CanLogont   sI   $j&8*:WYcY}  @J  @d  fp  fE  F%  d
T$$ 55 (4+BB $J]JeJemqJeJrJru}  vG  vK  vK  vM  vM  KM  J\  J\  J^  J^  ab  Jb  Jb
% 
H-111
$
H-11333BBDDqHH
%	rH   Nc                 @   t                      }| d                             d          |_        | d                             d          |_        | d                             d          |_        | d                             d          |_        | d                             d          |_        | d                             d          |_        | d                             d          |_        | d                             d	          |_	        | d                             d
          |_
        | d                             d          |_        | d                             d          |_        | d                             d          |_        | d                             d          |_        | d                             d          |_        | d                             d          |_        | d                             d          |_        | d                             d          |_        | d                             d          |_        | d                             d          |_        | d                             d          |_        | d                             d          |_        | d                             d          |_        | d                             d          |_        | d                             d          |_        | d                             d          |_        | d                             d          |_        | d                             d          |_        | d                             d          |_        | d                             d          |_        | d                             d          |_        | d                             d           |_         | d                             d!          |_!        | d                             d"          |_"        | d                             d#          |_#        | d                             d$          |_$        | d                             d%          |_%        | d                             d&          |_&        | d                             d'          |_'        | d                             d(          |_(        | d                             d)          |_)        | d                             d*          |_*        | d                             d+          }|rtW          |          |_,        |r|j        |j-        z
  .                    d ,          |_/        |j0        j1        d-k     rtd          j2        j3        |_4        n:|j0        d.k    r#|j        |j0        z
  .                    d ,          n|j        |_4        |5                    |          |_6        |7                                |_8        |S )/N
attributesr   r	   r   r   r   r   r   r   r   r   r   r   r   r   r    r%   r#   r$   r   r   r   r   r   r   r!   r"   r   r   r   r
   r   r(   r)   r*   r-   unixuserpasswordr.   r/   r0   r&   r'   r   rK   rJ   r   )9r?   getr   r	   r   r   r   r   r   r   r   r   r   r   r   r   r    r%   r#   r$   r   r   r   r   r   r   r!   r"   r   r   r   r
   r   r(   r)   r*   r-   r,   r.   r/   r0   rB   rC   r   r   	minPwdAgerX   r2   rV   rW   rR   rS   r3   r\   rD   rb   r1   )entryrY   aditemps       rF   	from_ldapzMSADUser.from_ldap   s:   

#""4((#&""4((#&-112EFF#,'++M::#/|$((44#,%))+66#-,'++M::#/< $$V,,#(\*../?@@#,'++M::#/&**<88#.%))+66#-\*../?@@#\*../?@@#-112EFF#"<0445KLL#|$((44#,\"&&x00#*\*../?@@#l+//0ABB#&**<88#.%))+66#- .223GHH#&**<88#.,'++M::#/,'++M::#/,'++M::#/&**<88#.\*../?@@#|$((44#,,'++M::#/%))+66#-< $$V,,#(L!%%g..#)<(,,^<<#|,001CDD#&**<88#.&**<88#.&**<88#.!,/334NOO#&**<88#.	|		 	 !5	6	6$	 
'&t,,3 '.6+;;DDDDQQCu$$#,0SW]WgklWlWlCNV-==FFdFSSSru  sAS44V<<C$$&&CL 
*rH   c                    i }t          | j                  |d<   t          | j                  |d<   t          | j                  |d<   t          | j                  |d<   t          | j                  |d<   t          | j                  |d<   t          | j                  |d<   t          | j                  |d<   t          | j	                  |d	<   t          | j
                  |d
<   t          | j                  |d<   t          | j                  |d<   t          | j                  |d<   t          | j                  |d<   t          | j                  |d<   t          | j                  |d<   t          | j                  |d<   t          | j                  |d<   t          | j                  |d<   t          | j                  |d<   t          | j                  |d<   t          | j                  |d<   t          | j                  |d<   t          | j                  |d<   t          | j                  |d<   t          | j                  |d<   t          | j                  |d<   t          | j                  |d<   t          | j                  |d<   t          | j                  |d<   t          | j                  |d<   t          | j                   |d <   t          | j!                  |d!<   t          | j"                  |d"<   t          | j#                  |d#<   | j$        |d$<   t          | j%                  |d%<   t          | j&                  |d&<   t          | j'                  |d'<   t          | j(                  |d(<   t          | j)                  |d)<   t          | j*                  |d*<   t          | j+                  |d+<   t          | j,                  |d,<   t          | j-                  |d-<   |S ).Nr   r	   r   r   r   r   r   r   r   r   r   r   r   r   r    r%   r#   r$   r   r   r   r   r   r   r!   r"   r   r   r   r
   r   r   r2   r3   rD   rC   r1   r(   r)   r*   r+   r-   r,   r.   r/   ).r   r   r	   r   r   r   r   r   r   r   r   r   r   r   r   r    r%   r#   r$   r   r   r   r   r   r   r!   r"   r   r   r   r
   r   r   r2   r3   rD   rC   r1   r(   r)   r*   r+   r-   r,   r.   r/   rE   ts     rF   to_dictzMSADUser.to_dict   s   !twKK!D'twKK!D'd455!T]##!J-dn%%!K.())!M())!Mmm!F)4.//!())!Mt''!L/dn%%!K.4.//!4.//!d455! !:;;!T]##!J-4;!H+4.//!D011!t''!L/dn%%!K.t677!t''!L/())!M())!M())!Mt''!L/4.//!T]##!J-())!Mt677!4.//!D011!4.//!O!L/T]##!J-dn%%!K.mm!F)$*~~!G*$,--!O*++!NT233!t''!L/t''!L/	
(rH   c                     | j         | j         dk    rdS t          t          |dd                    }| j         |z  rdS dS )N zN/A   TF)r   getattrr   )rE   attr_sattrs      rF   uac_to_textflagzMSADUser.uac_to_textflag   sN    	$(?2(E(E
%	VABBZ	(	($	t# 
$	rH   c                 L                                        fd|D             S )Nc                     g | ]T}|d d         dk    r"t                              |                    n!t                              |                    US )Nrr   UAC_)strrf   rv   ).0xrE   rn   s     rF   
<listcomp>z$MSADUser.get_row.<locals>.<listcomp>  sS    	Z	Z	Zq1RaR5&==#aeeAhh---c$2F2Fq2I2I.J.J	Z	Z	ZrH   )ro   )rE   attrsrn   s   ` @rF   get_rowzMSADUser.get_row  s/    
llnn!	Z	Z	Z	Z	ZTY	Z	Z	ZZrH   c                 4   d}|d| j         z  z  }|d| j        z  z  }|d| j        z  z  }|d| j        z  z  }|d| j        z  z  }|d| j        z  z  }|d| j        z  z  }|d	| j        z  z  }|d
| j        z  z  }|d| j	        z  z  }|d| j
        z  z  }|d| j        z  z  }|d| j        z  z  }|d| j        z  z  }|d| j        z  z  }|d| j        z  z  }|d| j        z  z  }|d| j        z  z  }|d| j        z  z  }|d| j        z  z  }|d| j        z  z  }|d| j        z  z  }|d| j        z  z  }|d| j        z  z  }|d| j        z  z  }|d| j        z  z  }|d| j        z  z  }|d| j        z  z  }|d| j        z  z  }|d| j        z  z  }|d | j        z  z  }|d!| j        z  z  }|d"| j         z  z  }|d#| j!        z  z  }|d$| j"        z  z  }|d%| j#        z  z  }|d&| j$        z  z  }|d'| j%        z  z  }|d(| j&        z  z  }|d)| j'        z  z  }|d*| j(        z  z  }|S )+Nz	MSADUser
zsn: %s
zcn: %s
zdistinguishedName: %s
zinitials: %s
zdisplayName: %s
z	name: %s
zprimaryGroupID: %s
zsAMAccountName: %s
zuserPrincipalName: %s
zservicePrincipalName: %s
zmemberOf: %s
zmember: %s
zaccountExpires: %s
zbadPasswordTime: %s
zlastLogoff: %s
zlastLogon: %s
zlastLogonTimestamp: %s
zpwdLastSet: %s
zwhenChanged: %s
zwhenCreated: %s
zobjectGUID: %s
zobjectSid: %s
zbadPwdCount: %s
zlogonCount: %s
zsAMAccountType: %s
zcodePage: %s
zcountryCode: %s
zuserAccountControl: %s
zwhen_pw_change: %s
zwhen_pw_expires: %s
zmust_change_pw: %s
zadmincount: %s
zcanLogon: %s
zisDeleted: %s
z	mail: %s
z
title: %s
zhomeDirectory: %s
zuserPassword: %s
zunixUserPassword: %s
zunicodePwd: %s
zscriptPath: %s
))r   r	   r   r   r   r   r   r   r    r%   r#   r$   r   r   r   r   r   r   r!   r"   r   r   r   r   r   r
   r   r   r2   r3   rD   rC   r1   r(   r)   r*   r+   r-   r,   r.   r/   rm   s     rF   __str__zMSADUser.__str__  s   !zDG!zDG! 4#999!$-''!T---!|di! 333! 333! 4#999!#d&???!$-''!~##! 333!!555!DO++!4>))!!D$;;;!DO++!T---!T---!DO++!4>))!T---!DO++! 333!$-''!T---!!D$;;;! 333!!555! 333!DO++!$-''!4>))!|di!}tz!!!t111!d///!$"777!DO++!DO++!	
(rH   c                 "   | j         }|t          d          }g }| j        ,| j        D ]$}|                    t	          |                     %| j        g g t	          | j                  t	          | j                                      dd          d         dz   t	          | j                  z   g g t          | j
                  di d| j                                        d|                                d|dt	          | j                                      dd          d         d	t	          | j                                                  d
|                     d          dt          j        |v dt          j        |v dt          j        |vdt%          | j                  dt%          | j                  dt%          | j                  dt          j        |v dt          j        |v dt          j        |v d| j        | j        ng dt          | j                  d| j        | j        | j        | j        | j        | j        t          | j                   |t%          | j!                  | j"        | j#        | j$        | j        dd dd
S )Nr   -   Fr   @domain	domainsiddistinguishednameunconstraineddelegationUAC_TRUSTED_FOR_DELEGATIONtrustedtoauthpasswordnotreqdenabled	lastlogonlastlogontimestamp
pwdlastsetdontreqpreauthpwdneverexpires	sensitiveserviceprincipalnameshasspndisplayname)emailr*   homedirectoryr   userpasswordrC   
sidhistorywhencreatedunixpasswordunicodepasswordlogonscriptsamaccountname	highvaluesfupassword)
_allowerdtodelegatetoAcesAllowedToDelegateObjectIdentifierPrimaryGroupSID
SPNTargetsHasSIDHistory	IsDeletedIsACLProtected
Properties)%r   r   r0   appendrz   rB   r   rsplitr   boolr(   r   upperr   rv   &TRUSTED_TO_AUTHENTICATE_FOR_DELEGATIONPASSWD_NOTREQDr^   r   r   r   r   DONT_REQUIRE_PREAUTHrM   NOT_DELEGATEDr%   r   r)   r*   r+   r   r-   rC   r"   r,   r.   r/   )rE   r   uacr   sids        rF   to_bhzMSADUser.to_bh4  s   #[	A3*	_ o    sc#hh!5DN++4>**11#a88;cACH[D\D\\T^$$ 
+113333V\\^^^D v  #dn%%,,S33A6  #d455;;==	 
  4 45Q R R  jG3N  
1S8  
)4  -//  =)@AA  =11  z6#=  
5<  **c1  4;T;`d77fh   tD-..! " D$# $ ij($&t''!$"233*O*?     ,
 ,
 ,rH   rA   )__name__
__module____qualname__rG   r\   rb   staticmethodrk   ro   rv   r   r   r    rH   rF   r?   r?      s        < < <~C C C*  , ; ; ; ,;z/ / /b  [ [ [, , ,^4 4 4 4 4rH   r?   )	rR   msldap.ldap_objects.commonr   r   msldap.commons.utilsr   MSADUser_ATTRSMSADUser_TSV_ATTRSr?   r   rH   rF   <module>r      s     5 5 5 5 5 5 5 5 . . . . . .	 	 	   I I I I I I I I I IrH   