
    gÄ                     ~   S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKJr  S SK	r	S SK
JrJr  S SKJr  S SKJrJr  S SKJrJrJr  S SKJr  S SKJrJr  S S	KJr  S S
KJrJr  S SK J!r!  S SK"J#r#  S r$S r%Sr&\&(       d   S SK'r'\$r&\&(       d   S SK)r)\%r&\&(       a  Sr*OSr*0 r+S\	RX                  0S\	RX                  0S\	RX                  0S\	RX                  00 S.r-S$S jr.0 \-S'   S H  u  r/r0 \." \/S5        0 \-\0'   M     \3" SS5       H  r40 \-S\4-  '   M     0 \-S'   Sr5\5SS Rm                  \7" \-Rq                  5       5      5      -  -  r5\9" \+5      S :w  a+  \5S!S Rm                  \7" \+Rq                  5       5      5      -  -  r5 " S" S#\5      r:g! \( a     GNf = f! \( a     GNf = f! \1\24 a    SS\/ S30\+\0'    M  f = f)%    N)sha1)credentialsnttime2float)system_session)	get_bytes
get_string)drsblobssecuritygmsa)
ndr_unpack)CommandCommandError)SamDB)timedelta_from_nt_time_deltant_time_from_datetime)MAX_CLOCK_SKEW)cryptc                     [         R                  " 5       nSUl        [        R                  " 5       nUR                  [        R                  " U 5      U5        UR                  5       $ )z%
Use python[3]-gpgme to decrypt GPG.
T)gpgmeContextarmorioBytesIOdecryptgetvalue)encrypted_bytesctxouts      H/usr/lib/python3/dist-packages/samba/netcmd/user/readpasswords/common.py_gpgme_decryptr    /   sD     --/CCI
**,CKK

