+
    4Ssi :  ã                   óô   € ^ RI Ht ^ RIt^ RIHtHt ^ RIHt ^ RIH	t	 ^ RI
HtHtHt ^ RIHt ^ RIHt ^ R	IHt ^ R
IHtHtHtHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RI H!t!H"t"H#t#H$t$ Rt% ! R R]&4      t'R# )é    )ÚStringION)Ú
ndr_unpackÚndr_pack)Úpreg)Únetcmd_finddc)Úcreate_directory_hierÚsmb_connectionÚ
get_gpo_dn)ÚNTSTATUSError)ÚNumber)Ústr_regtype)ÚNT_STATUS_OBJECT_NAME_INVALIDÚNT_STATUS_OBJECT_NAME_NOT_FOUNDÚNT_STATUS_OBJECT_PATH_NOT_FOUNDÚNT_STATUS_INVALID_PARAMETER)ÚGPTIniParser)Ú
get_string)Úsecurity)Údsacl2fsacl)Ú
REG_BINARYÚREG_MULTI_SZÚREG_SZÚGUIDz
[General]
Version=0
c                   óŒ   a € ] tR t^1t o RR ltR tR tR tRR ltR t	R t
R	 tR
 tRR ltR tR tR tR tR tR tRtV tR# )ÚRegistryGroupPoliciesNc                ó  € Wn         W n        W0n        W@n        V P                  P	                  R 4      pRP                  VP                  4       RVR.4      V n        RP                  V P                  R.4      V n        \        V P                  V P                   4      V n
        V'       d"   VP                  R4      '       d   VR,          pM \        V P                  V P                  4      p\        VRV P                  V P                  R7      V n        \        P                   \        P"                  ,          \        P$                  ,          pV P                  P'                  V P                  \(        P*                  R	.R
7      ^ ,          p	V	R	,          ^ ,          p
\-        \        P.                  V
4      P1                  4       p\        P2                  ! V P                  P5                  4       4      p\7        W¼RR7      V n        R# )ÚrealmÚ\ÚPoliciesz%szRegistry.polzldap://:é   NNÚsysvol)ÚlpÚcredsÚnTSecurityDescriptor©ÚbaseÚscopeÚattrsF)Úas_sddlN)Úgpor"   r#   ÚsamdbÚgetÚjoinÚlowerÚpol_dirÚpol_filer
   Ú	policy_dnÚ
