o
    j                     @   s  d dl Z d dlmZmZ d dlmZ deeef de j fddZdefdd	Z	d
ede
fddZd
ede
fddZde
fddZdnde
fddZdd Zde j fddZdddddddddZi d d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAi dBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldm	ZdS )o    N)IPv4AddressIPv6Address)Uniondtreturnc                 C   s4   t | trt| d} tdddtj| d d S )z
    Converting Windows timestamps to datetime.datetime format
    :param dt: Windows timestamp as array of bytes or integer
    :type dt: bytearray | int
    :return: datetime.datetime
    littleA     
   microseconds)
isinstancebytesint
from_bytesdatetime	timedelta)r    r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/msldap/commons/utils.pytimestamp2datetime   s   
r   c                 C   s:   | t  ddd }t|t jdd d }|jddddS )	Nr   r	   r   r
      r   F)signed)r   r   r   to_bytes)r   deltansr   r   r   datetime2timestamp   s   r   datac                 C      t t| S N)strr   r   r   r   r   
bytes2ipv4      r!   c                 C   r   r   )r   r   r    r   r   r   
bytes2ipv6   r"   r#   c                    s     fddt dt D S )Nc                    s   g | ]
} ||  qS r   r   ).0iswr   r   
<listcomp>#   s    zwrap.<locals>.<listcomp>r   )rangelenr&   r   r&   r   wrap"   s    r,   c                 C   sn   | d } d| }d| d d  d| d  d| d	 d
  d| d	 d  d| d d  g}d |d ||S )Ntbs_certificate zCert Subject: %ssubjectcommon_namezCert Serial: %sserial_numberzCert Start: %svalidity
not_beforezCert End: %s	not_afterzCert Issuer: %sissuerz{}{}z
{})formatjoin)certoffsetblanksmsgr   r   r   
print_cert&   s   
r<   c                 C   s$   t | } | dkr
dS t | d d S )zT
    Convert Windows timestamp (100 ns since 1 Jan 1601) to
    unix timestamp.
    r   l     }*{Gi )r   )secondsr   r   r   win_timestamp_to_unix3   s   r>   c                 C   s:   | d u s| dks| dks| dkrdS t dt|  }|S )Nr   0 )maxr   	timestamp)r   tsr   r   r   bh_dt_convert>   s    rE   z2000 Mixed/Nativez2003 Interim20032008z2008 R22012z2012 R22016)r   r	                     zS-1-0zNull AuthorityzS-1-0-0NobodyzS-1-1zWorld AuthorityzS-1-1-0EveryonezS-1-2zLocal AuthorityzS-1-2-0LocalzS-1-3zCreator AuthorityzS-1-3-0zCreator OwnerzS-1-3-1zCreator GroupzS-1-3-4zOwner RightszS-1-4zNon-unique AuthorityzS-1-5zNT AuthorityzS-1-5-1DialupzS-1-5-2NetworkzS-1-5-3BatchzS-1-5-4InteractivezS-1-5-5-X-YzLogon SessionzS-1-5-6ServicezS-1-5-7	AnonymouszS-1-5-9zEnterprise Domain ControllerszS-1-5-10zPrincipal SelfzS-1-5-11zAuthenticated UserszS-1-5-12zRestricted CodezS-1-5-13zTerminal Server UserszS-1-5-14zRemote Interactive LogonzS-1-5-17IUSRzS-1-5-18zLocal SystemzS-1-5-19zNT Authority Local ServicezS-1-5-20zNT Authority Network ServicezS-1-5-32-544AdministratorszS-1-5-32-545UserszS-1-5-32-546GuestszS-1-5-32-547zPower UserszS-1-5-32-548zAccount OperatorszServer OperatorszPrint OperatorszBackup OperatorsReplicatorszStorage Replica AdministratorszNTLM AuthenticationzSChannel AuthenticationzDigest Authenticationz
NT Service)	zS-1-5-32-549zS-1-5-32-550zS-1-5-32-551zS-1-5-32-552zS-1-5-32-582zS-1-5-64-10zS-1-5-64-14zS-1-5-64-21zS-1-5-80)r   )r   	ipaddressr   r   typingr   r   r   r   r   r   r!   r#   r,   r<   r>   rE   FUNCTIONAL_LEVELS
KNOWN_SIDSr   r   r   r   <module>   s    	
 !"#