o
    CDi3                     @   sD  d Z ddlZdZdZdZdZdZdZd	Zd
Z	dZ
dZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$d Z%dZ&dZ'dZ(dZ)dZ*d	Z+d
Z,d!Z-d"Z.d#Z/d$Z0d%Z1d&Z2d'Z3d(Z4d)Z5d*Z6d+Z7d,Z8d-Z9d.Z:d/Z;d0Z<d1Z=d2Z>d3Z?d4Z@d5ZAd6ZBd7ZCd8ZDd9ZEd:ZFd;ZGd<ZHd=ZId>ZJd?ZKd@ZLdAZMdBZNdCZOdDZPdEZQdFZRdGZSdHZTdIZUdJZVdKZWdLZXdMZYdNZZdOZ[dPZ\dQZ]dRZ^dSZ_dTZ`dUZadVZbdWZcdXZddYZedZZfd[Zgd\Zhd]Zid^Zjd_Zkd`ZldaZmdbZndcZoddZpdeZqdfZrdgZsdhZtdiZudjZvdkZwdlZxdmZydnZzdoZ{dpZ|dqZ}drZ~G dsdt dteZG dudv dveZG dwdx dxeZG dydz dzeZdS ){zr
This module implements security descriptors, and the partial structures
used in them, as specified in [MS-DTYP].
    N                   @         i   i   i   i   i    i @  i               	   
                           zS-1-0-0zS-1-1-0zS-1-2-0zS-1-2-1zS-1-3-0zS-1-3-1zS-1-3-2zS-1-3-3zS-1-3-4zS-1-5zS-1-5-1zS-1-5-2zS-1-5-3zS-1-5-4zS-1-5-6zS-1-5-7zS-1-5-8zS-1-5-9zS-1-5-10zS-1-5-11zS-1-5-12zS-1-5-13zS-1-5-14zS-1-5-15zS-1-5-17zS-1-5-18zS-1-5-19zS-1-5-20zS-1-5-21-0-0-0-496zS-1-5-21-0-0-0-497zS-1-5-32-544zS-1-5-32-545zS-1-5-32-546zS-1-5-32-547zS-1-5-32-548zS-1-5-32-549zS-1-5-32-550zS-1-5-32-551zS-1-5-32-552zS-1-5-32-554zS-1-5-32-555zS-1-5-32-556zS-1-5-32-557zS-1-5-32-558zS-1-5-32-559zS-1-5-32-560zS-1-5-32-561zS-1-5-32-562zS-1-5-32-568zS-1-5-32-569zS-1-5-32-573zS-1-5-32-574zS-1-5-32-575zS-1-5-32-576zS-1-5-32-577zS-1-5-32-578zS-1-5-32-579zS-1-5-32-580zS-1-5-33zS-1-5-64-10zS-1-5-64-14zS-1-5-64-21z
S-1-5-65-1zS-1-5-80zS-1-5-84-0-0-0-0-0z	S-1-5-113z	S-1-5-114z
S-1-5-1000z
S-1-15-2-1zS-1-16-0zS-1-16-4096zS-1-16-8192zS-1-16-8448zS-1-16-12288zS-1-16-16384zS-1-16-20480zS-1-18-1zS-1-18-2zS-1-18-3zS-1-18-4zS-1-18-5zS-1-18-6c                   @   s6   e Zd ZdZdd Zdd Zdd Zedd	d
ZdS )SIDz
    A Windows security identifier. Represents a single principal, such a
    user or a group, as a sequence of numbers consisting of the revision,
    identifier authority, and a variable-length list of subauthorities.

    See [MS-DTYP]: 2.4.2
    c                 C   s   || _ || _|| _d S N)revisionidentifier_authoritysubauthorities)selfr   r   r    r   Q/var/www/Datamplify/venv/lib/python3.10/site-packages/smb/security_descriptors.py__init__   s   
zSID.__init__c                 C   sF   | j dkrd| j f }n| j }| j|g| j }dddd |D  S )zK
        String representation, as specified in [MS-DTYP]: 2.4.2.1
        l        z%#xzS--c                 s   s    | ]}t |V  qd S r   str).0subauthr   r   r    	<genexpr>   s    zSID.__str__.<locals>.<genexpr>)r   r   r   join)r   id_authauthsr   r   r    __str__   s
   
zSID.__str__c                 C   s   dt | f S )NzSID(%r)r#   r   r   r   r    __repr__   s   zSID.__repr__Fc                    s~   t d|d d \}}t dd|dd  d }|dd    fddt|D }| |||}|r=| d	| d  fS |S )
Nz<BBr   z>Qs     r   r   c              
      s0   g | ]}t d  d| d|d   d qS )z<Lr   r   r   )structunpack)r%   isubauth_datar   r    
<listcomp>   s    (z"SID.from_bytes.<locals>.<listcomp>r   )r.   r/   range)clsdatareturn_tailr   subauth_countr   r   sidr   r1   r    
from_bytes   s   
zSID.from_bytesN)F)	__name__
__module____qualname____doc__r!   r+   r-   classmethodr:   r   r   r   r    r      s    r   c                   @   s<   e Zd ZdZdZdd Zdd Zedd Ze	d	d
 Z