startswithr   r	   Úconnr   ÚSECINFO_OWNERÚSECINFO_GROUPÚSECINFO_DACLÚsearchÚldbÚ
SCOPE_BASEr   Ú
descriptorr)   Údom_sidÚget_domain_sidr   Úfs_sd)Úselfr*   r"   r#   r+   Úhostr   Údc_hostnameÚds_sd_flagsÚmsgÚ	ds_sd_ndrÚds_sdÚ
domain_sids   &&&&&&       Ú0/usr/lib/python3/dist-packages/samba/policies.pyÚ__init__ÚRegistryGroupPolicies.__init__2   s{  € ØŒØŒØŒ
ØŒ
Ø—‘—‘˜GÓ$ˆØ—y‘y %§+¡+£-°¸SÀ$Ð!GÓHˆŒØŸ	™	 4§<¡<°Ð"@ÓAˆŒÜ# D§J¡J°·±Ó9ˆŒç�D—O‘O I×.Ò.Ø˜r�(‰Kä'¨¯©°·±Ó<ˆKä" ;Ø#+Ø&*§g¡gØ)-¯©ô5ˆŒ	ô  ×-Ñ-Ü×-Ñ-õ.ä×,Ñ,õ-ˆð �j‰j×Ñ T§^¡^¼3¿>¹>Ø'=Ð&>ð  ó @Ø@AõCˆàÐ.Õ/°Õ2ˆ	Üœ8×.Ñ.°	Ó:×BÑBÓDˆô ×%Ò% d§j¡j×&?Ñ&?Ó&AÓBˆ
Ü  ¸EÔBˆŽ
ó    c                ó  €  \        \        P                  V P                  P	                  V4      4      pV#   \
         dI   pTP                  ^ ,          \        \        \        39   d   \        P                  ! 4       p Rp?T# h Rp?ii ; i)r   N)
r   r   Úfiler3   Úloadfiler   Úargsr   r   r   )r>   r0   Úpol_dataÚes   &&  rF   Ú__load_registry_polÚ)RegistryGroupPolicies.__load_registry_polS   sv   € ð	Ü!¤$§)¡)¨T¯Y©Y×-?Ñ-?ÀÓ-IÓJˆHð ˆøô ô 	Ø�v‰v�a�yÔ:Ü<Ü<ð>ô >ô  Ÿ9š9›;”ð ˆð ûð	ús   ‚37 ·B
Á<BÂBÂB
c                ó²   € \        V P                  V4       V P                  P                  W#4       V P                  P                  W P                  4       R # ©N)r   r3   ÚsavefileÚset_aclr=   )r>   Úfile_dirÚ	file_nameÚdatas   &&&&rF   Ú__save_fileÚ!RegistryGroupPolicies.__save_file_   s8   € Ü˜dŸi™i¨Ô2Ø�	‰	×Ñ˜9Ô+Ø�	‰	×Ñ˜)§Z¡ZÖ0rI   c                ó<   € V P                  W\        V4      4       R # rS   )Ú!_RegistryGroupPolicies__save_filer   )r>   r/   r0   rN   s   &&&&rF   Ú__save_registry_polÚ)RegistryGroupPolicies.__save_registry_pold   s   € Ø×Ñ˜¬H°XÓ,>Ö?rI   c                ó8  € \        V4      \        8w  d   \        R 4      hV Fo  p\        V4      \        8w  d   \        R 4      h. ROpV'       g   VP	                  RR.4       \        V Uu. uF  qUV9   NK	  	  up4      '       d   Kf  \        R 4      h	  R# u upi )zJSON not formatted correctlyrX   ÚtypeN)ÚkeynameÚ	valuenameÚclass)r`   ÚlistÚSyntaxErrorÚdictÚextendÚall)r>   Ú
json_inputÚremoveÚentryÚkeysÚks   &&&   rF   Ú__validate_jsonÚ%RegistryGroupPolicies.__validate_jsong   sƒ   € Ü�
ÓœtÔ#ÜÐ<Ó=Ð=ÛˆEÜ�E‹{œdÔ"Ü!Ð"@ÓAÐAÚ4ˆDßØ—‘˜V VÐ,Ô-Ü©DÓ1©D q˜Uœ
©DÑ1×2Ô2Ü!Ð"@ÓAÐAó  ùò 2s   Á,B
c                óö   € \        VR ,          \        4      '       d
   VR ,          # \        ^4       F,  p\        V4      VR ,          P	                  4       8X  g   K*  Vu # 	  \        RVR ,          ,          4      h)r`   zUnknown type %s)Ú