?+S1<<>    c                     [         R                  " U S9n[         R                  " SS9nUR                  U5      u  n  nU$ )z#
Use python[3]-gpg to decrypt GPG.
)stringT)r   )gpgDatar   r   )r   
ciphertextr   	plaintext_s        r   _gpg_decryptr)   :   s:     1J
++D
!Ckk*-OIq!r!   z1Decrypt the SambaGPG password as cleartext sourcezVDecrypt the SambaGPG password not supported, python[3]-gpgme or python[3]-gpg requiredflags)virtualClearTextUTF8virtualClearTextUTF16virtualSambaGPG
unicodePwdvirtualManagedPasswordQueryTimec           	         SS0SS0S.nX;  a/  [        SU  SSR                  UR                  5       5       S35      e[        R                  " S	5      n[
        R                  " U5      S
S	 R                  SS5      R                  S5      nSnUS
:w  a  SU < SU< SU< S3nOSU < SU< S3n[        X5      n[        U5      X0   S   -   n[        U5      U:w  a  [        SU[        U5      U4-  5      eU$ )Nlength+   V   )56zinvalid algorithm code: z(expected one of ,)   r      +   .utf8 $z$rounds=zFcrypt.crypt(%s) returned a value with length %d, expected length is %d)
ValueErrorjoinkeysosurandombase64	b64encodereplacedecoder   lenNotImplementedError)	algutf8pwroundsalgssaltb64salt
crypt_saltcrypt_valueexpected_lens	            r   get_crypt_valuerR   r   s   ^^D 3C5,SXXdiik-B,C1F G 	G ::b>D t$Qr*224>EEfMGJ{,/A
  #&w/
+Kz?TYx%88L
;<'!"jK(,n8 #8 9 	9r!   virtualSSHA))r4   virtualCryptSHA256)r5   virtualCryptSHA512r<   reasonz	modern '$z$' salt in crypt(3) required      zvirtualWDigest%02dvirtualKerberosSaltz-The attributes to display (comma separated). z)Possible supported virtual attributes: %sz, z"Unsupported virtual attributes: %sc                   P   ^  \ rS rSrU 4S jrS r   SS jr S	S jrS rSr	U =r
$ )
GetPasswordCommand   c                 0   > [         TU ]  5         S U l        g N)super__init__lp)self	__class__s    r   r`   GetPasswordCommand.__init__   s    r!   c                     [        [        R                  5       5       HM  n[        R                  [        U   R                  SS5      -  nUR                  X#[        R                  5        MO     g )Nr*   r   )sortedvirtual_attributesr@   ldbATTR_FLAG_HIDDENgetschema_attribute_addSYNTAX_OCTET_STRING)rb   samdbar*   s       r   inject_virtual_attributes,GetPasswordCommand.inject_virtual_attributes   sV     *//12A((+=a+@+D+DWa+PPE&&q1H1HI 3r!   c                    [         R                  " 5       nUR                  5         Uc  U(       d  O9UR                  5       R	                  S5      (       a  UnOU(       a  [        S5      eU(       a  U R                  R                  SU-  5        [        U[        5       X R                  S9nU(       d  Uc   UR                  S[        R                  S/S9n[        U5      S:X  d   eUS	   R                  S5      n[        U5      S:X  d   e[!        ["        R$                  US	   5      n	['        U	5      ["        R(                  :X  d   e U R-                  U5        U$ ! [*         a!  n
[        S
["        R(                  -  5      eS n
A
ff = f)Nzldapi://z/--url requires an ldapi:// url for this commandzConnecting to '%s'
)urlsession_infor   ra   r<   tokenGroups)basescopeattrsrW   r   zEYou need to specify an URL that gives privileges as SID_NT_SYSTEM(%s))r   Credentialsset_anonymouslower
startswithr   outfwriter   r   ra   searchrh   
SCOPE_BASErG   rj   r   r
   dom_sidstrSID_NT_SYSTEM	Exceptionro   )rb   rr   credsrequire_ldapiverbose
anon_credsrm   ressidssidmsgs              r   connect_for_passwords(GetPasswordCommand.connect_for_passwords   sV    !,,.
  ";}YY[##J//EPQQIIOO2S89#N,<"'GG5 CK= ll#..lX3x1}$}1vzz-04yA~%~ !1!147;3x8#9#9999
 	&&u-  ="#j$,$:$:$< = ==s   7BE 
F'FFc	           	        ^J^K^L^M^N^O^P^Q^R^S^T^U^V^W^X^Y S mPS mU/ SQmNUNUP4S jmVSPUUUV4S jjn	US S  n
SU
;   nSn/ n/ nU
 H  nU	" U5      nUR                  U5        M     / nSnU HE  nUS   b  S	nM  US
   b  UR                  U5        M&  US   U;   a  M1  UR                  US   5        MG     U(       d&  SS/nU H  nU	" U5      nUR                  U5        M     U(       a,  U(       a%  / SQnU H  nU	" US	S9nUR                  U5        M     U H"  nUS   U;   a  M  UR                  US   5        M$     U[        R                  :X  a  SS/nO/ n UR                  X4UUUS9n[	        U5      S:X  a  [        SU=(       d    U-  5      e[	        U5      S:  a  [        S[	        U5      U4-  5      e US   mW0 mMS mXS mYSTW;   a"  TWS   S   n[        [        R                  U5      mXSTW;   a  TWS   S   mYSTW;   a  TWS   S   n[        [        R                  U5      nUR                  R                  TMS'   UR                  R                  nUTMS'   [        U5      [         R                   R#                  [         R$                  R&                  S9-   n[)        U5      nUTMS '   TMS   [*        ::  a  UR                  R                  TMS!'   OUR                  R,                  TMS!'   [/        TWS   S   5      nSTW;   a  [/        TWS   S   5      nO'UR1                  5       nU< S"UR3                  5       < 3nSQUMUX4S# jjmQUMUPUQ4S$ jmOUQ4S% jn S mKS n!U " 5       u  n"n#U"S&;   aU  U#R4                  R6                  n!U#R8                  (       a.  S' n$[;        [<        R>                  " U$U#R8                  5      S 5      mKU(       a  TQ" S(S)S*9n%U%b   [A        U%5      n&[B        RD                  " 5       n'U'RG                  5         U'RI                  U&5        S n(S n)TYb  U'RK                  5       n(TYn)OBTKb?  U!b<  U'RM                  U!5        U'RO                  [B        RP                  5      n(TKRR                  n)U)b  U)U(:X  a  U&TMS!'   S. mTS/mJUJ4S0 jn,ULUOUQUSUT4S1 jn-UKUY4S2 jmSUP4S3 jn.S4 n/[[        [\        R9                  5       5       GH  nS n0U H4  n1U1S   c  M  U1S   R3                  5       UR3                  5       :w  a  M2  U1n0  O   U0c  ME  U0S5   mLUS6:X  a)  TO" TL5      n2U2c  M]  TT" UU2U=(       d    U5      n3U3c  Mu  U3n4GO	US7:X  a  TO" TL5      n4U4c  M  GOUS8:X  a  TO" TL5      n2U2c  M  TT" UU2U=(       d    U5      n3U3c  M  [^        R`                  " S95      n5[c        5       n6U6Re                  U35        U6Re                  U55        U6Rg                  5       U5-   n7S:[h        Rj                  " U75      Rm                  S;5      -   n4GOJUS<:X  a  U." TL5      n8U-" US=U8UU5      n9U9c  GMX  U9n4GO&US>:X  a  U." TL5      n8U-" US?U8UU5      n9U9c  GM|  U9n4GOUS@:X  a  TQ" S(S)S*9n4U4c  GM  OUSA:X  a	  U!n4U4c  GM  OUS:X  aF  TYcC  S!TM;   a  TP" TLSB5      (       d  U/" TMS!   5      n4OSTM;   a  TP" TLSB5      (       a  U/" TMS   5      n4OGM  URo                  SC5      (       a\  TQ" SD5      n:U:c  GM  U[	        SC5      S  n9 [q        U95      n;URu                  5       n<UR1                  5       n=U," U;U:UUU<U=5      n4U4c  GM`  O!USE:X  a  S TM;  a  GMp  [/        TMS    5      n4OGM  [        Rv                  " U4[        Rx                  U0S   5      TWU'   GM     UW4SF jn>UW4SG jmRUR4SH jn?UR4SI jn@UR4SJ jnA0 nBTN H  nCU H  n1U1S
   c  M  U1S
   WC:w  a  M  U>" U1S   5      nDUDb
  WD< SKWC< 3nEOU>" U1S   5      =nDnEWDc  M@  WEWB;   a  MH  WCWBWE'   S n4UCSL:X  a	  U?" WD5      n4OWCSM:X  a	  W@" WD5      n4OWCSN:X  a  WA" WD5      n4U4c  M  [        Rv                  " U4[        Rx                  WE5      TWUE'   M     M     TWR9                  5        H  nFSnGU H,  n1WFR3                  5       U1S   R3                  5       :w  a  M*  S	nG  O   WG(       a  M@  S nHU H,  nIWFR3                  5       UIS   R3                  5       :w  a  M*  WInH  O   WHc  My  U(       a  WHSO   (       d  M  TWWF	 M     TW$ ! [
         a!  n[        SU=(       d    U< SU< 35      eS nAff = f! [
         aQ  n*[@        c  [T        n+O[/        U*5      n+U RV                  RY                  S+U=(       d    U< S,U+< S-35         S n*A*GNS n*A*ff = f! [r         a     GM  f = f)RNc                     U (       d  g U  HP  nUR                  5       R                  SUR                  5       -  5      (       d  M:  UR                  S5      u  p4nUs  $    g )Nz%s==)rz   r{   	partition)optsnameokeyr(   vals         r   
get_option=GetPasswordCommand.get_account_attributes.<locals>.get_option   sP    779''

(<==$%KK$4MSSJ  r!   c                     [        [        R                  5       5       H0  nUR                  5       U R                  5       :w  a  M'  [        U   s  $    g r^   )rf   rg   r@   rz   )attrvans     r   get_virtual_attr_definitionNGetPasswordCommand.get_account_attributes.<locals>.get_virtual_attr_definition   sB    0557899;$**,.)#.. 9 r!   )GeneralizedTimeUnixTimeTimeSpecc                 ~   > T" U S5      nUc  g T H)  nUR                  5       UR                  5       :w  a  M'  Us  $    g )Nformat)rz   )r   
formatnamefmformatsr   s      r   get_virtual_format_definitionPGetPasswordCommand.get_account_attributes.<locals>.get_virtual_format_definition   sF    #D(3J!88:!1!1!33	  r!   Fc                    > U R                  S5      u  p#nU(       a  UR                  S5      nO/ n0 nXS'   X&S'   XVS'   T" U5      US'   T" U5      US'   XS'   U$ )N;raw_attrr   r   vattrvformat	is_hidden)r   split)	r   r   r   r(   fulloptsr   rn   r   r   s	          r   parse_raw_attrAGetPasswordCommand.get_account_attributes.<locals>.parse_raw_attr  sp    "*"4"4S"9Th~~c*A$jMfIfI4T:AgJ8>AiL&kNHr!   *r   Tr   r   sAMAccountNameuserPrincipalName)supplementalCredentialsr.   msDS-ManagedPassword)r   r   zshow_deleted:1zshow_recycled:1)ru   
expressionrv   rw   controlsr   zUnable to find user "%s"rW   z*Matched %u multiple users with filter "%s"z!Failed to get password for user 'z': r   r.   r   OLDCLEARTEXTzGMSA:query_interval)tzzGMSA:query_timePrimary:CLEARTEXT@c                 ,  > U T;   a  TU    $ Tc  g US:  a"  [        TR                  R                  5      U-   nSnTR                  R                   H@  nUS-  nX!::  a  M  XR                  :w  a  M   [        R
                  " UR                  5      s  $    g )Nr   rW   )rG   subpackagesr   binasciia2b_hexdata)r   min_idxidxp
calculatedscs       r   get_package>GetPasswordCommand.get_account_attributes.<locals>.get_package  s    z!!$''z{bffoo.8CVV__q>66>''// % r!   c                    > T" U S5      nU(       a&  US:w  a  [        SU S35      eTR                  S5      $ T" S5      $ )Nprevious1z&Invalid attribute parameter ;previous=z$, only supported value is previous=1r   r   )r   rj   )	attr_optsparamr   r   r   s     r   get_cleartext@GetPasswordCommand.get_account_attributes.<locals>.get_cleartext  sU    y*5EC<&@ H= => > "~~n55"#677r!   c                     > T" S5      n U c  T" S5      n U c  g[        [        R                  U 5      nUR                  UR                  4$ )NzPrimary:Kerberos-Newer-KeyszPrimary:Kerberos)r   N)r   r	   package_PrimaryKerberosBlobversionctr)primary_krb5	krb5_blobr   s     r   get_kerberos_ctrCGetPasswordCommand.get_account_attributes.<locals>.get_kerberos_ctr  sR    &'DEL#*+=># "8#G#G#/1I%%y}}55r!   )      c                      U R                   S:H  $ )N   )keytype)ks    r   	is_aes256<GetPasswordCommand.get_account_attributes.<locals>.is_aes256  s    99?*r!   zPrimary:SambaGPG)r   z
WARNING: 'z/': SambaGPG can't be decrypted into CLEARTEXT: 
c                     [         R                  " 5       nUR                  5         UR                  [	        U5      5        UR                  5       R                  5       $ r^   )r   rx   ry   set_utf16_passwordr   get_passwordencode)rn   busernamecreds_for_charcnvs       r   get_utf8;GetPasswordCommand.get_account_attributes.<locals>.get_utf8  sI     + 7 7 9++-001>
 %113::<<r!   Digestc                   > U S:X  a  UnUnGO\U S:X  a"  UR                  5       nUR                  5       nGO4U S:X  a"  UR                  5       nUR                  5       nGOU S:X  a  UnUR                  5       nGOU S:X  a  UnUR                  5       nGOU S:X  a"  UR                  5       nUR                  5       nGOU S:X  a"  UR                  5       nUR                  5       nGOU S:X  a  UnUR                  5       nGOnU S	:X  a"  UR                  5       nUR                  5       nGOFU S
:X  a"  UR                  5       nUR                  5       nGOU S:X  a  UnUR                  5       nGOU S:X  a  UnUR                  5       nGOU S:X  a"  UR                  5       nUR                  5       nGOU S:X  a"  UR                  5       nUR                  5       nGOU S:X  a  UnSnGOU S:X  a  UR                  5       nSnGOtU S:X  a  UR                  5       nSnGOZU S:X  a  U< SU< 3nSnGOGU S:X  a)  UR                  5       < SUR                  5       < 3nSnGOU S:X  a(  UR                  5       < SUR                  5       < 3nSnOU S:X  a  UnT
nOU S:X  a  UR                  5       nT
nOU S:X  a  UR                  5       nT
nOU S:X  a  UnT
nOU S:X  a  UR                  5       nT
nOU S:X  a  UR                  5       nT
nOpU S:X  a  U< SU< 3nT
nO^U S:X  a(  UR                  5       < SUR                  5       < 3nT
nO0U S:X  a(  UR                  5       < SUR                  5       < 3nT
nOSn[        [        R                  U5      n [
        R                  " [        UR                  U S-
     R                  5      5      n	U< S W< S [        U	5      < 3$ ! [         a     g f = f)!NrW      r   r               	   
                  r<   r8      r   \                                 :)rz   upperr   r	   package_PrimaryWDigestBlobr   hexlify	bytearrayhasheshashr   
IndexError)iprimary_wdigestaccount_nameaccount_upndomain
dns_domainuserrealmdigestsdigestDIGESTs             r   get_wDigest>GetPasswordCommand.get_account_attributes.<locals>.get_wDigest  s   Av#a#))+a#))+a#a#a#))+a#))+a#"((*a#))+"((*b#))+"((*b#"((*b#"((*b#))+"((*b#))+"((*b"b"((*b"((*b#)<8b#)<<><3E3E3GHb#)<<><3E3E3GHb#b#))+b#))+b"b"((*b"((*b#)<8b#)<<><3E3E3GHb#)<<><3E3E3GH !D!D!02G!)))GNN1q54I4N4N*OP%)5*V2DEE s   AO 
O! O!c                    > S nS nT" S5      nUb  T" XqU5      u  pVUcD  T
" T	5      nUb4  T" XU=(       d    U5      nUb  [        [        U5      [        U5      U5      nUc  UnUc  g SU-   $ )NzPrimary:userPassword{CRYPT})rR   r   r   )rn   	algorithmrK   r   r  svfbr   u8r   r   r   get_userPassword_hashr   s            r   get_virtual_crypt_valueJGetPasswordCommand.get_account_attributes.<locals>.get_virtual_crypt_valueh  s    BB23A}0vFz "),=!!(@LAB~ -S^Z^VT: Bzr>!r!   c                   > [        [        R                  U 5      nSnTb  TnOTb  TR                  S S nOgU[	        UR
                  R                  5      :w  a  gSU-  nUnUS:  a  SX4-  nS nUR                   Hp  n	[        U	R                  5      n
Uc(  U	R                  U:X  a  U
R                  U5      (       a  U
nU	R                  U:X  d  MU  U
R                  U5      (       d  Mm  X4s  $    S U4$ )Nr  r8   )NNz$%d$r   z$%d$rounds=%d)r   r	   package_PrimaryUserPasswordBlobvaluer  current_nt_hashr  r  r   schemer{   )blobr  rK   upSCHEMEcurrent_hashscheme_prefixprefixscheme_matchhh_value
aes256_keyr.   s              r   r"  HGetPasswordCommand.get_account_attributes.<locals>.get_userPassword_hash  s    HDDdKBF %)')//4!y););)@)@AA!"Y.M"Fz(I+>>LYY %QWW- (HH&**=99#*L88v%'*<*<V*D*D#22  ,''r!   c                 V   > T" U S5      nUc  g [        U5      $ ! [         a     gf = f)NrK   r   )intr>   )r   r   r   s     r   
get_rounds=GetPasswordCommand.get_account_attributes.<locals>.get_rounds  s7    T8,C{3x s   
 
((c                     [         R                  " 5       nUR                  5         UR                  U 5        UR	                  5       $ r^   )r   rx   ry   r   get_nt_hash)pwdtmps     r   get_unicode_pwd_hashGGetPasswordCommand.get_account_attributes.<locals>.get_unicode_pwd_hash  s9     ))+C""3'??$$r!   r   r+   r,   rS   r   z{SSHA}r;   rT   r   rU   r   r-   rY   r   virtualWDigestzPrimary:WDigestr/   c                    > U R                  5       nS nTR                  5        H  nXR                  5       :w  a  M  Un  U$    U$ r^   )rz   r@   )srcattrgsrcattrlsrcattrr   objs       r   get_src_attrnameCGetPasswordCommand.get_account_attributes.<locals>.get_src_attrname  sG    ~~'HGXXZwwy(N  
 Nr!   c                 "  > U T;  a  g [        TU    S   5      nUR                  S5      (       a#  [        R                  " U5      n[	        U5      nU$  [        U5      nUS:X  a  g US:  a  g [        U5      nU$ ! [         a
  n S nAg S nAff = f)Nr   z.0Zl    )r   endswithrh   string_to_timefloatr6  r>   r   )rC  vstrvutvflvnterD  s         r   get_src_time_floatEGetPasswordCommand.get_account_attributes.<locals>.get_src_time_float$  s    c!s7|A'D}}U##((.Cj
$i ax((s#CJ  s   A: :
B	Bc                    > T" U 5      nUc  g [        U5      n S[        R                  " U5      -  nU$ ! [         a)  nUR                  [        R
                  :X  a   S nAg e S nAff = f)Nz%s)r6  rh   
timestringOSErrorerrno	EOVERFLOW)rC  rM  rL  vrO  rP  s        r   get_generalizedtimeFGetPasswordCommand.get_account_attributes.<locals>.get_generalizedtime9  se    $W-C{c(C3>>#..
 H	  77eoo-s   5 
A(A#"A##A(c                 @   > T" U 5      nUc  g [        U5      nSU-  nU$ )Nz%d)r6  )rC  rM  rL  rW  rP  s       r   get_unixepoch@GetPasswordCommand.get_account_attributes.<locals>.get_unixepochF  s,    $W-C{c(Cs
AHr!   c                 *   > T" U 5      nUc  g SU-  nU$ )Nz%.9f )rC  rM  rW  rP  s      r   get_timespec?GetPasswordCommand.get_account_attributes.<locals>.get_timespecN  s#    $W-C{AHr!   z;format=r   r   r   r   )Fr   )=appendrh   r   r~   rG   r   r   r   r	   supplementalCredentialsBlobr   MANAGEDPASSWORD_BLOB	passwordsr   query_intervalr   datetimenowtimezoneutcr   r   currentr   domain_dns_namerz   rM   r#   r@   nextbuiltinsfiltergpg_decryptr   rx   ry   r   r:  set_kerberos_salt_principalget_kerberos_keyENCTYPE_AES256_CTS_HMAC_SHA1_96r'  decrypt_samba_gpg_helpr|   r}   rf   rg   rA   rB   r   updater  rC   rD   rF   r{   r6  r>   domain_netbios_nameMessageElementFLAG_MOD_REPLACE)Zrb   rm   r   basednro  rv   rw   r   support_pw_attrsr   	raw_attrshas_wildcard_attrhas_virtual_attrsrequested_attrsimplicit_attrsr   rn   search_attrsrequired_attrsrequired_attrsearch_controlsr   r   sc_blobmanaged_passwordunpacked_managed_passwordrf  query_time_datetimequery_time_nttimer  r  r  r   kerberos_saltkrb5_vkrb5_ctrr   sgvcvr<  	decryptedr-  rO  messager  r#  r7  r=  r   rar   r!  rW  rM   r1  bvrK   xr  r  r  r  rE  rX  r[  r_  generated_formatsr   rC  andelnamekeepdattriar  r3  r   r   r   r   r   r   rP  r"  r   r   r   rD  r   r.   sZ                                                                             @@@@@@@@@@@@@@@@r   get_account_attributes)GetPasswordCommand.get_account_attributes   su
   		
		 	 !H	9,!!Hx(A""1% " ! Az%$(!|'
 %%a(},*. ! ! #N "0"=1%%a( "0 "
 &4M&}EA"))!, &4  AyL(&	*  
 CNN"/1BCO O
	g,,F%*,(7  9C 3x1} :h>P& QRR3x!| LPSTWPXZ`Oa abb 
 !f

$+34Q7GH@@'JB3\*1-J!S(  ##9:1=(243L3L3C)E% *33<< ~&6@@OON ,- -^<x?P?P?T?TX`XiXiXmXm?T?nn   !66I J,=J()
 /0NB-77@@ ./ .77?? ./ 3/034#%c"56q9:K))+E%15;;=AK	 	$		8	6 
-/V$MM00M}}+!(//)X]]"K"&(
  0"=C!@$S)B &113C%%'**2. $I#'L!-$'OO$5	'1#/M4M77F$'$8$89d9d$e	'1'7'7#/LI4M:<
#67	= d	V	" 	"2%	(V		% *//12AE%g;&f:##%2 & }fI**!),9aH$<=:--!),9 m#!),9aH$<=:zz!}FXXZ$&v//3::6BB**#I.+Aq&(LQ9**#I.+Aq&(LQ9''   2B?9 ++!9 l"z'9&*4Z	S]=^=^,Z8K-LMA#z1jJ6W6W,Z-GHA.//"-.?"@"*c*+,-AA 224"224
?L+vWab9 77$J6
#456''3+?+?zARSCFu 3x		*			 B%i=(i=B&*2f:6&+2B7B#3BzN#CCGb?**(*!"%**+G4A:%%g.A:%$W-A9,,Q0D0DbIB5 & < xxzGD%==?bn&:&:&<<	 &
 E$==?bj&6&6&88	 %
 } {);G+ ", 
i  	gXM_Y_M_adeff	g^ ! @"*"8"%a&IIOO %44g?@ @@L	 " sE   A c B+d e*
d	(dd	
e'Ae""e'*
e98e9c                    Uc  [        S5      eUR                  S5      n/ nU H  nUR                  5       R                  5       n[        R                  5        HD  nUR                  5       UR                  5       :X  d  M'  [        U   S   n[        SU< SU< 35      e   [        R                  5        H)  nUR                  5       UR                  5       :X  d  M'  Un  O   X4/-  nM     U$ )NzPlease specify --attributesr6   rV   zVirtual attribute 'z' not supported: )r   r   lstriprstripdisabled_virtual_attributesr@   rz   rg   )rb   
attributesrw   password_attrspadarvas           r   parse_attributes#GetPasswordCommand.parse_attributes  s    <==  %B##%B166888:+3B7AA&')1(. / / 9
 )--/88:+B	 0
 d"N  r!   )ra   )NTF)T)__name__
__module____qualname____firstlineno__r`   ro   r   r  r  __static_attributes____classcell__)rc   s   @r   r[   r[      s7    J %),0&+*Z AEf
P r!   r[   ra  );rC   rn  r   rg  rU  r   rA   hashlibr   rh   sambar   r   
samba.authr   samba.commonr   r   samba.dcerpcr	   r
   r   	samba.ndrr   samba.netcmdr   r   samba.samdbr   samba.nt_timer   r   
samba.gkdir   samba._gluer   r    r)   rp  r   ImportErrorr$   rt  r  ATTR_FLAG_FORCE_BASE64_LDIFrg   rR   rI   r   r>   rT  ranger  virtual_attributes_helpr?   rf   r@   rG   r[   r^  r!   r   <module>r     s-  ,      	 	  
 + % . 1 1   .  M %  $ " 1J 
 	00 	00 	00 	00( $@ %' = !MKS$R   "t N 
q"A35+a/0 
 -/ ( )I  FSYZlZqZqZsStIuu u "#q(CdiiPVWrWwWwWyPzF{{{u uA    J   	#&BC-
#D) 		s6   ?F F ,	F%FFF"!F"%F<;F<