
    h                     b   d Z ddlZddlZddlmZ ddlZddlmZ ddlZddl	Z	ddl
Z
ddlmZ ddlmZmZmZmZ ddlmZmZ ddlmZ dd	lmZmZmZmZmZ  G d
 de          Z G d de          Z G d dej                  Z ddZ!ddZ" G d de          Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*dS )z1
Run commands when the Scapy interpreter starts.
    N)StringIO)Queue)conf)NoThemeDefaultTheme
HTMLTheme2LatexTheme2)	log_scapyScapy_Exception)
tex_escape)AnyOptionalTextIODictTuplec                       e Zd ZdZdS )StopAutorun N)__name__
__module____qualname__code_run     Q/mounts/lovelace/software/anaconda3/lib/python3.11/site-packages/scapy/autorun.pyr   r   %   s        HHHr   r   c                       e Zd ZdS )StopAutorunTimeoutN)r   r   r   r   r   r   r   r   )   s        Dr   r   c                       e Zd Zd Zd ZdS )ScapyAutorunInterpreterc                 :    t          j        j        | g|R i | d S N)codeInteractiveInterpreter__init__)selfargskargss      r   r$   z ScapyAutorunInterpreter.__init__.   s,    #,TBDBBBEBBBBBr   c                     d S r!   r   )r%   datas     r   writezScapyAutorunInterpreter.write2   s    r   N)r   r   r   r$   r*   r   r   r   r   r   -   s5        C C C    r   r   c                    t           j        }	 	 |ddlm}  |            }t	          |          }	 t
          j        d         d= n# t          $ r Y nw xY w||t           _        d}|                                 }|	                    d           |
                                 	 |r>t          j                            t          j                            dd	                     n=t          j                            t          j                            d
