ó
E®Uc           @   s{  d  Z  d d l m Z d d l m Z d d l m Z d d l Z d d l Z d „  Z	 i  d „ Z
 i  d „ Z i  d	 „ Z i  d
 „ Z i  d „ Z i  d „ Z i  d „ Z i  d „ Z i  d „ Z i  d „ Z i  d „ Z i  d „ Z i  d „ Z i  d „ Z i  d „ Z i  d „ Z i  d „ Z i  d „ Z i  d „ Z i  d „ Z d „  Z d „  Z d „  Z  d „  Z! e" d „ Z# d S(    sF   Functions for setting up a Samba configuration (security descriptors).iÿÿÿÿ(   t   security(   t   ndr_pack(   t   get_schema_descriptorNc         C   sX   d |  } x, | j  ƒ  D] \ } } | j | | ƒ } q Wt j j | | ƒ } t | ƒ S(   Ns   %s(   t   itemst   replaceR    t
   descriptort	   from_sddlR   (   t   sddl_int
   domain_sidt   name_mapt   sddlt   namet   sidt   sec(    (    s4   /usr/lib/python2.7/dist-packages/samba/descriptor.pyt   sddl2binary%   s
    
c         C   s   d } t  | |  | ƒ S(   Nt    (   R   (   R   R	   R
   (    (    s4   /usr/lib/python2.7/dist-packages/samba/descriptor.pyt   get_empty_descriptor.   s    c         C   s   d } t  | |  | ƒ S(   Ns  O:EAG:EAD:(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;BA)(A;;RPLCLORC;;;AU)(A;CI;RPWPCRCCDCLCLORCWOWDSDDTSW;;;EA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;CIIO;RPWPCRCCLCLORCWOWDSDSW;;;DA)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;ED)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;BA)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;ER)S:(AU;SA;WPWOWD;;;WD)(AU;SA;CR;;;BA)(AU;SA;CR;;;DU)(OU;SA;CR;45ec5156-db7e-47bb-b53f-dbeb2d03c40f;;WD)(   R   (   R   R	   R
   (    (    s4   /usr/lib/python2.7/dist-packages/samba/descriptor.pyt   get_config_descriptor4   s    c         C   s   d } t  | |  | ƒ S(   Ns   D:(A;;LCLORC;;;AU)(OA;;RP;e48d0154-bcf8-11d1-8702-00c04fb96050;;AU)(OA;;RP;d31a8757-2447-4545-8081-3bb610cacbf2;;AU)(OA;;RP;66171887-8f3c-11d0-afda-00c04fd930c9;;AU)(OA;;RP;032160bf-9824-11d1-aec0-0000f80367c1;;AU)(OA;;RP;789ee1eb-8c8e-4e4c-8cec-79b31b7617b5;;AU)(OA;;RP;5706aeaf-b940-4fb2-bcfc-5268683ad9fe;;AU)(A;;RPWPCRCCLCLORCWOWDSW;;;EA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;CC;;;ED)(OA;CIIO;WP;3df793df-9858-4417-a701-735a1ecebf74;bf967a8d-0de6-11d0-a285-00aa003049e2;BA)S:(AU;CISA;WPCRCCDCWOWDSDDT;;;WD)(   R   (   R   R	   R
   (    (    s4   /usr/lib/python2.7/dist-packages/samba/descriptor.pyt    get_config_partitions_descriptorF   s    c         C   s   d } t  | |  | ƒ S(   Ns  D:(A;;RPLCLORC;;;AU)(OA;CIIO;SW;d31a8757-2447-4545-8081-3bb610cacbf2;f0f8ffab-1191-11d0-a060-00aa006c33ed;ER)(A;;RPWPCRCCLCLORCWOWDSW;;;EA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)S:(AU;CISA;CCDCSDDT;;;WD)(OU;CIIOSA;CR;;f0f8ffab-1191-11d0-a060-00aa006c33ed;WD)(OU;CIIOSA;WP;f30e3bbe-9ff0-11d1-b603-0000f80367c1;bf967ab3-0de6-11d0-a285-00aa003049e2;WD)(OU;CIIOSA;WP;f30e3bbf-9ff0-11d1-b603-0000f80367c1;bf967ab3-0de6-11d0-a285-00aa003049e2;WD)(OU;CIIOSA;WP;3e10944c-c354-11d0-aff8-0000f80367c1;b7b13124-b82e-11d0-afee-0000f80367c1;WD)(   R   (   R   R	   R
   (    (    s4   /usr/lib/python2.7/dist-packages/samba/descriptor.pyt   get_config_sites_descriptorW   s    c         C   s   d } t  | |  | ƒ S(   Nsi   D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;EA)(A;;RPLCLORC;;;BA)(OA;;CR;4ecc03fe-ffc0-4947-b630-eb672a8a9dbc;;WD)(   R   (   R   R	   R
   (    (    s4   /usr/lib/python2.7/dist-packages/samba/descriptor.pyt!   get_config_ntds_quotas_descriptore   s    c         C   s   d } t  | |  | ƒ S(   NsX   D:AI(A;;RPLCLORC;;;AU)(A;;RPWPCRCCLCLORCWOWDSW;;;EA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(   R   (   R   R	   R
   (    (    s4   /usr/lib/python2.7/dist-packages/samba/descriptor.pyt'   get_config_delete_protected1_descriptorl   s    c         C   s   d } t  | |  | ƒ S(   NsX   D:AI(A;;RPLCLORC;;;WD)(A;;RPWPCRCCLCLORCWOWDSW;;;EA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(   R   (   R   R	   R
   (    (    s4   /usr/lib/python2.7/dist-packages/samba/descriptor.pyt)   get_config_delete_protected1wd_descriptors   s    c         C   s   d } t  | |  | ƒ S(   NsZ   D:AI(A;;RPLCLORC;;;AU)(A;;RPWPCRCCDCLCLORCWOWDSW;;;EA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(   R   (   R   R	   R
   (    (    s4   /usr/lib/python2.7/dist-packages/samba/descriptor.pyt'   get_config_delete_protected2_descriptorz   s    c         C   s   d } t  | |  | ƒ S(   Ns  O:BAG:BAD:AI(OA;CIIO;RP;4c164200-20c0-11d0-a768-00aa006e0529;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)(OA;CIIO;RP;4c164200-20c0-11d0-a768-00aa006e0529;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIO;RP;5f202010-79a5-11d0-9020-00c04fc2d4cf;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)(OA;CIIO;RP;5f202010-79a5-11d0-9020-00c04fc2d4cf;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIO;RP;bc0ac240-79a9-11d0-9020-00c04fc2d4cf;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)(OA;CIIO;RP;bc0ac240-79a9-11d0-9020-00c04fc2d4cf;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIO;RP;59ba2f42-79a2-11d0-9020-00c04fc2d3cf;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)(OA;CIIO;RP;59ba2f42-79a2-11d0-9020-00c04fc2d3cf;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIO;RP;037088f8-0ae1-11d2-b422-00a0c968f939;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)(OA;CIIO;RP;037088f8-0ae1-11d2-b422-00a0c968f939;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;ER)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;DD)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967a86-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967a9c-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967aba-0de6-11d0-a285-00aa003049e2;ED)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;BA)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ae-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;e2a36dc9-ae17-47c3-b58b-be34c55ba633;;IF)(OA;;RP;c7407360-20bf-11d0-a768-00aa006e0529;;RU)(OA;;RP;b8119fd0-04f6-4762-ab7a-4986c76b3f9a;;RU)(OA;CIIO;RPLCLORC;;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)(OA;CIIO;RPLCLORC;;bf967a9c-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIO;RPLCLORC;;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;;CR;05c74c5e-4deb-43b4-bd9f-86664c2a7fd5;;AU)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;ED)(OA;;CR;ccc2dc7d-a6ad-4a7a-8846-c04e3cc53501;;AU)(OA;;CR;280f369c-67c7-438e-ae98-1d46f3c6f541;;AU)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ae-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;RP;b8119fd0-04f6-4762-ab7a-4986c76b3f9a;;AU)(OA;CIIO;RPWPCR;91e647de-d96f-4b70-9557-d63ff4f3ccd8;;PS)(A;;RPWPCRCCLCLORCWOWDSW;;;DA)(A;CI;RPWPCRCCDCLCLORCWOWDSDDTSW;;;EA)(A;;RPRC;;;RU)(A;CI;LC;;;RU)(A;CI;RPWPCRCCLCLORCWOWDSDSW;;;BA)(A;;RP;;;WD)(A;;RPLCLORC;;;ED)(A;;RPLCLORC;;;AU)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)S:AI(OU;CISA;WP;f30e3bbe-9ff0-11d1-b603-0000f80367c1;bf967aa5-0de6-11d0-a285-00aa003049e2;WD)(OU;CISA;WP;f30e3bbf-9ff0-11d1-b603-0000f80367c1;bf967aa5-0de6-11d0-a285-00aa003049e2;WD)(AU;SA;CR;;;DU)(AU;SA;CR;;;BA)(AU;SA;WPWOWD;;;WD)(   R   (   R   R	   R
   (    (    s4   /usr/lib/python2.7/dist-packages/samba/descriptor.pyt   get_domain_descriptor   s    1c         C   s   d } t  | |  | ƒ S(   Nsi   D:(A;;RPLCLORC;;;AU)(A;;RPWPCRCCLCLORCWOWDSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)S:(AU;SA;WPCR;;;WD)(   R   (   R   R	   R
   (    (    s4   /usr/lib/python2.7/dist-packages/samba/descriptor.pyt$   get_domain_infrastructure_descriptorµ   s    c         C   s   d } t  | |  | ƒ S(   Ns   D:(OA;CIIO;RP;4c164200-20c0-11d0-a768-00aa006e0529;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)(OA;CIIO;RP;4c164200-20c0-11d0-a768-00aa006e0529;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIO;RP;5f202010-79a5-11d0-9020-00c04fc2d4cf;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)(OA;CIIO;RP;5f202010-79a5-11d0-9020-00c04fc2d4cf;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIO;RP;bc0ac240-79a9-11d0-9020-00c04fc2d4cf;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)(OA;CIIO;RP;bc0ac240-79a9-11d0-9020-00c04fc2d4cf;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIO;RP;59ba2f42-79a2-11d0-9020-00c04fc2d3cf;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)(OA;CIIO;RP;59ba2f42-79a2-11d0-9020-00c04fc2d3cf;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIO;RP;037088f8-0ae1-11d2-b422-00a0c968f939;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)(OA;CIIO;RP;037088f8-0ae1-11d2-b422-00a0c968f939;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;ER)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;DD)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967a86-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967a9c-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967aba-0de6-11d0-a285-00aa003049e2;ED)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;BA)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ae-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;e2a36dc9-ae17-47c3-b58b-be34c55ba633;;IF)(OA;;RP;c7407360-20bf-11d0-a768-00aa006e0529;;RU)(OA;;RP;b8119fd0-04f6-4762-ab7a-4986c76b3f9a;;RU)(OA;CIIO;RPLCLORC;;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)(OA;CIIO;RPLCLORC;;bf967a9c-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIO;RPLCLORC;;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;;CR;05c74c5e-4deb-43b4-bd9f-86664c2a7fd5;;AU)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;ED)(OA;;CR;ccc2dc7d-a6ad-4a7a-8846-c04e3cc53501;;AU)(OA;;CR;280f369c-67c7-438e-ae98-1d46f3c6f541;;AU)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ae-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;RP;b8119fd0-04f6-4762-ab7a-4986c76b3f9a;;AU)(OA;CIIO;RPWPCR;91e647de-d96f-4b70-9557-d63ff4f3ccd8;;PS)(A;;RPWPCRCCLCLORCWOWDSW;;;DA)(A;CI;RPWPCRCCDCLCLORCWOWDSDDTSW;;;EA)(A;;RPRC;;;RU)(A;CI;LC;;;RU)(A;CI;RPWPCRCCLCLORCWOWDSDSW;;;BA)(A;;RP;;;WD)(A;;RPLCLORC;;;ED)(A;;RPLCLORC;;;AU)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)S:(OU;CISA;WP;f30e3bbe-9ff0-11d1-b603-0000f80367c1;bf967aa5-0de6-11d0-a285-00aa003049e2;WD)(OU;CISA;WP;f30e3bbf-9ff0-11d1-b603-0000f80367c1;bf967aa5-0de6-11d0-a285-00aa003049e2;WD)(AU;SA;CR;;;DU)(AU;SA;CR;;;BA)(AU;SA;WPWOWD;;;WD)(   R   (   R   R	   R
   (    (    s4   /usr/lib/python2.7/dist-packages/samba/descriptor.pyt   get_domain_builtin_descriptor¾   s    5c         C   s   d } t  | |  | ƒ S(   NsY  D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPWPCRCCDCLCLORCWOWDSW;;;DA)(OA;;CCDC;bf967a86-0de6-11d0-a285-00aa003049e2;;AO)(OA;;CCDC;bf967aba-0de6-11d0-a285-00aa003049e2;;AO)(OA;;CCDC;bf967a9c-0de6-11d0-a285-00aa003049e2;;AO)(OA;;CCDC;bf967aa8-0de6-11d0-a285-00aa003049e2;;PO)(A;;RPLCLORC;;;AU)(OA;;CCDC;4828cc14-1437-45bc-9b07-ad6f015e5f28;;AO)S:(   R   (   R   R	   R
   (    (    s4   /usr/lib/python2.7/dist-packages/samba/descriptor.pyt   get_domain_computers_descriptorö   s    
c         C   s   d } t  | |  | ƒ S(   Ns&  D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPWPCRCCDCLCLORCWOWDSW;;;DA)(OA;;CCDC;bf967aba-0de6-11d0-a285-00aa003049e2;;AO)(OA;;CCDC;bf967a9c-0de6-11d0-a285-00aa003049e2;;AO)(OA;;CCDC;bf967aa8-0de6-11d0-a285-00aa003049e2;;PO)(A;;RPLCLORC;;;AU)(OA;;CCDC;4828cc14-1437-45bc-9b07-ad6f015e5f28;;AO)S:(   R   (   R   R	   R
   (    (    s4   /usr/lib/python2.7/dist-packages/samba/descriptor.pyt   get_domain_users_descriptor  s    	c         C   s   d } t  | |  | ƒ S(   Ns”   D:(A;;RPLCLORC;;;AU)(A;;RPWPCRCCLCLORCWOWDSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;ED)S:(AU;SA;CCDCWOWDSDDT;;;WD)(AU;CISA;WP;;;WD)(   R   (   R   R	   R
   (    (    s4   /usr/lib/python2.7/dist-packages/samba/descriptor.pyt!   get_domain_controllers_descriptor  s    c         C   s   d } t  | |  | ƒ S(   NsX   D:AI(A;;RPLCLORC;;;AU)(A;;RPWPCRCCLCLORCWOWDSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(   R   (   R   R	   R
   (    (    s4   /usr/lib/python2.7/dist-packages/samba/descriptor.pyt'   get_domain_delete_protected1_descriptor  s    c         C   s   d } t  | |  | ƒ S(   NsZ   D:AI(A;;RPLCLORC;;;AU)(A;;RPWPCRCCDCLCLORCWOWDSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(   R   (   R   R	   R
   (    (    s4   /usr/lib/python2.7/dist-packages/samba/descriptor.pyt'   get_domain_delete_protected2_descriptor!  s    c         C   s   d } t  | |  | ƒ S(   Ns  O:SYG:BAD:AI(OA;CIIO;RP;4c164200-20c0-11d0-a768-00aa006e0529;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)(OA;CIIO;RP;4c164200-20c0-11d0-a768-00aa006e0529;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIO;RP;5f202010-79a5-11d0-9020-00c04fc2d4cf;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)(OA;CIIO;RP;5f202010-79a5-11d0-9020-00c04fc2d4cf;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIO;RP;bc0ac240-79a9-11d0-9020-00c04fc2d4cf;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)(OA;CIIO;RP;bc0ac240-79a9-11d0-9020-00c04fc2d4cf;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIO;RP;59ba2f42-79a2-11d0-9020-00c04fc2d3cf;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)(OA;CIIO;RP;59ba2f42-79a2-11d0-9020-00c04fc2d3cf;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIO;RP;037088f8-0ae1-11d2-b422-00a0c968f939;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)(OA;CIIO;RP;037088f8-0ae1-11d2-b422-00a0c968f939;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;ER)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967a86-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967a9c-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967aba-0de6-11d0-a285-00aa003049e2;ED)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;BA)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ae-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;e2a36dc9-ae17-47c3-b58b-be34c55ba633;;IF)(OA;;RP;c7407360-20bf-11d0-a768-00aa006e0529;;RU)(OA;;RP;b8119fd0-04f6-4762-ab7a-4986c76b3f9a;;RU)(OA;CIIO;RPLCLORC;;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)(OA;CIIO;RPLCLORC;;bf967a9c-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIO;RPLCLORC;;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;;CR;05c74c5e-4deb-43b4-bd9f-86664c2a7fd5;;AU)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;ED)(OA;;CR;ccc2dc7d-a6ad-4a7a-8846-c04e3cc53501;;AU)(OA;;CR;280f369c-67c7-438e-ae98-1d46f3c6f541;;AU)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ae-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;RP;b8119fd0-04f6-4762-ab7a-4986c76b3f9a;;AU)(OA;CIIO;RPWPCR;91e647de-d96f-4b70-9557-d63ff4f3ccd8;;PS)(A;;RPWPCRCCLCLORCWOWDSW;;;DA)(A;CI;RPWPCRCCDCLCLORCWOWDSDDTSW;;;EA)(A;;RPRC;;;RU)(A;CI;LC;;;RU)(A;CI;RPWPCRCCLCLORCWOWDSDSW;;;BA)(A;;RP;;;WD)(A;;RPLCLORC;;;ED)(A;;RPLCLORC;;;AU)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)S:AI(OU;CISA;WP;f30e3bbe-9ff0-11d1-b603-0000f80367c1;bf967aa5-0de6-11d0-a285-00aa003049e2;WD)(OU;CISA;WP;f30e3bbf-9ff0-11d1-b603-0000f80367c1;bf967aa5-0de6-11d0-a285-00aa003049e2;WD)(AU;SA;CR;;;DU)(AU;SA;CR;;;BA)(AU;SA;WPWOWD;;;WD)(   R   (   R   R	   R
   (    (    s4   /usr/lib/python2.7/dist-packages/samba/descriptor.pyt   get_dns_partition_descriptor(  s    3c         C   s   d } t  | |  | ƒ S(   NsT   O:SYG:SYD:AI(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;CI;RPWPCRCCDCLCRCWOWDSDDTSW;;;ED)(   R   (   R   R	   R
   (    (    s4   /usr/lib/python2.7/dist-packages/samba/descriptor.pyt'   get_dns_forest_microsoft_dns_descriptor^  s    c         C   s   d } t  | |  | ƒ S(   Ns£   O:SYG:SYD:AI(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;CI;RPWPCRCCDCLCRCWOWDSDDTSW;;;DnsAdmins)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;CI;RPWPCRCCDCLCRCWOWDSDDTSW;;;ED)(   R   (   R   R	   R
   (    (    s4   /usr/lib/python2.7/dist-packages/samba/descriptor.pyt'   get_dns_domain_microsoft_dns_descriptord  s    c         C   s   d } t  | |  | ƒ S(   NsQ   O:SubdomainAdminsG:SubdomainAdminsD:AI(A;;RPWPCRCCLCLORCWOWDSW;;;SubdomainAdmins)(   R   (   R   R	   R
   (    (    s4   /usr/lib/python2.7/dist-packages/samba/descriptor.pyt+   get_paritions_crossref_subdomain_descriptorl  s    c         C   sK  t  j |  d t |  j ƒ  ƒ ƒ t f t  j |  d t |  j ƒ  ƒ ƒ t f t  j |  d t |  j ƒ  ƒ ƒ t f t  j |  d t |  j ƒ  ƒ ƒ t f t  j |  d t |  j ƒ  ƒ ƒ t f t  j |  d t |  j ƒ  ƒ ƒ t	 f t  j |  d t |  j ƒ  ƒ ƒ t
 f t  j |  d t |  j ƒ  ƒ ƒ t f t  j |  d	 t |  j ƒ  ƒ ƒ t f t  j |  d t |  j ƒ  ƒ ƒ t f t  j |  d
 t |  j ƒ  ƒ ƒ t f t  j |  d t |  j ƒ  ƒ ƒ t f t  j |  d t |  j ƒ  ƒ ƒ t f t  j |  d t |  j ƒ  ƒ ƒ t f t  j |  d t |  j ƒ  ƒ ƒ t f t  j |  d t |  j ƒ  ƒ ƒ t f t  j |  d t |  j ƒ  ƒ ƒ t f t  j |  d t |  j ƒ  ƒ ƒ t f t  j |  d t |  j ƒ  ƒ ƒ t f t  j |  d t |  j ƒ  ƒ ƒ t f t  j |  d t |  j ƒ  ƒ ƒ t f g } |  j d d d d d t  j d d g ƒ } x| d d D]û} t  j |  d t |  j ƒ  ƒ ƒ } t  j |  | ƒ | k rJt  j |  d t | ƒ ƒ t f } | j | ƒ t  j |  d t | ƒ ƒ t f } | j | ƒ t  j |  d t | ƒ ƒ t f } | j | ƒ t  j |  d t | ƒ ƒ t f } | j | ƒ qHn  t  j |  d t |  j ƒ  ƒ ƒ } t  j |  | ƒ | k rHt  j |  d t | ƒ ƒ t f } | j | ƒ t  j |  d t | ƒ ƒ t f } | j | ƒ t  j |  d t | ƒ ƒ t f } | j | ƒ t  j |  d t | ƒ ƒ t f } | j | ƒ qHqHW| S(   Ns   %ss   CN=LostAndFound,%ss   CN=System,%ss   CN=Infrastructure,%ss   CN=Builtin,%ss   CN=Computers,%ss   CN=Users,%ss   OU=Domain Controllers,%ss   CN=MicrosoftDNS,CN=System,%ss   CN=NTDS Quotas,%ss   CN=LostAndFoundConfig,%ss   CN=Services,%ss   CN=Physical Locations,%ss#   CN=WellKnown Security Principals,%ss   CN=ForestUpdates,%ss   CN=DisplaySpecifiers,%ss   CN=Extended-Rights,%ss   CN=Partitions,%ss   CN=Sites,%st
   expressions   (objectClass=*)t   baseR   t   scopet   attrst   namingContextsi    s   DC=ForestDnsZones,%ss   CN=MicrosoftDNS,%ss   DC=DomainDnsZones,%s(   t   ldbt   Dnt   strt	   domain_dnR   R   R   R   R   R   R   R   R"   t   get_config_basednR   R   R   R   R   R   R   t   get_schema_basednR   t   searcht
   SCOPE_BASEt   get_root_basednR    t   appendR!   (   t   samdbt   subcontainerst   currentt   nct   dnsforestdnt   ct   dnsdomaindn(    (    s4   /usr/lib/python2.7/dist-packages/samba/descriptor.pyt   get_wellknown_sdss  sj    %%%%%%%%%%%%%%%%%%%%+""			""			c         C   s   t  j d ƒ } | j |  ƒ } i  } g  | d <xJ | D]B } t | d ƒ d k rb | d | d <n  | d j | d ƒ q5 W| S(   sz   Return separate ACE of an ACL

    :param acl: A string representing the ACL
    :return: A hash with different parts
    s   (\w+)?(\(.*?\))t   acesi    t   flagsi   (   t   ret   compilet   findallt   lenR2   (   t   aclt   pt   tabt   hasht   e(    (    s4   /usr/lib/python2.7/dist-packages/samba/descriptor.pyt
   chunck_aclµ  s    
c         C   s½   t  j d ƒ } | j |  ƒ } i  } x’ | D]Š } | d d k rR | d | d <n  | d d k rs | d | d <n  | d d k r” | d | d	 <n  | d d
 k r+ | d | d <q+ q+ W| S(   s¡    Return separate parts of the SDDL (owner, group, ...)

    :param sddl: An string containing the SDDL to chunk
    :return: A hash with the different chunk
    s   ([OGDS]:)(.*?)(?=(?:[GDS]:|$))i    s   O:i   t   owners   G:t   groups   D:t   dacls   S:t   sacl(   R=   R>   R?   (   R
   RB   RC   RD   RE   (    (    s4   /usr/lib/python2.7/dist-packages/samba/descriptor.pyt   chunck_sddlÉ  s    c         C   s"  t  j ƒ  } |  j | _ |  j | _ |  j | _ |  j | _ g  } |  j d k	 r` |  j j } n  xJ t	 d t
 | ƒ ƒ D]3 } | | } | j t  j @sv | j | ƒ qv qv qv Wg  } |  j d k	 rÑ |  j j } n  xJ t	 d t
 | ƒ ƒ D]3 } | | } | j t  j @sç | j | ƒ qç qç qç W| S(   sv   Get the SD without any inherited ACEs

    :param sd: SD to strip
    :return: An SD with inherited ACEs stripped
    i    N(   R    R   t	   owner_sidt	   group_sidt   typet   revisionRJ   t   NoneR;   t   rangeR@   R<   t   SEC_ACE_FLAG_INHERITED_ACEt   sacl_addRI   t   dacl_add(   t   sdt   sd_cleanR;   t   it   ace(    (    s4   /usr/lib/python2.7/dist-packages/samba/descriptor.pyt   get_clean_sdá  s,    



c      	   C   sÛ  t  | ƒ j | ƒ } t  |  ƒ j | ƒ } d } t | ƒ } t | ƒ } | j d ƒ s` d } n> | j d ƒ rž | d | d k rž d | d | d f } n  | j d ƒ sº d | } nA | j d ƒ rû | d | d k rû d | | d | d f } n  d g }	 | r|	 j d	 ƒ n  xº|	 D]²}
 | j |
 ƒ ro| j |
 ƒ rot ƒ  } t ƒ  } t | |
 ƒ } t | |
 ƒ } x | d
 D] } | j | ƒ q‚Wx | d
 D] } | j | ƒ q¤Wx= t | ƒ D]/ } | | k rÈ| j | ƒ | j | ƒ qÈqÈWt	 | ƒ t	 | ƒ d k rÓd | |
 f } x | D] } d | | f } q.Wx! | D] } d | | f } qOWqÓq!| j |
 ƒ r¡| j |
 ƒ r¡d | |
 f } q!| j |
 ƒ r!| j |
 ƒ r!d | |
 f } q!q!W| S(   s  Get the difference between 2 sd

    This function split the textual representation of ACL into smaller
    chunck in order to not to report a simple permutation as a difference

    :param refsddl: First sddl to compare
    :param cursddl: Second sddl to compare
    :param checkSacl: If false we skip the sacl checks
    :return: A string that explain difference between sddls
    R   RG   s   	No owner in current SDs,   	Owner mismatch: %s (in ref) %s(in current)
RH   s   %s	No group in current SDs.   %s	Group mismatch: %s (in ref) %s(in current)
RI   RJ   R;   i    sJ   %s	Part %s is different between reference and current here is the detail:
s+   %s		%s ACE is not present in the reference
s)   %s		%s ACE is not present in the current
s"   %s	Reference ACL hasn't a %s part
s    %s	Current ACL hasn't a %s part
(
   RY   t   as_sddlRK   t   has_keyR2   t   setRF   t   addt   removeR@   (   t   refsdt   cursdt	   domainsidt	   checkSaclt   cursddlt   refsddlt   txtt   hash_curt   hash_reft   partst   partt   h_curt   h_reft   c_curt   c_reft   elemt   kt   item(    (    s4   /usr/lib/python2.7/dist-packages/samba/descriptor.pyt   get_diff_sds  s\    	##			($   t   __doc__t   samba.dcerpcR    t	   samba.ndrR   t   samba.schemaR   R)   R=   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R    R!   R"   R#   R:   RF   RK   RY   t   TrueRq   (    (    (    s4   /usr/lib/python2.7/dist-packages/samba/descriptor.pyt   <module>   s>   		4	86	B			#