dS )ACEzM
    Represents a single access control entry.

    See [MS-DTYP]: 2.4.4
    z<BBHc                 C   "   || _ || _|| _|| _|| _d S r   )typeflagsmaskr9   additional_data)r   type_rC   rD   r9   rE   r   r   r    r!      s
   
	zACE.__init__c                 C   s   d| j | j| j| jf S )Nz1ACE(type=%#04x, flags=%#04x, mask=%#010x, sid=%s))rB   rC   rD   r9   r,   r   r   r    r-      s   zACE.__repr__c                 C   s   t | jt@ S )z}Convenience property which indicates if this ACE is inherit
        only, meaning that it doesn't apply to the object itself.)boolrC   ACE_FLAG_INHERIT_ONLYr,   r   r   r    isInheritOnly   s   zACE.isInheritOnlyc                 C   s  t | j}|d | }t | j|\}}}t||ksJ ||| }i }t d|d d d }	|dd  }|ttttt	t
fv rft d|d d d |d< |dd |d< |dd |d< |dd  }tj|d	d
\}
}|ttttt	tt
fv r~||d< |tkr||d< | |||	|
|S )Nz<Ir   r   rC      object_type$   inherited_object_typeT)r7   application_dataattribute_data)r.   calcsizeHEADER_FORMATr/   lenACE_TYPE_ACCESS_ALLOWED_OBJECTACE_TYPE_ACCESS_DENIED_OBJECT'ACE_TYPE_ACCESS_ALLOWED_CALLBACK_OBJECT&ACE_TYPE_ACCESS_DENIED_CALLBACK_OBJECTACE_TYPE_SYSTEM_AUDIT_OBJECT%ACE_TYPE_SYSTEM_AUDIT_CALLBACK_OBJECTr   r:    ACE_TYPE_ACCESS_ALLOWED_CALLBACKACE_TYPE_ACCESS_DENIED_CALLBACKACE_TYPE_SYSTEM_AUDIT_CALLBACK"ACE_TYPE_SYSTEM_RESOURCE_ATTRIBUTE)r5   r6   header_sizeheaderrF   rC   sizebodyrE   rD   r9   r   r   r    r:      s@   zACE.from_bytesN)r;   r<   r=   r>   rQ   r!   r-   propertyrI   r?   r:   r   r   r   r    r@      s    
r@   c                   @   s0   e Zd ZdZdZdd Zdd Zedd Zd	S )
ACLzp
    Access control list, encapsulating a sequence of access control
    entries.

    See [MS-DTYP]: 2.4.5
    z<BBHHHc                 C   s   || _ || _d S r   )r   aces)r   r   rc   r   r   r    r!   "  s   
zACL.__init__c                 C   s   d| j f S )NzACL(%r))rc   r,   r   r   r    r-   (  s   zACL.__repr__c                 C   s   d }g }t | j}|d | ||d  }}t | j|\}}}}	}
t||ks+J t|	D ]#}t d|dd d }|d | ||d  }}|t| q/| ||S )Nz<Hr   r   r   )	r.   rP   rQ   r/   rR   r4   appendr@   r:   )r5   r6   r   rc   r]   r^   	remainingsbz1r_   countsbz2r0   ace_sizeace_datar   r   r    r:   +  s   
zACL.from_bytesN)	r;   r<   r=   r>   rQ   r!   r-   r?   r:   r   r   r   r    rb     s    rb   c                   @   s(   e Zd ZdZdZdd Zedd ZdS )SecurityDescriptorzE
    Represents a security descriptor.

    See [MS-DTYP]: 2.4.6
    z<BBHIIIIc                 C   rA   r   )rC   ownergroupdaclsacl)r   rC   rl   rm   rn   ro   r   r   r    r!   G  s
   