isinstancer   Úranger   ÚupperÚ	TypeError)r>   rk   Úis   && rF   Ú__determine_data_typeÚ+RegistryGroupPolicies.__determine_data_types   s`   € Ü�e˜F•m¤V×,Ò,Ø˜•=Ð ä˜2–Y�Ü˜q“> U¨6¥]×%8Ñ%8Ó%:Ö:Ø’Hñ ô Ð)¨E°&­MÕ9Ó:Ð:rI   c                óJ  € V\         8X  d    \        V4      \        8X  d   \        V4      # V\        8X  d>   \        V4      \        8X  d*   R P                  V4      R,           pVP                  R4      # V\        8X  d&   \        V4      \        8X  d   VP                  R4      # V# )Ú z  z	utf-16-leúutf-8)	r   r`   rd   Úbytesr   r-   Úencoder   Ústr)r>   ÚrtyperX   s   &&&rF   Ú
__set_dataÚ RegistryGroupPolicies.__set_data|   sz   € à”JÔ¤4¨£:´Ô#5Ü˜“;ÐØ”lÔ"¤t¨D£z´TÔ'9Ø—=‘= Ó&¨Õ3ˆDØ—;‘;˜{Ó+Ð+Ø”fŒ_¤ d£¬sÔ!2Ø—;‘;˜wÓ'Ð'ØˆrI   c                ó<  € VP                    F`  pVP                  VR ,          8X  g   K  VP                  VR,          8X  g   K7  V P                  VP                  VR,          4      Vn         R# 	  \        P                  ! 4       pVR ,          Vn        VR,          Vn        V P                  V4      Vn        V P                  VP                  VR,          4      Vn        \        VP                   4      pVP                  V4       WAn         \        V4      Vn        R# )ra   rb   rX   N)Úentriesra   rb   Ú _RegistryGroupPolicies__set_datar`   rX   r   rk   Ú+_RegistryGroupPolicies__determine_data_typerd   ÚappendÚlenÚnum_entries)r>   rN   rk   rO   r‚   s   &&&  rF   Ú__pol_replaceÚ#RegistryGroupPolicies.__pol_replace‡   sÐ   € Ø×!Ô!ˆAØ�y‰y˜E )Õ,Ö,Ø�{‰{˜e KÕ0Ö0ØŸ™¨¯©°°vµÓ?�”Úñ	 "ô —
’
“ˆAØ˜iÕ(ˆAŒIØ Õ,ˆAŒKØ×/Ñ/°Ó6ˆAŒFØ—_‘_ Q§V¡V¨U°6­]Ó;ˆAŒFÜ˜8×+Ñ+Ó,ˆGØ�N‰N˜1ÔØ&ÔÜ#& w£<ˆHÖ rI   c                óâ   € . pVP                    FF  pVP                  VR ,          8X  d   VP                  VR,          8X  d   K5  VP                  V4       KH  	  W1n         \	        V4      Vn        R# )ra   rb   N)r‚   ra   rb   r…   r†   r‡   )r>   rN   rk   r‚   rO   s   &&&  rF   Ú__pol_removeÚ"RegistryGroupPolicies.__pol_remove˜   sY   € ØˆØ×!Ô!ˆAØ—I‘I  yÕ!1Ô1Ø—K‘K 5¨Õ#5Ö5Ø—‘˜qÖ!ñ "ð #ÔÜ" 7›|ˆÖrI   c           	     ól  € V'       g   V'       g   R # V P                   R,          p V P                  P                  V4      p\        4       pTP                  T4       ^ p^ p^ p	TP                  P                  RR4      '       dG   \        TP                  P                  RR4      P                  R4      4      pTR,          pT^,	          p	T'       d
   T^,          pT'       d
   T	^,          p	T	^,          T,           pTP                  P!                  R4      '       g   TP                  P#                  R4       TP                  P%                  RR\'        T4      4       \)        4       ;_uu_ 4       p
TP                  P+                  T
4       T
P-                  ^ 4       T P/                  T P                   R,          TT
P1                  4       P                  R4      4       R R R 4       \2        P4                  ! 4       pT P6                  Tn        \2        P:                  ! \'        T4      \2        P<                  R4      TR&   T P>                  PA                  T4       R #   \         d:   pTP                  ^ ,          \
        \        \        39   d   \        p R p?ELXh R p?ii ; i  + '       g   i     LÌ; i)	NzGPT.INIÚGeneralÚVersionrz   iÿÿ  Ú ÚversionNumberÚ	new_value)!r/   r3   rL   r   rM   r   r   r   Ú	GPT_EMPTYr   ÚparseÚini_confÚ
