
    Gi~                     R    d Z ddlZddlmc mZ ddlZddlm	Z	  G d d          Z
dS )   危险命令检测测试。    N)is_dangerous_commandc                   B    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )TestDangerousCommandDetectionr   c                 F   d}t          |          }d}||u }|st          j        d|fd||f          dt          j                    v st          j        t                     rt          j        t                     ndt          j        |          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d	x}x}x}}d
}t          |          }d}||u }|st          j        d|fd||f          dt          j                    v st          j        t                     rt          j        t                     ndt          j        |          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d	x}x}x}}d}t          |          }d}||u }|st          j        d|fd||f          dt          j                    v st          j        t                     rt          j        t                     ndt          j        |          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d	x}x}x}}d}t          |          }d}||u }|st          j        d|fd||f          dt          j                    v st          j        t                     rt          j        t                     ndt          j        |          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d	x}x}x}}d	S )u   安全命令不被标记。zls -laFisz0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} is %(py7)sr   py0py2py4py7assert %(py9)spy9Nzcat file.txtz
echo hellopwd	r   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationself@py_assert1@py_assert3@py_assert6@py_assert5@py_format8@py_format10s          //root/projects/qq-shell/tests/test_guardrail.pytest_safe_commandsz0TestDangerousCommandDetection.test_safe_commands
   s   $,6#H--66-6666666666-666666666666#66666#666666H6666-666666666666666666666666666666666$2<#N33<u<3u<<<<<<<<<<3u<<<<<<<<<<<<#<<<<<#<<<<<<N<<<<3<<<<u<<<<<<<<<<<<<<<<<<<<<<<<<<<<<$0:#L11:U:1U::::::::::1U::::::::::::#:::::#::::::L::::1::::U:::::::::::::::::::::::::::::$)3#E**3e3*e3333333333*e333333333333#33333#333333E3333*3333e3333333333333333333333333333333    c                 v   d}t          |          }d}||u }|st          j        d|fd||f          dt          j                    v st          j        t                     rt          j        t                     ndt          j        |          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d	x}x}x}}d
}t          |          }d}||u }|st          j        d|fd||f          dt          j                    v st          j        t                     rt          j        t                     ndt          j        |          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d	x}x}x}}d}t          |          }d}||u }|st          j        d|fd||f          dt          j                    v st          j        t                     rt          j        t                     ndt          j        |          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d	x}x}x}}d	S )u   检测 rm -rf。zrm -rf /Tr   r
   r   r   r   r   Nzrm -rf ./node_moduleszrm -fr /tmpr   r   s          r$   test_rm_rf_detectionz2TestDangerousCommandDetection.test_rm_rf_detection   s   $.7#J//747/47777777777/4777777777777#77777#777777J7777/7777477777777777777777777777777777$;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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DDDDD$1:#M22:d:2d::::::::::2d::::::::::::#:::::#::::::M::::2::::d:::::::::::::::::::::::::::::::r&   c                    d}t          |          }d}||u }|st          j        d|fd||f          dt          j                    v st          j        t                     rt          j        t                     ndt          j        |          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d	x}x}x}}d
}t          |          }d}||u }|st          j        d|fd||f          dt          j                    v st          j        t                     rt          j        t                     ndt          j        |          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d	x}x}x}}d	S )u   检测 chmod 777。zchmod 777 /tmpTr   r
   r   r   r   r   Nzchmod -R 777 /varr   r   s          r$   test_chmod_777_detectionz6TestDangerousCommandDetection.test_chmod_777_detection   s   $4=#$455==5==========5============#=====#======$4====5=================================$7@#$788@D@8D@@@@@@@@@@8D@@@@@@@@@@@@#@@@@@#@@@@@@$7@@@@8@@@@D@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@r&   c                    d}t          |          }d}||u }|st          j        d|fd||f          dt          j                    v st          j        t                     rt          j        t                     ndt          j        |          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d	x}x}x}}d
}t          |          }d}||u }|st          j        d|fd||f          dt          j                    v st          j        t                     rt          j        t                     ndt          j        |          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d	x}x}x}}d	S )u   检测 sudo 提权。zsudo rm fileTr   r
   r   r   r   r   Nzsudo apt updater   r   s          r$   test_sudo_detectionz1TestDangerousCommandDetection.test_sudo_detection   s   $2;#N33;t;3t;;;;;;;;;;3t;;;;;;;;;;;;#;;;;;#;;;;;;N;;;;3;;;;t;;;;;;;;;;;;;;;;;;;;;;;;;;;;;$5>#$566>$>6$>>>>>>>>>>6$>>>>>>>>>>>>#>>>>>#>>>>>>$5>>>>6>>>>$>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>r&   c                 v   d}t          |          }d}||u }|st          j        d|fd||f          dt          j                    v st          j        t                     rt          j        t                     ndt          j        |          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d	x}x}x}}d
}t          |          }d}||u }|st          j        d|fd||f          dt          j                    v st          j        t                     rt          j        t                     ndt          j        |          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d	x}x}x}}d}t          |          }d}||u }|st          j        d|fd||f          dt          j                    v st          j        t                     rt          j        t                     ndt          j        |          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d	x}x}x}}d	S )u   检测命令注入。zsh -c 'rm -rf /'Tr   r
   r   r   r   r   Nzbash -c 'evil'zecho 'rm -rf' | bashr   r   s          r$    test_command_injection_detectionz>TestDangerousCommandDetection.test_command_injection_detection!   s   $6?#$677?4?74??????????74????????????#?????#??????$6????7????4?????????????????????????????$4=#$455==5==========5============#=====#======$4====5=================================$:C#$:;;CtC;tCCCCCCCCCC;tCCCCCCCCCCCC#CCCCC#CCCCCC$:CCCC;CCCCtCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCr&   c                 v   d}t          |          }d}||u }|st          j        d|fd||f          dt          j                    v st          j        t                     rt          j        t                     ndt          j        |          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d	x}x}x}}d
}t          |          }d}||u }|st          j        d|fd||f          dt          j                    v st          j        t                     rt          j        t                     ndt          j        |          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d	x}x}x}}d}t          |          }d}||u }|st          j        d|fd||f          dt          j                    v st          j        t                     rt          j        t                     ndt          j        |          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d	x}x}x}}d	S )u   检测磁盘操作。zdd if=/dev/zero of=/dev/sdaTr   r
   r   r   r   r   Nzmkfs.ext4 /dev/sda1zfdisk /dev/sdar   r   s          r$   test_disk_operations_detectionz<TestDangerousCommandDetection.test_disk_operations_detection'   s   $AJ#$ABBJdJBdJJJJJJJJJJBdJJJJJJJJJJJJ#JJJJJ#JJJJJJ$AJJJJBJJJJdJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ$9B#$9::BdB:dBBBBBBBBBB:dBBBBBBBBBBBB#BBBBB#BBBBBB$9BBBB:BBBBdBBBBBBBBBBBBBBBBBBBBBBBBBBBBB$4=#$455==5==========5============#=====#======$4====5===================================r&   c                 v   d}t          |          }d}||u }|st          j        d|fd||f          dt          j                    v st          j        t                     rt          j        t                     ndt          j        |          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d	x}x}x}}d
}t          |          }d}||u }|st          j        d|fd||f          dt          j                    v st          j        t                     rt          j        t                     ndt          j        |          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d	x}x}x}}d}t          |          }d}||u }|st          j        d|fd||f          dt          j                    v st          j        t                     rt          j        t                     ndt          j        |          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d	x}x}x}}d	S )u   检测系统操作。zshutdown nowTr   r
   r   r   r   r   Nrebootziptables -Fr   r   s          r$    test_system_operations_detectionz>TestDangerousCommandDetection.test_system_operations_detection-   s   $2;#N33;t;3t;;;;;;;;;;3t;;;;;;;;;;;;#;;;;;#;;;;;;N;;;;3;;;;t;;;;;;;;;;;;;;;;;;;;;;;;;;;;;$,5#H--55-5555555555-555555555555#55555#555555H5555-555555555555555555555555555555555$1:#M22:d:2d::::::::::2d::::::::::::#:::::#::::::M::::2::::d:::::::::::::::::::::::::::::::r&   c                    d}t          |          }d}||u }|st          j        d|fd||f          dt          j                    v st          j        t                     rt          j        t                     ndt          j        |          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d	x}x}x}}d
}t          |          }d}||u }|st          j        d|fd||f          dt          j                    v st          j        t                     rt          j        t                     ndt          j        |          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d	x}x}x}}d	S )u!   单独删除文件是安全的。zrm file.txtFr   r
   r   r   r   r   Nzrm -i file.txtr   r   s          r$   test_safe_rm_single_filez6TestDangerousCommandDetection.test_safe_rm_single_file3   s   $1;#M22;e;2e;;;;;;;;;;2e;;;;;;;;;;;;#;;;;;#;;;;;;M;;;;2;;;;e;;;;;;;;;;;;;;;;;;;;;;;;;;;;;$4>#$455>>5>>>>>>>>>>5>>>>>>>>>>>>#>>>>>#>>>>>>$4>>>>5>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>r&   N)__name__
__module____qualname____doc__r%   r(   r*   r,   r.   r0   r3   r5    r&   r$   r   r      s        %%4 4 4; ; ;A A A
? ? ?
D D D> > >; ; ;? ? ? ? ?r&   r   )r9   builtinsr   _pytest.assertion.rewrite	assertionrewriter   pytestbutler.security.guardrailr   r   r:   r&   r$   <module>rA      sr    ! !               : : : : : :/? /? /? /? /? /? /? /? /? /?r&   