o
    jO                     @   sr  d dl Z d dlZd dlmZ G dd dZi 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&i d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHi dIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidji dkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddddddddddddddddddZdd e D Zi ddddddddddddddddddddddddddddddddddddddddƜZdd e D Z	G ddɄ dej
ZG dd˄ dej
ZG dd̈́ dej
ZdZdZdZdZdZi dd$dejjdd,dejjdejjdejjddDdejjdejjddݓdddejjdejjdejjdejjdejjdejji dedejjdd dedededejjdej jdej!jdedddej"jdej#jdd*dej$jdd.dej%jej&jej'jej(jej)jej*jej+jej,jd"d8dd
Z-dd e- D Z.e/dkr7e0dZ1e2e13  dS dS )    N)Listc                   @   s   e Zd Zdd Zedd Zedd Zeddd	Zed
d Zedd Z	dd Z
dd Zdd Zdd ZedddZdS )SIDc                 C   s.   d | _ d | _d | _g | _d | _d | _d | _d S N)RevisionSubAuthorityCountIdentifierAuthoritySubAuthorityis_wellknownwellknow_namewildcard)self r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/winacl/dtyp/sid.py__init__   s   
zSID.__init__c                 C      | t v rt |  S dS NF)well_known_sids_sid_name_mapxr   r   r   wellknown_sid_lookup      zSID.wellknown_sid_lookupc                 C   r   r   )well_known_sids_name_sid_mapr   r   r   r   wellknown_name_lookup   r   zSID.wellknown_name_lookupFc                 C   s   | d d dkrt dt }||_d|_| dd  } | dd }|d d dkr5t|dd  d	|_nt||_| ddd  D ]'}zt|}W n t yc } z|d
krY|W Y d }~nd }~ww |j| qC|S )N   S-1-zThis is not a SID   -r      0x   T)		Exceptionr   r   r   splitintr   r   append)sid_strr   sidtper   r   r   from_string   s*   
zSID.from_stringc                 C   s   t t| S r   )r   from_bufferioBytesIO)datar   r   r   
from_bytes6   s   zSID.from_bytesc                 C   s   t  }tj| dddd|_tj| dddd|_tj| dddd|_t|jD ]}|j	tj| dddd q,|S Nr   littleF)signed   bigr   )
r   r"   r.   readr   r   r   ranger   r#   )buffr%   _r   r   r   r*   :   s    zSID.from_bufferc                 C   sf   | j jdddd}|t| jjdddd7 }|| jjdddd7 }| jD ]}||jdddd7 }q$|S r/   )r   to_byteslenr   r   r   r&   ir   r   r   r8   D   s   
zSID.to_bytesc                 C   sd   d}| j dk r|t| j 7 }n|d| j dd  dd 7 }| jD ]
}|dt| 7 }q%|S )	Nr   l        r   r2   r3      0r   )r   strr8   hexupperrjustr   r:   r   r   r   __str__L   s   
&
zSID.__str__c                 C   s4   t |trt| t|kS t |trt| |kS tS r   )
isinstancer   r>   NotImplemented)r   otherr   r   r   __eq__V   s
   

z
SID.__eq__c                 C   s   t | }|S r   )r>   )r   r   r   r   r   to_sddl]   s   zSID.to_sddlNc                 C   sp   t | dkrt| S | tvrtd|  t|  }t|tr#t|S |d u r-td|  t|d t| S )Nr   z3%s was not found in the well known sid definitions!z.Missing domain_sid! Cant convert "%s" to a SIDr   )r9   r   r)   sddl_name_val_mapr    rC   r>   )sddl
domain_sidaccount_sid_valr   r   r   	from_sddlk   s   