has_optionÚintr,   r|   Úhas_sectionÚadd_sectionÚsetr}   r   ÚwriteÚseekr\   Úreadr8   ÚMessager1   ÚdnÚMessageElementÚFLAG_MOD_REPLACEr+   Úmodify)r>   Úmachine_changedÚuser_changedÚGPT_INIrX   rO   ÚparserÚversionÚmachine_versionÚuser_versionÚout_dataÚms   &&&         rF   Úincrement_gpt_iniÚ'RegistryGroupPolicies.increment_gpt_ini¡   s  € ß§|ÙØ—,‘, Õ*ˆð	Ø—9‘9×%Ñ% gÓ.ˆDô “ˆØ�‰�TÔØˆØˆØˆØ�?‰?×%Ñ% i°×;Ò;Ü˜&Ÿ/™/×-Ñ-¨iØ.7ó9ß9?¹À»óJˆGà%¨
Õ2ˆOØ" b�=ˆLßØ˜qÕ ˆOßØ˜AÕˆLØ 2Õ%¨Õ8ˆð �‰×*Ñ*¨9×5Ò5Ø�O‰O×'Ñ'¨	Ô2Ø�‰×Ñ˜I y´#°g³,Ô?Ü�ZŒZ˜8Ø�O‰O×!Ñ! (Ô+Ø�M‰M˜!ÔØ×Ñ˜TŸ\™\¨BÕ.°Ø%Ÿ]™]›_×3Ñ3°GÓ<ô>÷ ô �KŠK‹MˆØ�~‰~ˆŒÜ×+Ò+¬C°«L¼#×:NÑ:NØ,;ó=ˆˆ+‰à�
‰
×Ñ˜!ÖøôM ô 	Ø�v‰v�a�yÔ:Ü<Ü<ð>ô >ô !–àûð	ú÷6 �Zús*   §I Å1A.J#ÉJ É'-JÊJÊJ Ê#J3	c                óÆ   €  \        V4      pTR9  d   \	        R4      hRT,          #   \         d.   pTP                  ^ ,          \        8X  d   \	        R4      hh Rp?ii ; i)r   z&Extension name not formatted correctlyNzExtension attribute incorrectz{%s})ÚgPCMachineExtensionNamesÚgPCUserExtensionNames)r   r   rM   r   re   )r>   Úext_nameÚext_attrÚext_name_guidrO   s   &&&  rF   Ú!__validate_extension_registrationÚ7RegistryGroupPolicies.__validate_extension_registrationÏ   sh   € ð	Ü  ›NˆMð
 ð 5ô 5äÐ=Ó>Ð>Ø˜Õ%Ð%øô ô 	Ø�v‰v�a�yÔ7Ô7Ü!Ð"JÓKÐKØûð	ús   ‚( ¨A ³(AÁA c                óH  € V P                  W4      pV P                  P                  V P                  \        P
                  V.R 7      p\        V4      ^ 8X  g   W#^ ,          9  d   RpM \        V^ ,          V,          R,          4      pW9  d(   RVP                  R4      ,           V,           R,           pMR# \        P                  ! 4       pV P                  Vn
        \        P                  ! V\        P                  V4      VR&   V P                  P                  V4       R# )r%   z[]Ú[Ú]Nr’   éÿÿÿÿ)Ú7_RegistryGroupPolicies__validate_extension_registrationr+   r7   r1   r8   r9   r†   r   Ústriprž   rŸ   r    r¡   r¢   ©r>   r±   r²   ÚresÚ	ext_namesr«   s   &&&   rF   Úregister_extension_nameÚ-RegistryGroupPolicies.register_extension_nameÛ   sÜ   € Ø×9Ñ9¸(ÓMˆØ�j‰j×Ñ T§^¡^¼3¿>¹>Ø'/ jð  ó 2ˆäˆs‹8�qŒ=˜H°­FÔ2Ø‰Iä" 3 q¥6¨(Õ#3°BÕ#7Ó8ˆIØÔ$Ø˜iŸo™o¨dÓ3Õ3°hÕ>ÀÕD‰Iáä�KŠK‹MˆØ�~‰~ˆŒÜ×+Ò+¨I´s×7KÑ7KØ,4ó6ˆˆ+‰à�
