403Webshell
Server IP : 172.67.201.108  /  Your IP : 216.73.217.39
Web Server : Apache/2.4.68 (Amazon Linux) OpenSSL/3.5.5
System : Linux ip-172-31-69-123.ec2.internal 6.1.176-223.369.amzn2023.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Jul 24 13:34:27 UTC 2026 x86_64
User : ec2-user ( 1000)
PHP Version : 8.4.23
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /lib/python3.9/site-packages/sepolgen/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3.9/site-packages/sepolgen/__pycache__/interfaces.cpython-39.pyc
a

ӌ�iP@�@s�dZddlZddlZddlmZddlmZddlmZddlmZddlm	Z	Gd	d
�d
�Z
dd�Zd
d�Zdd�Z
dd�Zdd�ZGdd�d�ZGdd�d�ZGdd�d�ZGdd�d�ZdS)z7
Classes for representing and manipulating interfaces.
�N�)�access)�	refpolicy)�objectmodel)�matching)�_c@sHeZdZdZdd�Zdd�Zdd�Zeee�Zedd	�d
�Z	dd�Z
d
S)�Paramz;
    Object representing a parameter for an interface.
    cCs"d|_tj|_t��|_d|_dS)N�T)�_Param__namer�SRC_TYPE�type�IdSet�obj_classesZrequired��self�r�7/usr/lib/python3.9/site-packages/sepolgen/interfaces.py�__init__&s
zParam.__init__cCs t�|�std|��||_dS)NzName [%s] is not a param)r�
is_idparam�
ValueErrorr
)r�namerrr�set_name,s
zParam.set_namecCs|jS�N)r
rrrr�get_name1szParam.get_namecCst|jdd��S�Nr)�intrrrrr�<lambda>6�zParam.<lambda>)�fgetcCs d|jtj|jd�|j�fS)Nz0<sepolgen.policygen.Param instance [%s, %s, %s]>� )rr�field_to_strr�joinrrrrr�__repr__8s�zParam.__repr__N)�__name__�
__module__�__qualname__�__doc__rrr�propertyr�numr"rrrrr"s
rcCs�d}||vr�||}||jkr"dS|tjks6|tjkr�|jtjksN|jtjkr�d}|r`|jg}ng}t�|j|�D]}|tj	vrrd}q�qrtj|_q�d}nt
�}||_||_|||j<|r�|j�|j�|S�Nrr)
rrr�TGT_TYPE�	obj_class�	itertools�chainrrZimplicitly_typed_objectsrr�add)rr�av�params�ret�pZavobjs�objrrr�__param_insert>s6

�
�



r4cCs~d}d}t�|j�r.t|jtj||�dkr.d}t�|j�rTt|jtj||�dkrTd}t�|j�rzt|jtj	||�dkrzd}|S)ajExtract the parameters from an access vector.

    Extract the parameters (in the form $N) from an access
    vector, storing them as Param objects in a dictionary.
    Some attempt is made at resolving conflicts with other
    entries in the dict, but if an unresolvable conflict is
    found it is reported to the caller.

    The goal here is to figure out how interface parameters are
    actually used in the interface - e.g., that $1 is a domain used as
    a SRC_TYPE. In general an interface will look like this:

    interface(`foo', `
       allow $1 foo : file read;
    ')

    This is simple to figure out - $1 is a SRC_TYPE. A few interfaces
    are more complex, for example:

    interface(`foo_trans',`
       domain_auto_trans($1,fingerd_exec_t,fingerd_t)

       allow $1 fingerd_t:fd use;
       allow fingerd_t $1:fd use;
       allow fingerd_t $1:fifo_file rw_file_perms;
       allow fingerd_t $1:process sigchld;
    ')

    Here the usage seems ambiguous, but it is not. $1 is still domain
    and therefore should be returned as a SRC_TYPE.

    Returns:
      0  - success
      1  - conflict found
    rFr)
rr�src_typer4rr�tgt_typer*r+�	OBJ_CLASS)r/r0r1Z	found_srcrrr�av_extract_paramsjs$r8cCs"t�|j�rt|jtjd|�SdSr)rr�roler4rZROLE)r9r0rrr�role_extract_params�sr:csl�fdd�}d}||jtj�r"d}||jtj�r4d}||jtj�rFd}t�|j	�rht
|j	tjd��rhd}|S)Ncs.d}|D] }t�|�rt||d��rd}q|Sr))rrr4)�setrr1�x�r0rr�extract_from_set�s
z2type_rule_extract_params.<locals>.extract_from_setrr)�	src_typesrr�	tgt_typesr*rr7rrZ	dest_typer4Z	DEST_TYPE)�ruler0r>r1rr=r�type_rule_extract_params�srBcCs2d}|jD]"}t�|�r
t|tjd|�r
d}q
|Sr))�argsrrr4rr)�ifcallr0r1�argrrr�ifcall_extract_params�s

