
    5iq                         d dl mZ d dlZd dlZd dlZd dlmZ  G d dej                  Zg dZ	g dZ
 G d d	          ZdS )
    )ACEN)Listc                       e Zd ZdZdZdS )ACL_REVISION      N)__name__
__module____qualname__NO_DSDS     E/home/kali/Ninja/venv/lib/python3.11/site-packages/winacl/dtyp/acl.pyr   r      s        	
r   r   )r      r               )            r   c                   l    e Zd ZddZedd            Zd Zd Zd ZddZ	edd            Z
d	 Zd
 ZdS )ACLNc                 h    d | _         d| _        d | _        d | _        d| _        g | _        || _        d S Nr   )AclRevisionSbz1AclSizeAceCountSbz2acessd_object_type)selfr$   s     r   __init__zACL.__init__   s;    $$)$,$-$)$)&$r   c                    t          |          }t                              |                     d          dd          |_        t                              |                     d          dd          |_        t                              |                     d          dd          |_        t                              |                     d          dd          |_        t                              |                     d          dd          |_        t          |j                  D ]/}|j
                            t          j        | |                     0|S )Nr   littleFsignedr   )r   int
from_bytesreadr   r   r    r!   r"   ranger#   appendr   from_buffer)buffr$   acl_s       r   r0   zACL.from_buffer   s    N#NN499Q<<ENJJ#/^^DIIaLL(U^CC#(tyy||XFF#+		!hGG#,^^DIIaLL(U^CC#( : :a8??3?4889999	*r   c                     t          j                    }|                     |           |                    d           |                                S r   )ioBytesIO	to_bufferseekr-   )r%   r1   s     r   to_byteszACL.to_bytes%   s<    	$..))A,,,	r   c                 ,   t          j                    }t          | j                  | _        | j        D ]}|                    |           d|                                z   | _        |                    | j	        
                    ddd                     |                    | j        
                    ddd                     |                    | j        
                    ddd                     |                    | j        
                    ddd                     |                    | j        
                    ddd                     |                    d           |                    |                                           d S )Nr   r   r(   Fr)   r   r   )r5   r6   lenr#   r!   r7   tellr    writer   r9   r   r"   r8   r-   )r%   r1   	data_buffaces       r   r7   zACL.to_buffer+   sZ   jll)di..$-Y  c==Y^^%%%$,**T&&q(U&CCDDD**TY8e<<===**T\""1h"??@@@**T]##Ax%#@@AAA**TY8e<<===..**Y^^r   c                 H    d}| j         D ]}|dt          |          z  z  }|S )Nz=== ACL ===
z%s
)r#   str)r%   tr?   s      r   __str__zACL.__str__<   s4    !Y  c3s8811	
(r   c                 N    d}| j         D ]}||                    |          z  }|S )N )r#   to_sddl)r%   object_typerB   r?   s       r   rF   zACL.to_sddlB   s5    !Y ! !cK   11	
(r   c                 X   t                      }d|_        d|_        |                     d          D ]w}t	          j        |||          }|j                            |           |xj        dz  c_        |j        dk    r)|j        j	        t          v rt          j        j	        |_        x|S )Nr   r   z)()rG   
domain_sidr   )r   r   r!   splitr   	from_sddlr#   r/   AceTypevalueACL_REV_DS_ALLOWED_TYPESr   r   )sddl_strrG   rI   r2   ace_sddlr?   s         r   rK   zACL.from_sddlH   s    ##/#,..&& - -h	x{	T	T	T38??3<<1<<	o
{444#,S_	*r   c                    t          |t                    sdS | j        |j        k    rdS | j        |j        k    rdS | j        |j        k    rdS i }i }| j        D ]}t          j                    }|                    |           |	                                }|
                    dd           d|t          j        |                    |                                                    <   |j        D ]}t          j                    }|                    |           |	                                }|
                    dd           d|t          j        |                    |                                                    <   |D ]	}||vr dS 
|D ]	}||vr dS 
t          |                                |                                          D ]\  }}	||	k    r dS dS )NFr   r   T)
isinstancer   r   r   r"   r#   r5   r6   r7   r<   r8   hashlibsha1r-   digestzipkeys)
r%   r2   	this_aces	that_acesr?   r1   poshahthishthats
             r   __eq__z
ACL.__eq__X   s   	C		 
%	((
%	Y#(
%	Y#(
%))Y 8 8c
*,,4==	399Qq>>>679W\$))C..))002233X 8 8c
*,,4==	399Qq>>>679W\$))C..))002233  b	55    b	55  )..**INN,<,<==  leUunn55  
r   c                    i }| j         |j         k    r| j         |j         g|d<   | j        |j        k    r| j        |j        g|d<   | j        |j        k    r| j        |j        g|d<   i }i }| j        D ]}t	          j                    }|                    |           |                                }|                    dd           |	                    |          }||t          j        |                                          <   |j        D ]}t	          j                    }|                    |           |                                }|                    dd           |	                    |          }||t          j        |                                          <   |D ]}	|	|vr||	         |d<   |D ]}	|	|vr||	         |d<   |S )Nrevisionr   r"   r   deletedadded)r   r   r"   r#   r5   r6   r7   r<   r8   r-   rS   rT   rU   )
r%   r2   diff_resrX   rY   r?   r1   rZ   datar[   s
             r   diffzACL.diff   s   (	((+S_=8J	Y#(y#(+8F	Y#(y#(+8F))Y 1 1c
*,,4==	399Qq>>>
))C..4,09W\$&&(())X 1 1c
*,,4==	399Qq>>>
))C..4,09W\$&&(()) ( (b	#B-HY & &b	!"HW 
/r   )N)NN)r	   r
   r   r&   staticmethodr0   r9   r7   rC   rF   rK   r^   re   r   r   r   r   r      s        ' ' ' ' 	 	 	 ,	    "         ,& & &P' ' ' ' 'r   r   )winacl.dtyp.acer   r5   enumrS   typingr   Enumr   ACL_REV_NODS_ALLOWED_TYPESrN   r   r   r   r   <module>rl      s          				            49    HGG ;;; Y Y Y Y Y Y Y Y Y Yr   