‰
×Ñ˜!ÖrI   c                ó  € V P                  W4      pV P                  P                  V P                  \        P
                  V.R 7      p\        V4      ^ 8X  g   W#^ ,          9  d   R# \        V^ ,          V,          R,          4      pW9   d   VP                  VR4      pMR# \        P                  ! 4       pV P                  Vn
        \        P                  ! V\        P                  V4      VR&   V P                  P                  V4       R# )r%   Nr�   r’   r¹   )rº   r+   r7   r1   r8   r9   r†   r   Úreplacerž   rŸ   r    r¡   r¢   r¼   s   &&&   rF   Úunregister_extension_nameÚ/RegistryGroupPolicies.unregister_extension_nameî   sÏ   € Ø×9Ñ9¸(ÓMˆØ�j‰j×Ñ T§^¡^¼3¿>¹>Ø'/ jð  ó 2ˆäˆs‹8�qŒ=˜H°­FÔ2Ùä" 3 q¥6¨(Õ#3°BÕ#7Ó8ˆIØÔ Ø!×)Ñ)¨(°BÓ7‰Iáä�KŠK‹MˆØ�~‰~ˆŒÜ×+Ò+¨I´s×7KÑ7KØ,4ó6ˆˆ+‰à�
‰
×Ñ˜!ÖrI   c                óš  € V P                  VRR7       V P                  V P                  R,          4      pV P                  V P                  R,          4      pRpRpV F^  pVR,          P                  4       pVR8X  g   VR8X  d   RpV P	                  W64       VR	8X  g
   VR8X  g   KK  RpV P	                  W&4       K`  	  V'       d6   V P                  V P                  R,          V P                  R,          V4       V'       d6   V P                  V P                  R,          V P                  R,          V4       V P                  WE4       R
# )ab  remove_s
json_input: JSON list of entries to remove from GPO

Example json_input:
[
    {
        "keyname": "Software\Policies\Mozilla\Firefox\Homepage",
        "valuename": "StartPage",
        "class": "USER",
    },
    {
        "keyname": "Software\Policies\Mozilla\Firefox\Homepage",
        "valuename": "URL",
        "class": "USER",
    },
]
T)rj   ÚUserÚMachineFrc   ÚmachineÚbothÚuserN)Ú%_RegistryGroupPolicies__validate_jsonÚ)_RegistryGroupPolicies__load_registry_polr0   r.   Ú"_RegistryGroupPolicies__pol_removeÚ)_RegistryGroupPolicies__save_registry_polr/   r¬   ©r>   ri   Úuser_pol_dataÚmachine_pol_datar£   r¤   rk   Úclss   &&      rF   Úremove_sÚRegistryGroupPolicies.remove_s  s  € ð$ 	×Ñ˜Z°ÐÔ5Ø×0Ñ0°·±ÀÕ1GÓHˆØ×3Ñ3°D·M±MÀIÕ4MÓNÐàˆØˆÛˆEØ˜•.×&Ñ&Ó(ˆCØ�iÔ 3¨&¤=Ø"&�Ø×!Ñ!Ð"2Ô:Ø�fŒ}  v¦Ø#�Ø×!Ñ! -Ö7ñ  ÷ Ø×$Ñ$ T§\¡\°FÕ%:Ø%)§]¡]°VÕ%;Ø%2ô4÷ Ø×$Ñ$ T§\¡\°IÕ%=Ø%)§]¡]°YÕ%>Ø%5ô7ð 	×Ñ˜Ö=rI   c                ó–  € V P                  V4       V P                  V P                  R,          4      pV P                  V P                  R,          4      pRpRpV F^  pVR,          P                  4       pVR8X  g   VR8X  d   RpV P	                  W64       VR8X  g
   VR8X  g   KK  RpV P	                  W&4       K`  	  V'       d6   V P                  V P                  R,          V P                  R,          V4       V'       d6   V P                  V P                  R,          V P                  R,          V4       V P                  WE4       R	# )
aÌ  merge_s
json_input: JSON list of entries to merge into GPO