rFc@seZdZdd�Zdd�ZdS)�AttributeVectorcCsd|_t��|_dS)Nr	)rr�AccessVectorSetrrrrr�szAttributeVector.__init__cCs|j�|�dSr)r�add_av�rr/rrrrI�szAttributeVector.add_avN)r#r$r%rrIrrrrrG�srGc@s$eZdZdd�Zdd�Zdd�ZdS)�AttributeSetcCs
i|_dSr)�
attributesrrrrr�szAttributeSet.__init__cCs||j|j<dSr)rLr)r�attrrrr�add_attr�szAttributeSet.add_attrcCszdd�}d}|D]V}|dd�}|ddkrD|r:|�|�||�}q|r|�d�}t�|�}|�|�q|rv|�|�dS)NcSsH|dd���}t|�dks(|ddkr4td|��t�}|d|_|S)Nr����rZ	Attributez#Syntax error Attribute statement %s)�split�len�SyntaxErrorrGr)�line�fields�arrr�
parse_attr�s
z*AttributeSet.from_file.<locals>.parse_attrrOr�[�,)rNrQr�AccessVectorrI)r�fdrWrVrT�lr/rrr�	from_file�s	



zAttributeSet.from_fileN)r#r$r%rrNr]rrrrrK�srKc@sFeZdZdifdd�Zifdd�Zdd�Zdd	�Zd
d�Zdd
�ZdS)�InterfaceVectorNcCs6d|_d|_t��|_i|_|r,|�||�d|_dS)NTr	F)�enabledrrrHr0�from_interface�expanded)r�	interfacerLrrrr�s
zInterfaceVector.__init__c
Cs"|j|_|��D]>}|jtjjkr$qd|jvr0qt�|�}|D]}|�|�q>q|r�|�	�D]n}|j
D]b}||j
vrvqf|j
|}|jD]@}	t�|	�}|j|jkr�|j
|_|j|jkr�|j
|_|�|�q�qfq\|��D]}
t|
|j�r�q�|��D]}t||j�r�q�|��D]}t||j��r�qdS)NZ	dontaudit)rZavrulesZ	rule_typerZAVRuleZALLOWrZavrule_to_access_vectorsrIZtypeattributesrL�copyr5rr6Zrolesr:r0Z	typerulesrB�interface_callsrF)
rrbrLZavruleZavsr/Z
typeattributerMZattr_vecrVr9rArDrrrr`�s>






zInterfaceVector.from_interfacecCs t||j�dkr|j�|�dSr)r8r0rrIrJrrrrI3szInterfaceVector.add_avcCs8g}|�d|j�|jD]}|�t|��qd�|�S)Nz[InterfaceVector %s]�
)�appendrr�strr!)r�sr/rrr�	to_string9s

zInterfaceVector.to_stringcCs|��Sr)r"rrrr�__str__@szInterfaceVector.__str__cCsd|j|jfS)Nz<InterfaceVector %s:%s>)rr_rrrrr"CszInterfaceVector.__repr__)	r#r$r%rr`rIrirjr"rrrrr^�s4r^c@sxeZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zifdd�Z	difdd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�InterfaceSetNcCsi|_i|_g|_||_dSr)�
interfaces�tgt_type_map�tgt_type_all�output)rrorrrrHszInterfaceSet.__init__cCs|jr|j�|d�dS)Nre)ro�write)rrgrrr�oNszInterfaceSet.ocCs�t|j��dd�d�D]�}|�d|j�t|j��dd�d�D] }|�d|jtj|jf�q@|�d�t|j	�
��}|D]}|�d�|��|�d	�q~qdS)
NcSs|jSr�r�r<rrrrSrz&InterfaceSet.to_file.<locals>.<lambda>)�keyz[InterfaceVector %s cSs|jSrrrrsrrrrUrz%s:%s z]
rYre)�sortedrl�valuesrprr0rr rrZto_listr!)rr[Ziv�paramZavlr/rrr�to_fileRs
zInterfaceSet.to_filecCs�dd�}d}|D]V}|dd�}|ddkrD|r:|�|�||�}q|r|�d�}t�|�}|�|�q|rv|�|�|��dS)NcSs�|dd���}t|�dks(|ddkr4td|��t�}|d|_t|�dkrTdS|dd�D]R}|�d�}t|�dkr�td|��t�}|d|_tj|d|_||j	|j<q`|S)	NrrOrPrr^z)Syntax error InterfaceVector statement %s�:z-Invalid param in InterfaceVector statement %s)
rQrRrSr^rrrZstr_to_fieldrr0)rTrU�ifvZfieldr2rwrrr�	parse_ifv^s 


z)InterfaceSet.from_file.<locals>.parse_ifvrOrrXrY)�add_ifvrQrrZrI�index)rr[r{rzrTr\r/rrrr]]s




zInterfaceSet.from_filecCs||j|j<dSr)rlr)rrzrrrr|�szInterfaceSet.add_ifvcCsv|j��D]f}t�}|jD]2}t�|j�r@|j�|�t�}qN|�|j�q|D]}|j	�
|g�}|�|�qRq
dSr)rlrvr;rrr6rnrfr.rm�
setdefault)rrzr@r/rr\rrrr}�s
zInterfaceSet.indexcCst||�}|�|�dSr)r^r|)rrbrLrzrrrr.�s
zInterfaceSet.addcCs<t�|��|���D]}|�||�q|�|�|��dSr)r,r-rl�	templatesr.�expand_ifcallsr})r�headersrorL�irrr�add_headers�s
zInterfaceSet.add_headerscCsZt�|�rPt|dd��}|t|j�kr,dS|j|d}t|t�rH|S|gSn|gSdSr)rrrrRrC�
isinstance�list)r�idrDr(rErrr�	map_param�s

zInterfaceSet.map_paramc
	Cs�|�|j|�}|durdS|�|j|�}|dur4dS|�|j|�}|durNdSt��}|jD]&}|�||�}	|	durxq\q\|�|	�q\t|�dkr�dS|D]*}
|D] }|D]}|j	�
|
|||�q�q�q�dS)Nr)r�r5r6r+rr
Zperms�updaterRrr.)
rrzr/rDr?r@rZ	new_permsZpermr2r5r6r+rrr�
map_add_av�s*
zInterfaceSet.map_add_avc	Cs�|dfg}|j|j}d|_t|�dkr�|�d�\}}|j|j}||krl|jD]}|�|||�qP|jrlq|��D]l}	|	j|jkr�|�	t
d��dSz||	j}
Wn*ty�|�	t
d|	j��YqtYn0|�|
|	f�qtqdS)NTrrOzFound circular interface classz#Missing interface definition for %s)
rlrrarR�poprr�rdZifnamerqr�KeyErrorrf)rrb�
if_by_name�stackrzZcurZ
cur_ifcallZcur_ifvr/rDZnewifrrr�do_expand_ifcalls�s*


zInterfaceSet.do_expand_ifcallscCsRi}t�|��|���D]}|||j<qt�|��|���D]}|�||�q<dSr)r,r-rlrrr�)rr�r�r�rbrrrr��s
zInterfaceSet.expand_ifcalls)N)r#r$r%rrqrxr]r|r}r.r�r�r�r�r�rrrrrkGs
#$rk)r&rcr,r	rrrrZsepolgeni18nrrr4r8r:rBrFrGrKr^rkrrrr�<module>s",4Z

Youez - 2016 - github.com/yon3zu
LinuXploit