d                     |                                }t!          |           |d|z   z  }d t          _        |                    |          rt          j        r`t'          j        t          j        t          j        t          j        j        t          j                   d t          _        	 |t           _        dS d}t3          |          dk    rnNn# t4          $ r Y nw xY w|t           _        n# |t           _        w xY w	 t
          j        d         d         S # t          $ r# t
          j                            dd           cY S w xY w)Nr   )_scapy_builtins)localsscapy_session_r   Tps2z... ps1z>>> 
)fileF   )r   verb
scapy.mainr,   r   builtins__dict__KeyError
splitlinesappendreversesysstderrr*   getpopprint
last_value	runsource	tracebackprint_exception	last_typelast_tracebacktb_nextstdoutlen
SystemExit)	_cmds
my_globalsr5   svr,   interpcmdcmdslines	            r   autorun_commandsrS   7   si   	B)&	!666666,_..
,J???F%o6s;;    	C##%%DKKOOOLLNNN FJ$$S\%5%5eV%D%DEEEEJ$$S\%5%5eV%D%DEEExxzzdtd{"!%##C(( > !-cm.1n.1.@.H36:? ? ? ? &*CN  			 t99>>+*  	 	 	D	 		B	0 1#66 0 0 0 $$S$/////0se   "G3 A G3 
AG3 AE8G3 G3 2H 3
H =H ?H  H H"H: :*I'&I'c                 8    |t           fi S t                       fd}t          j        |          }d|_        |                                 |                    |           |                                rt          	                                S )za
    Wraps autorun_commands with a timeout that raises StopAutorunTimeout
    on expiration.
    Nc                  H                         t           fi            d S r!   )putrS   )rQ   kwargsqs   r   _runnerz)autorun_commands_timeout.<locals>._runneru   s,    	t..v../////r   )targetT)
rS   r   	threadingThreaddaemonstartjoinis_aliver   r?   )rQ   timeoutrW   rY   thrX   s   ` `  @r   autorun_commands_timeoutrc   j   s     /////A0 0 0 0 0 0 0 
		)	)	)BBIHHJJJGGG	{{}} !  5577Nr   c                   0     e Zd ZdZd fd	Zd Zd Z xZS )StringWriterzPUtil to mock sys.stdout and sys.stderr, and
    store their output in a 's' var.Nc                 d    d| _         || _        t                                                       d S )Nr   )sdebugsuperr$   )r%   rh   	__class__s     r   r$   zStringWriter.__init__   s-    
r   c                     t          | dd           r!| j        r| j                            |           t          | dd           | xj        |z  c_        t	          |          S )Nrh   rg   )getattrrh   r*   rg   rJ   )r%   xs     r   r*   zStringWriter.write   sc     4$'' 	 DJ 	 JQ4d##/FFaKFF1vvr   c                 p    t          | dd           r"| j        r| j                                         d S d S d S )Nrh   )rl   rh   flush)r%   s    r   ro   zStringWriter.flush   sM    4$'' 	DJ 	J	 	 	 	r   r!   )r   r   r   __doc__r$   r*   ro   __classcell__)rj   s   @r   re   re      se        ( (             r   re   c                 N   t           j        t           j        t           j        }}}t	                      }t
          j        d         }t          j        |           t          j        t          j
        |                     	 	 |xt           _        t           _        t           j        t           _        t          | fi |}n# t          $ r}|j        |_         d}~ww xY w	 |||ct           _        t           _        t           _        t          j        t
          j        d                    t          j        |           nb# |||ct           _        t           _        t           _        t          j        t
          j        d                    t          j        |           w xY w|j        |fS )  Create an interactive session and execute the
    commands passed as "cmds" and return all output

    :param cmds: a list of commands to run
    :param timeout: timeout in seconds
    :returns: (output, returned) contains both sys.stdout and sys.stderr logs
    r   )streamN)r=   rI   r>   
excepthookre   r
   handlersremoveHandler
addHandlerloggingStreamHandler__excepthook__rc   r   rg   r   )	rQ   r'   sstdoutsstderrsexcepthookswh_oldreses	            r   autorun_get_interactive_sessionr      s`    %(J
CNkWG	Bq!EE""".b999:::$	&((CJ /CN*499599CC 	 	 	AJ	 
 29';.
CJ	 21 5666U#### 29';.
CJ	 21 5666U####49s+   ;B> =D< >
CCCD< <AFc                 d   t           j        t           j        }}t          |          }	 	 |xt           _        t           _        t	          | fi |}n# t
          $ r}|j        |_         d}~ww xY w	 ||ct           _        t           _        n# ||ct           _        t           _        w xY w|j        |fS )rs   )rh   N)r=   rI   r>   re   rc   r   rg   r   )rQ   r'   r|   r}   r   r   r   s          r   $autorun_get_interactive_live_sessionr      s     z3:WG	G	$	$	$B2	&((CJ*499599CC 	 	 	AJ	 
 ")'
CJJ'
CJ111149s)   %A B 
A-A((A--B B&c                     t           j        }	 t                      t           _        t          | fi |\  }}|t           _        n# |t           _        w xY w||fS r!   )r   color_themer   r   rQ   r'   ctrg   r   s        r   $autorun_get_text_interactive_sessionr      s\    		B"990????32c6M   (A Ac                     t           j        }	 t                      t           _        t          | fi |\  }}|t           _        n# |t           _        w xY w||fS r!   )r   r   r   r   r   s        r   $autorun_get_live_interactive_sessionr      s\    		B'>>5dDDeDD32c6Mr   c                     t           j        }	 t                      t           _        t          | fi |\  }}|t           _        n# |t           _        w xY w||fS r!   )r   r   r   r   r   s        r   $autorun_get_ansi_interactive_sessionr      s\    		B'>>0????32c6Mr   c                    t           j        }d }	 	 t                      t           _        t          | fi |\  }}n(# t          $ r} ||j                  |_         d }~ww xY w	 |t           _        n# |t           _        w xY w ||          |fS )Nc                     |                      dd                               dd                               dd                               dd          S )N<z&lt;>z&gt;z#[#z#]#)replacerg   s    r   to_htmlz5autorun_get_html_interactive_session.<locals>.to_html   sH    yyf%%--c6::BB5#NNVVW\^abbbr   )r   r   r   r   r   r   )rQ   r'   r   r   rg   r   r   s          r   $autorun_get_html_interactive_sessionr      s    		Bc c c	)||D4TCCUCCFAss 	 	 	 ,,AJ	 
 271::s?&   (; A1 
A AA  A1 1A?c                    t           j        }d }	 	 t                      t           _        t          | fi |\  }}n(# t          $ r} ||j                  |_         d }~ww xY w	 |t           _        n# |t           _        w xY w ||          |fS )Nc                     t          |                               dd                              dd                              dd          S )Nz@[@{z@]@}z@`@\)r   r   r   s    r   to_latexz7autorun_get_latex_interactive_session.<locals>.to_latex  s?    !}}$$UC0088DDLLUTXYYYr   )r   r   r	   r   r   r   )rQ   r'   r   r   rg   r   r   s          r   %autorun_get_latex_interactive_sessionr     s    		BZ Z Z	*}}D4TCCUCCFAss 	 	 	!!*--AJ	 
 28A;;r   )NNr!   )+rp   r7   r"   ior   ry   queuer   r=   r[   rD   scapy.configr   scapy.themesr   r   r   r	   scapy.errorr
   r   scapy.utilsr   typingr   r   r   r   r   r   r   r#   r   rS   rc   re   r   r   r   r   r   r   r   r   r   r   <module>r      s^                   



               G G G G G G G G G G G G 2 2 2 2 2 2 2 2 " " " " " "                 /   	 	 	 	 	 	 	 	    d9   00 00 00 00f   .    8   0  :  .        (    r   