Example json_input:
[
    {
        "keyname": "Software\Policies\Mozilla\Firefox\Homepage",
        "valuename": "StartPage",
        "class": "USER",
        "type": "REG_SZ",
        "data": "homepage"
    },
    {
        "keyname": "Software\Policies\Mozilla\Firefox\Homepage",
        "valuename": "URL",
        "class": "USER",
        "type": "REG_SZ",
        "data": "google.com"
    },
]
rÆ   rÇ   Frc   rÈ   rÉ   TrÊ   N)rË   rÌ   r0   r.   Ú#_RegistryGroupPolicies__pol_replacerÎ   r/   r¬   rÏ   s   &&      rF   Úmerge_sÚRegistryGroupPolicies.merge_s+  s  € ð, 	×Ñ˜ZÔ(Ø×0Ñ0°·±ÀÕ1GÓHˆØ×3Ñ3°D·M±MÀIÕ4MÓNÐàˆØˆÛˆEØ˜•.×&Ñ&Ó(ˆCØ�iÔ 3¨&¤=Ø"&�Ø×"Ñ"Ð#3Ô;Ø�fŒ}  v¦Ø#�Ø×"Ñ" =Ö8ñ  ÷ Ø×$Ñ$ T§\¡\°FÕ%:Ø%)§]¡]°VÕ%;Ø%2ô4÷ Ø×$Ñ$ T§\¡\°IÕ%=Ø%)§]¡]°YÕ%>Ø%5ô7ð 	×Ñ˜Ö=rI   c                ób  € V P                  V4       \        P                  ! 4       p\        P                  ! 4       pRpRpV F^  pVR,          P                  4       pVR8X  g   VR8X  d   RpV P	                  W64       VR8X  g
   VR8X  g   KK  RpV P	                  W&4       K`  	  V'       d6   V P                  V P                  R,          V P                  R,          V4       V'       d6   V P                  V P                  R,          V P                  R,          V4       V P                  WE4       R	# )
a¢  replace_s
json_input: JSON list of entries to replace entries in GPO

Example json_input:
[
    {
        "keyname": "Software\Policies\Mozilla\Firefox\Homepage",
        "valuename": "StartPage",
        "class": "USER",
        "data": "homepage"
    },
    {
        "keyname": "Software\Policies\Mozilla\Firefox\Homepage",
        "valuename": "URL",
        "class": "USER",
        "data": "google.com"
    },
]
Frc   rÈ   rÉ   TrÊ   rÆ   rÇ   N)	rË   r   rK   r.   rÖ   rÎ   r/   r0   r¬   rÏ   s   &&      rF   Ú	replace_sÚRegistryGroupPolicies.replace_sY  sû   € ð( 	×Ñ˜ZÔ(ÜŸ	š	›ˆÜŸ9š9›;ÐàˆØˆÛˆEØ˜•.×&Ñ&Ó(ˆCØ�iÔ 3¨&¤=Ø"&�Ø×"Ñ"Ð#3Ô;Ø�fŒ}  v¦Ø#�Ø×"Ñ" =Ö8ñ  ÷ Ø×$Ñ$ T§\¡\°FÕ%:Ø%)§]¡]°VÕ%;Ø%2ô4÷ Ø×$Ñ$ T§\¡\°IÕ%=Ø%)§]¡]°YÕ%>Ø%5ô7ð 	×Ñ˜Ö=rI   )	r3   r#   r=   r*   r"   r/   r0   r1   r+   rS   )F)FF)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rG   rÌ   r\   rÎ   rË   r„   rƒ   rÖ   rÍ   r¬   rº   r¿   rÃ   rÓ   r×   rÚ   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @rF   r   r   1   sa   ø‡ € ôCòB
ò1ò
@ô
Bò;ò	ò0ò",ô,ò\
&òò&ò&(>òT,>÷\*>ð *>rI   r   )(Úior   r8   Ú	samba.ndrr   r   Úsamba.dcerpcr   Úsamba.netcmd.commonr   Úsamba.netcmd.gpcommonr   r	   r
   Úsambar   Únumbersr   Úsamba.registryr   Úsamba.ntstatusr   r   r   r   Úsamba.gp_parse.gp_inir   Úsamba.commonr   r   Úsamba.ntaclsr   Úsamba.dcerpc.miscr   r   r   r   r“   Úobjectr   © rI   rF   Ú<module>rò      sa   ðõ$ Û 
ß *Ý Ý -÷ñ õ
  Ý Ý &÷ó õ /Ý #Ý !Ý $ß DÓ Dðð 
ôR>˜Fö R>rI   