zSID.from_sddl)Fr   )__name__
__module____qualname__r   staticmethodr   r   r)   r.   r*   r8   rB   rF   rG   rL   r   r   r   r   r      s$    



	
r   NULLzS-1-0-0EVERYONEzS-1-1-0LOCALzS-1-2-0CONSOLE_LOGONzS-1-2-1CREATOR_OWNERzS-1-3-0CREATOR_GROUPzS-1-3-1OWNER_SERVERzS-1-3-2GROUP_SERVERzS-1-3-3OWNER_RIGHTSzS-1-3-4NT_AUTHORITYzS-1-5DIALUPzS-1-5-1NETWORKzS-1-5-2BATCHzS-1-5-3INTERACTIVEzS-1-5-4SERVICEzS-1-5-6	ANONYMOUSzS-1-5-7PROXYzS-1-5-8ENTERPRISE_DOMAIN_CONTROLLERSzS-1-5-9PRINCIPAL_SELFzS-1-5-10AUTHENTICATED_USERSzS-1-5-11RESTRICTED_CODEzS-1-5-12TERMINAL_SERVER_USERzS-1-5-13REMOTE_INTERACTIVE_LOGONzS-1-5-14THIS_ORGANIZATIONzS-1-5-15IUSRzS-1-5-17LOCAL_SYSTEMzS-1-5-18LOCAL_SERVICEzS-1-5-19NETWORK_SERVICEzS-1-5-20COMPOUNDED_AUTHENTICATIONzS-1-5-21-0-0-0-496CLAIMS_VALIDzS-1-5-21-0-0-0-497BUILTIN_ADMINISTRATORSzS-1-5-32-544BUILTIN_USERSzS-1-5-32-545BUILTIN_GUESTSzS-1-5-32-546POWER_USERSzS-1-5-32-547ACCOUNT_OPERATORSzS-1-5-32-548SERVER_OPERATORSzS-1-5-32-549PRINTER_OPERATORSzS-1-5-32-550BACKUP_OPERATORSzS-1-5-32-551
REPLICATORzS-1-5-32-552ALIAS_PREW2KCOMPACCzS-1-5-32-554REMOTE_DESKTOPzS-1-5-32-555NETWORK_CONFIGURATION_OPSzS-1-5-32-556INCOMING_FOREST_TRUST_BUILDERSzS-1-5-32-557PERFMON_USERSzS-1-5-32-558PERFLOG_USERSzS-1-5-32-559"WINDOWS_AUTHORIZATION_ACCESS_GROUPzS-1-5-32-560TERMINAL_SERVER_LICENSE_SERVERSzS-1-5-32-561DISTRIBUTED_COM_USERSzS-1-5-32-562	IIS_IUSRSzS-1-5-32-568CRYPTOGRAPHIC_OPERATORSzS-1-5-32-569EVENT_LOG_READERSzS-1-5-32-573CERTIFICATE_SERVICE_DCOM_ACCESSzS-1-5-32-574RDS_REMOTE_ACCESS_SERVERSzS-1-5-32-575RDS_ENDPOINT_SERVERSzS-1-5-32-576RDS_MANAGEMENT_SERVERSzS-1-5-32-577HYPER_V_ADMINSzS-1-5-32-578ACCESS_CONTROL_ASSISTANCE_OPSzS-1-5-32-579REMOTE_MANAGEMENT_USERSzS-1-5-32-580WRITE_RESTRICTED_CODEzS-1-5-33NTLM_AUTHENTICATIONzS-1-5-64-10SCHANNEL_AUTHENTICATIONzS-1-5-64-14DIGEST_AUTHENTICATIONzS-1-5-64-21THIS_ORGANIZATION_CERTIFICATEz
S-1-5-65-1
NT_SERVICEzS-1-5-80USER_MODE_DRIVERSzS-1-5-84-0-0-0-0-0LOCAL_ACCOUNTz	S-1-5-1130LOCAL_ACCOUNT_AND_MEMBER_OF_ADMINISTRATORS_GROUPz	S-1-5-114OTHER_ORGANIZATIONz
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-16-28672zS-1-18-1zS-1-18-2zS-1-18-3zS-1-18-4zS-1-18-5zS-1-18-6)ALL_APP_PACKAGESML_UNTRUSTEDML_LOW	ML_MEDIUMML_MEDIUM_PLUSML_HIGH	ML_SYSTEMML_PROTECTED_PROCESSML_SECURE_PROCESS*AUTHENTICATION_AUTHORITY_ASSERTED_IDENTITYSERVICE_ASSERTED_IDENTITYFRESH_PUBLIC_KEY_IDENTITYKEY_TRUST_IDENTITYKEY_PROPERTY_MFAKEY_PROPERTY_ATTESTATIONc                 C      i | ]\}}||qS r   r   .0kvr   r   r   
<dictcomp>       r   LOGON_IDzS-1-5-5-x-y&ENTERPRISE_READONLY_DOMAIN_CONTROLLERSzS-1-5-21-<root domain>-498ADMINISTRATORzS-1-5-21-<machine>-500GUESTzS-1-5-21-<machine>-501KRBTGzS-1-5-21-<domain>-502DOMAIN_ADMINSzS-1-5-21-<domain>-512DOMAIN_USERSzS-1-5-21-<domain>-513DOMAIN_GUESTSzS-1-5-21-<domain>-514DOMAIN_COMPUTERSzS-1-5-21-<domain>-515DOMAIN_DOMAIN_CONTROLLERSzS-1-5-21-<domain>-516CERT_PUBLISHERSzS-1-5-21-<domain>-517SCHEMA_ADMINISTRATORSzS-1-5-21-<root-domain>-518ENTERPRISE_ADMINSzS-1-5-21-<root-domain>-519GROUP_POLICY_CREATOR_OWNERSzS-1-5-21-<domain>-520READONLY_DOMAIN_CONTROLLERSzS-1-5-21-<domain>-521CLONEABLE_CONTROLLERSzS-1-5-21-<domain>-522PROTECTED_USERSzS-1-5-21-<domain>-525zS-1-5-21-<domain>-526zS-1-5-21-<domain>-527zS-1-5-21-<domain>-553zS-1-5-21-<domain>-571zS-1-5-21-<domain>-572)
KEY_ADMINSENTERPRISE_KEY_ADMINSRAS_SERVERS'ALLOWED_RODC_PASSWORD_REPLICATION_GROUP&DENIED_RODC_PASSWORD_REPLICATION_GROUPc                 C   r   r   r   r   r   r   r   r      r   c                   @   s   e 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#S )$DOMAIN_ALIAS_RIDi   i!  i"  i#  i$  i%  i&  i'  i(  i)  i*  i+  i,  i-  i.  i/  i0  i1  i2  i8  i9  i;  i<  i=  i>  i?  i@  iA  iB  iC  iD  iE  iF  iG  N)%rM   rN   rO   ADMINSUSERSGUESTSrr   ACCOUNT_OPS
SYSTEM_OPS	PRINT_OPS
BACKUP_OPSrw   r   PREW2KCOMPACCESSREMOTE_DESKTOP_USERSrz   r{   MONITORING_USERSLOGGING_USERSAUTHORIZATIONACCESSTS_LICENSE_SERVERS
DCOM_USERSIUSERSCRYPTO_OPERATORSCACHEABLE_PRINCIPALS_GROUPNON_CACHEABLE_PRINCIPALS_GROUPEVENT_LOG_READERS_GROUPCERTSVC_DCOM_ACCESS_GROUPr   r   r   r   r   r   DEFAULT_ACCOUNTSTORAGE_REPLICA_ADMINSDEVICE_OWNERSr   r   r   r   r      sF    r   c                   @   sL   e 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S )DOMAIN_GROUP_RIDi   i  i  i  i  i  i  i  i  i  i	  i
  i  i  i  i  N)rM   rN   rO   r   r   r   	COMPUTERSCONTROLLERSCERT_ADMINSr   SCHEMA_ADMINSr   POLICY_ADMINSREADONLY_CONTROLLERSr   CDC_RESERVEDr   r   r   r   r   r   r   r     s"    r   c                   @   s(   e Zd ZdZdZdZdZdZdZdZ	dS )	SECURITY_MANDATORYr   i   i    i !  i 0  i @  i P  N)
rM   rN   rO   UNTRUSTED_RIDLOW_RID
MEDIUM_RIDMEDIUM_PLUS_RIDHIGH_RID
SYSTEM_RIDPROTECTED_PROCESS_RIDr   r   r   r   r   (  s    r   i  i     	      ANAOAUBABGBOBUCACDCGzS-1-3CODADCDDDGDUEAEDHIIULALGLSLWMENONSNUPAPOPSPURCRD)
RERORSRUSASISOSUSYWDc                 C   r   r   r   r   r   r   r   r   i  r   __main__)4r+   enumtypingr   r   r   itemsr   well_known_sids_re_name_sid_mapwell_known_sids_re_sid_name_mapEnumr   r   r   DOMAIN_USER_RID_ADMINDOMAIN_USER_RID_GUESTSECURITY_LOCAL_SERVICE_RIDSECURITY_SERVER_LOGON_RIDSECURITY_NETWORK_SERVICE_RIDr   valuer   r   r   r   r   r   r   r   r   r   r   r   rz   r   r   rr   r   rw   r   r   r   r   r   r   rH   sddl_val_name_maprM   r)   r%   printrG   r   r   r   r   <module>   sJ   w	
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEV	
$		
 !"#$0