zSecurityDescriptor.__init__c                 C   s   d }d }d }d }|d t | j }t | j|\}}}	}
}}}|dks&J |	t@ s,J |
|||fD ]}d|  krAt|k sDJ  J q2|
rPt||
d  }|r[t||d  }|rft||d  }|rqt||d  }| |	||||S )Nr   r   )	r.   rP   rQ   r/   !SECURITY_DESCRIPTOR_SELF_RELATIVErR   r   r:   rb   )r5   r6   rl   rm   rn   ro   r^   r   rf   rC   owner_offsetgroup_offsetsacl_offsetdacl_offsetoffsetr   r   r    r:   V  s*   "zSecurityDescriptor.from_bytesN)r;   r<   r=   r>   rQ   r!   r?   r:   r   r   r   r    rk   >  s    rk   )r>   r.   #SECURITY_DESCRIPTOR_OWNER_DEFAULTED#SECURITY_DESCRIPTOR_GROUP_DEFAULTED SECURITY_DESCRIPTOR_DACL_PRESENT"SECURITY_DESCRIPTOR_DACL_DEFAULTED SECURITY_DESCRIPTOR_SACL_PRESENT"SECURITY_DESCRIPTOR_SACL_DEFAULTED#SECURITY_DESCRIPTOR_SERVER_SECURITY SECURITY_DESCRIPTOR_DACL_TRUSTED6SECURITY_DESCRIPTOR_DACL_COMPUTED_INHERITANCE_REQUIRED6SECURITY_DESCRIPTOR_SACL_COMPUTED_INHERITANCE_REQUIRED'SECURITY_DESCRIPTOR_DACL_AUTO_INHERITED'SECURITY_DESCRIPTOR_SACL_AUTO_INHERITED"SECURITY_DESCRIPTOR_DACL_PROTECTED"SECURITY_DESCRIPTOR_SACL_PROTECTED$SECURITY_DESCRIPTOR_RM_CONTROL_VALIDrp   ACE_TYPE_ACCESS_ALLOWEDACE_TYPE_ACCESS_DENIEDACE_TYPE_SYSTEM_AUDITACE_TYPE_SYSTEM_ALARM ACE_TYPE_ACCESS_ALLOWED_COMPOUNDrS   rT   rW   ACE_TYPE_SYSTEM_ALARM_OBJECTrY   rZ   rU   rV   r[   ACE_TYPE_SYSTEM_ALARM_CALLBACKrX   %ACE_TYPE_SYSTEM_ALARM_CALLBACK_OBJECTACE_TYPE_SYSTEM_MANDATORY_LABELr\    ACE_TYPE_SYSTEM_SCOPED_POLICY_IDACE_FLAG_OBJECT_INHERITACE_FLAG_CONTAINER_INHERITACE_FLAG_NO_PROPAGATE_INHERITrH   ACE_FLAG_INHERITEDACE_FLAG_SUCCESSFUL_ACCESSACE_FLAG_FAILED_ACCESSSID_NULLSID_EVERYONE	SID_LOCALSID_CONSOLE_LOGONSID_CREATOR_OWNERSID_CREATOR_GROUPSID_OWNER_SERVERSID_GROUP_SERVERSID_OWNER_RIGHTSSID_NT_AUTHORITY
SID_DIALUPSID_NETWORK	SID_BATCHSID_INTERACTIVESID_SERVICESID_ANONYMOUS	SID_PROXY!SID_ENTERPRISE_DOMAIN_CONTROLLERSSID_PRINCIPAL_SELFSID_AUTHENTICATED_USERSSID_RESTRICTED_CODESID_TERMINAL_SERVER_USERSID_REMOTE_INTERACTIVE_LOGONSID_THIS_ORGANIZATIONSID_IUSRSID_LOCAL_SYSTEMSID_LOCAL_SERVICESID_NETWORK_SERVICESID_COMPOUNDED_AUTHENTICATIONSID_CLAIMS_VALIDSID_BUILTIN_ADMINISTRATORSSID_BUILTIN_USERSSID_BUILTIN_GUESTSSID_POWER_USERSSID_ACCOUNT_OPERATORSSID_SERVER_OPERATORSSID_PRINTER_OPERATORSSID_BACKUP_OPERATORSSID_REPLICATORSID_ALIAS_PREW2KCOMPACCSID_REMOTE_DESKTOPSID_NETWORK_CONFIGURATION_OPS"SID_INCOMING_FOREST_TRUST_BUILDERSSID_PERFMON_USERSSID_PERFLOG_USERS&SID_WINDOWS_AUTHORIZATION_ACCESS_GROUP#SID_TERMINAL_SERVER_LICENSE_SERVERSSID_DISTRIBUTED_COM_USERSSID_IIS_IUSRSSID_CRYPTOGRAPHIC_OPERATORSSID_EVENT_LOG_READERS#SID_CERTIFICATE_SERVICE_DCOM_ACCESSSID_RDS_REMOTE_ACCESS_SERVERSSID_RDS_ENDPOINT_SERVERSSID_RDS_MANAGEMENT_SERVERSSID_HYPER_V_ADMINS!SID_ACCESS_CONTROL_ASSISTANCE_OPSSID_REMOTE_MANAGEMENT_USERSSID_WRITE_RESTRICTED_CODESID_NTLM_AUTHENTICATIONSID_SCHANNEL_AUTHENTICATIONSID_DIGEST_AUTHENTICATION!SID_THIS_ORGANIZATION_CERTIFICATESID_NT_SERVICESID_USER_MODE_DRIVERSSID_LOCAL_ACCOUNT4SID_LOCAL_ACCOUNT_AND_MEMBER_OF_ADMINISTRATORS_GROUPSID_OTHER_ORGANIZATIONSID_ALL_APP_PACKAGESSID_ML_UNTRUSTED
SID_ML_LOWSID_ML_MEDIUMSID_ML_MEDIUM_PLUSSID_ML_HIGHSID_ML_SYSTEMSID_ML_PROTECTED_PROCESS.SID_AUTHENTICATION_AUTHORITY_ASSERTED_IDENTITYSID_SERVICE_ASSERTED_IDENTITYSID_FRESH_PUBLIC_KEY_IDENTITYSID_KEY_TRUST_IDENTITYSID_KEY_PROPERTY_MFASID_KEY_PROPERTY_ATTESTATIONobjectr   r@   rb   rk   r   r   r   r    <module>   s   +[%