
    5i3                     \    d dl Z 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descriptioncodePagecountryCodedisplayNamedistinguishedNamedNSHostNameinstanceTypeisCriticalSystemObject
lastLogoff	lastLogonlastLogonTimestamp
logonCountlocalPolicyFlagsmsDS-SupportedEncryptionTypesnameobjectCategoryobjectClass
objectGUID	objectSidoperatingSystemoperatingSystemVersionprimaryGroupID
pwdLastSetsAMAccountNamesAMAccountTypesnuserAccountControlwhenChangedwhenCreatedservicePrincipalNamemsDS-AllowedToDelegateTo(msDS-AllowedToActOnBehalfOfOtherIdentityoperatingSystemServicePack	isDeletedms-Mcs-AdmPwdExpirationTime
sIDHistory)r!   r   r   r   r*   r   r   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_EXPIREDc                   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 )MSADMachinec                 |   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   supported_enc_typesr   nTSecurityDescriptorr   r   r   r   r   r   r   r    r!   r"   r$   r%   r&   r'   allowedtodelegateto#allowedtoactonbehalfofotheridentityr*   r+   ms_Mcs_AdmPwdExpirationTimer-   when_pw_changewhen_pw_expiresmust_change_pwcanLogon)selfs    P/home/kali/Ninja/venv/lib/python3.11/site-packages/msldap/ldap_objects/adcomp.py__init__zMSADMachine.__init__"   sc   $'$'$$$$$-$$$$$ $$$/$. $$/$!$$)"$$$$/$.$ $$$$/$$ $$$"$!$-1$*$($!$.%)$"$/ $$$$---    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#MSADMachine.calc_PasswordMustChangeT   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_secondsrC   rU   )rE   rZ   r[   s      rF   calc_CanLogonzMSADMachine.calc_CanLogoni   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)          }|rtS          |          |_*        |r|j        |j+        z
  ,                    d *          |_-        |j.        j/        d+k     rt`          j0        j1        |_2        n:|j.        d,k    r#|j        |j.        z
  ,                    d *          n|j        |_2        |3                    |          |_4        |5                                |_6        |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+   r,   r-   r(   r)   r$   rK   rJ   r   )7r9   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>   r?   r   r$   	minPwdAgerX   rA   rV   rW   rR   rS   rB   r\   rC   rb   rD   )entryrY   aditemps       rF   	from_ldapzMSADMachine.from_ldap   s   #""4((#&""4((#&-112EFF#\*../?@@#l+//0ABB#,'++M::#/|$((44#,,'++M::#/,'++M::#/,'++M::#/,'++M::#/<(,,^<<#$\2667OPP#&**<88#.%))+66#- .223GHH#&**<88#.|,001CDD#!,/334STT#< $$V,,#(\*../?@@#,'++M::#/&**<88#.%))+66#-l+//0ABB#$\2667OPP#\*../?@@#&**<88#.\*../?@@#\*../?@@#,'++M::#/,'++M::#/"<0445KLL##(#6#:#:;W#X#X# %))+66#-$),$7$;$;<Y$Z$Z#!&**<88#.!,/334NOO#,1,,?,C,CDn,o,o#)	|		 	 !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                 T   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#<   |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&   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*   )rE   ts     rF   to_dictzMSADMachine.to_dict   s   !twKK!D'twKK!D'd455!4.//!D011!())!MT]##!J-())!M())!M())!M())!M*++!N "4#> ? ?!t''!L/dn%%!K.t677!t''!L/T233! 899!mm!F)4.//!())!Mt''!L/dn%%!K.D011! "4#> ? ?!4.//!t''!L/4.//!4.//!())!M())!M !:;;!t677!$&t'F$G$G! !	
(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MSADMachine.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 )Nrp   UAC_)strre   rt   ).0xrE   rl   s     rF   
<listcomp>z'MSADMachine.get_row.<locals>.<listcomp>   sS    	Z	Z	Zq1RaR5&==#aeeAhh---c$2F2Fq2I2I.J.J	Z	Z	ZrH   )rm   )rE   attrsrl   s   ` @rF   get_rowzMSADMachine.get_row   s/    
llnn!	Z	Z	Z	Z	ZTY	Z	Z	ZZrH   c                 J    d}| j         D ]}||d| j         |         dz  }|S )Nro   z : z
)__dict__)rE   rl   ks      rF   __str__zMSADMachine.__str__   s?    != . .aDM!,,,--11	
(rH   c                    | j         }|t          d          }| j        }| j        | j        | j        dz   | j        z   }g }| j        ,| j        D ]$}|                    t          |                     %| j        }|&t          j	        |          
                                }| j        }|g }i d|d| j        dg dg dg d| j        d	t          | j                                      d
d          d         d
z   t          | j                  z   dg dg dt!          | j                  dddd dg 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| j        d| j        d udt3          | j                  d t3          | j                  d!t3          | j                  d"| j        d#| j        d$|d%|d&|d'dd g d(d)dd g d(d*dd g d(dd g d(dd g d(dd g d(dd g d(d+S ),Nr    $_allowedtoactonbehalfofotheridentity_dnsAcesAllowedToDelegateAllowedToActObjectIdentifierPrimaryGroupSID-   
SPNTargetsHasSIDHistory	IsDeletedIsACLProtectedFStatusDumpSMSAPassword
Propertiesr   @domain	domainsiddistinguishednameunconstraineddelegationUAC_TRUSTED_FOR_DELEGATIONenabledtrustedtoauthsamaccountnamehaslaps	lastlogonlastlogontimestampwhencreatedserviceprincipalnamesr
   operatingsystem
sidhistoryallowedtodelegateLocalAdmins)	CollectedFailureReasonResultsPSRemoteUsersRemoteDesktopUsers)	DcomUsersSessionsPrivilegedSessionsRegistrySessions)r$   r   r   r*   r-   appendrx   r?   base64	b64encodedecoder>   r   r   rsplitr   boolr+   r!   upperr   rt   r^   &TRUSTED_TO_AUTHENTICATE_FOR_DELEGATIONr@   r   r   r   r&   r'   r
   )rE   r   uacopr   sidactonbehalfalloweddelegs           rF   to_bhzMSADMachine.to_bh   s   #[	A3"	%
%1			#d&E	EB*	_ o    sc#hh8+!+..5577;),<E
)KE
	DE
 
B	E

 E
 BE
 E
 s4>**11#a88;cACH[D\D\\E
 E
 BE
 T^$$E
 UE
 TE
 E
  
+113333V\\^^^Dv #dn%%,,S33A6 #d455;;==	
  4 45Q R R 
)4 jG3N t* 0< -// =)@AA M$"233 d7 D$   :!" ,#E
D "!% EE
N "!% OE
X "!% YE
d #!%  #!%  #!%# # #!%! !AE
 E
 E
 ErH   r;   )__name__
__module____qualname__rG   r\   rb   staticmethodrj   rm   rt   r}   r   r    rH   rF   r9   r9   !   s        / / /dC C C*  , 8 8 8 ,8t% % %N  [ [ [
  Z Z Z Z ZrH   r9   )
rR   r   msldap.ldap_objects.commonr   r   msldap.commons.utilsr   MSADMachine_ATTRSMSADMachine_TSV_ATTRSr9   r   rH   rF   <module>r      s      5 5 5 5 5 5 5 5 . . . . . .      m m m m m m m m m mrH   