a
    kÄ#dÈ;  ã                   @   s"  d Z ddlZddlmZmZmZmZmZ G dd„ dƒZeƒ Z	d&dd	„Z
G d
d„ dƒZG dd„ deƒZG dd„ deƒZG dd„ deeƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG d d!„ d!eƒZG d"d#„ d#eƒZd$d%„ ZdS )'z+
Color themes for the interactive console.
é    N)ÚAnyÚCallableÚListÚOptionalÚTuplec                   @   sj   e Zd Zddddddddd	d
ddddddddddddddœZdd„ e ¡ D ƒZdd„ Zdd„ Zdd „ Zd!S )"Ú
ColorTable)z[30mz
#ansiblack)z[31mz#ansired)z[32mz
#ansigreen)z[33mz#ansiyellow)z[34mz	#ansiblue)z[35mz#ansipurple)z[36mz	#ansicyan)z[37mz
#ansiwhite)z[39mÚ	noinherit)z[40mzbg:#ansiblack)z[41mzbg:#ansired)z[42mzbg:#ansigreen)z[43mzbg:#ansiyellow)z[44mzbg:#ansiblue)z[45mzbg:#ansipurple)z[46mzbg:#ansicyan)z[47mzbg:#ansiwhite)z[49mr   )z[0mr   )z[1mÚbold)z[4mÚ	underline)z[5mÚ )z[7mr   )ÚblackÚredÚgreenÚyellowÚblueÚpurpleÚcyanÚgreyÚresetZbg_blackZbg_redZbg_greenZ	bg_yellowZbg_blueZ	bg_purpleZbg_cyanZbg_greyZbg_resetÚnormalr	   ÚulineÚblinkÚinvertc                 C   s   i | ]\}}|d  |d “qS )r   é   © )Ú.0ÚkÚvr   r   úC/var/www/html/gsl.tools/lib/python3.9/site-packages/scapy/themes.pyÚ
<dictcomp>6   ó    zColorTable.<dictcomp>c                 C   s   dS )Nz<ColorTable>r   ©Úselfr   r   r   Ú__repr__8   s    zColorTable.__repr__c                 C   s   | j  |dg¡d S )Nr   r   )ÚcolorsÚget©r"   Úattrr   r   r   Ú__getattr__<   s    zColorTable.__getattr__c                 C   s,   | j  ¡ D ]\}}| |d| ¡}q
| ¡ S )z>
        Transform ansi encoded text to Pygments text
        ú )Úinv_mapÚitemsÚreplaceÚstrip)r"   Úxr   r   r   r   r   Úansi_to_pygments@   s    zColorTable.ansi_to_pygmentsN)	Ú__name__Ú
__module__Ú__qualname__r$   r+   r*   r#   r(   r/   r   r   r   r   r      s8   ær   r   ú%sc                 C   s   | |||fdd„}|S )Nc                 S   s*   |d u rt | ƒ}n||  }||| |  S ©N)Ústr)ÚvalÚfmtÚfmt2ÚbeforeÚafterZsvalr   r   r   Údo_styleS   s    
zcreate_styler.<locals>.do_styler   )r7   r9   r:   r8   r;   r   r   r   Úcreate_stylerM   s    r<   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
Ú
ColorThemec                 C   s   d| j j S )Nz<%s>)Ú	__class__r0   r!   r   r   r   r#   ^   s    zColorTheme.__repr__c                 C   s   | j ddfS )Nr   )r>   r!   r   r   r   Ú
__reduce__b   s    zColorTheme.__reduce__c                 C   s   |dv rt ƒ ‚tƒ S )N)Ú__getstate__Ú__setstate__Ú__getinitargs__Ú__reduce_ex__)ÚAttributeErrorr<   r&   r   r   r   r(   f   s    zColorTheme.__getattr__c                 C   s"   |  d¡D ]}t| |ƒ|ƒ}q
|S )Nú+)ÚsplitÚgetattr)r"   Ústringr7   Ústyler   r   r   Úformatm   s    zColorTheme.formatN)r0   r1   r2   r#   r?   r(   rJ   r   r   r   r   r=   ]   s   r=   c                   @   s   e Zd ZdS )ÚNoThemeN©r0   r1   r2   r   r   r   r   rK   t   s   rK   c                   @   sp   e Zd Zdd„ ZdZdZdZdZdZdZ	dZ
dZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdS )ÚAnsiColorThemec                 C   s~   |  d¡rt|ƒ‚d| }|| jjv r8t| |ƒ}| j}n:t| tƒsj|tj	v rjtj	| d }tj	d d }nd }}t
||d�S )NÚ__ústyle_%sr   r   r   )r9   r:   )Ú
startswithrD   r>   Ú__dict__rG   Ústyle_normalÚ
isinstanceÚBlackAndWhiteÚColorr$   r<   )r"   r'   Úsr9   r:   r   r   r   r(   y   s    

zAnsiColorTheme.__getattr__r   N)r0   r1   r2   r(   rR   Ústyle_promptÚstyle_punctÚstyle_idÚstyle_not_printableÚstyle_layer_nameÚstyle_field_nameÚstyle_field_valueÚstyle_emph_field_nameÚstyle_emph_field_valueÚstyle_packetlist_nameÚstyle_packetlist_protoÚstyle_packetlist_valueÚ
style_failÚstyle_successÚ	style_oddÚ
style_evenÚstyle_openingÚstyle_activeÚstyle_closedÚ
style_leftÚstyle_rightÚ
style_logor   r   r   r   rM   x   s0   rM   c                   @   s   e Zd ZdS )rT   NrL   r   r   r   r   rT   ¢   s   rT   c                   @   sê   e Zd ZejZejej ZejZ	ejej Z
ejZejej ZejZejZejej ej Zejej ej Zejej ZejZejZejej Zejej Zejej ZejZejZejZejZ ejej! Z"ejej! Z#ej$ej Z%dS )ÚDefaultThemeN)&r0   r1   r2   rU   r   rR   r   r	   rW   rX   rY   r   rZ   r   r[   r\   r   r]   r   r^   r_   r`   ra   rb   rc   rd   r   rf   re   r   rg   rh   ri   r   rj   rk   r   rl   r   r   r   r   rm   ¦   s.   rm   c                   @   sÒ   e Zd ZejZejZejej Z	ej
ej Zejej Zejej Zejej Zejej Zej
ej Zejej Zejej Zej
ej Zejej Zejej ZejZejej Zejej Zejej ZdS )ÚBrightThemeN) r0   r1   r2   rU   r   rR   rX   r   r	   rY   r   r[   r\   r   r]   r^   r   r_   r`   ra   rb   rc   r   rd   r   rf   re   r   r   rj   rk   rl   r   r   r   r   rn   À   s$   rn   c                   @   sØ   e Zd Zejej ej Zejej Z	ej
Zejej ZejZej
ej Zejej Zejej ZejZejZej
ej Zejej Zejej Zej
Zej
ej ZejZejZejej Zej
ej Zejej ZdS )Ú
RastaThemeN)r0   r1   r2   rU   r   r   r	   rR   r   rW   r   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   rf   re   r   rj   rk   rl   r   r   r   r   ro   Õ   s(   ro   c                   @   sú   e Zd ZdZejZejej Z	ejZ
ejZejej Zejej ZejZejej Zejej Zejej Zejej Zejej Zejej Zejej ZejZejej ZejZejZejej Z ejej Z!ejej Z"ejej Z#ejej Z$dS )ÚColorOnBlackThemez!Color theme for black backgroundsN)%r0   r1   r2   Ú__doc__rU   r   rR   r   r	   rW   rX   rY   r   rZ   r   r[   r   r\   r   r]   r^   r   r_   r`   ra   rb   rc   rd   rf   r   re   rg   rh   ri   rj   rk   rl   r   r   r   r   rp   ì   s0   rp   c                   @   s   e Zd Zdd„ ZdS )ÚFormatThemec                 C   s0   |  d¡rt|ƒ‚| jj d| d¡}t|d�S )NrN   rO   r3   )r8   )rP   rD   r>   rQ   r%   r<   )r"   r'   Zcolfmtr   r   r   r(     s    
zFormatTheme.__getattr__N)r0   r1   r2   r(   r   r   r   r   rr     s   rr   c                   @   sH   e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZdZdZdZdZd	Zd
S )Ú
LatexThemez\textcolor{blue}{%s}z\textcolor{gray}{%s}z\textcolor{red}{\bf %s}z\textcolor{purple}{%s}z \textcolor{blue}{\underline{%s}}z"\textcolor{purple}{\underline{%s}}z\textcolor{blue}{\bf %s}z\textcolor{red}{%s}z\textcolor{green}{\bf %s}N)r0   r1   r2   rW   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   rj   rk   rl   r   r   r   r   rs     s   rs   c                   @   sL   e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZdZdZdZdZd	Zd
ZdS )ÚLatexTheme2z@`@textcolor@[@blue@]@@[@%s@]@z@`@textcolor@[@gray@]@@[@%s@]@z.@`@textcolor@[@red@]@@[@@`@bfseries@[@@]@%s@]@z @`@textcolor@[@purple@]@@[@%s@]@z0@`@textcolor@[@blue@]@@[@@`@underline@[@%s@]@@]@z2@`@textcolor@[@purple@]@@[@@`@underline@[@%s@]@@]@z/@`@textcolor@[@blue@]@@[@@`@bfseries@[@@]@%s@]@z/@`@textcolor@[@gray@]@@[@@`@bfseries@[@@]@%s@]@z@`@textcolor@[@red@]@@[@%s@]@z0@`@textcolor@[@green@]@@[@@`@bfseries@[@@]@%s@]@N)r0   r1   r2   rW   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   rf   rj   rk   rl   r   r   r   r   rt   $  s    rt   c                   @   sL   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdS )Ú	HTMLThemez<span class=prompt>%s</span>z#<span class=not_printable>%s</span>z <span class=layer_name>%s</span>z <span class=field_name>%s</span>z!<span class=field_value>%s</span>z%<span class=emph_field_name>%s</span>z&<span class=emph_field_value>%s</span>z%<span class=packetlist_name>%s</span>z&<span class=packetlist_proto>%s</span>z&<span class=packetlist_value>%s</span>z<span class=fail>%s</span>z<span class=success>%s</span>z<span class=even>%s</span>z<span class=odd>%s</span>z<span class=left>%s</span>z<span class=right>%s</span>N©r0   r1   r2   rW   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   rf   re   rj   rk   r   r   r   r   ru   8  s    ru   c                   @   sL   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdS )Ú
HTMLTheme2z$#[#span class=prompt#]#%s#[#/span#]#z+#[#span class=not_printable#]#%s#[#/span#]#z(#[#span class=layer_name#]#%s#[#/span#]#z(#[#span class=field_name#]#%s#[#/span#]#z)#[#span class=field_value#]#%s#[#/span#]#z-#[#span class=emph_field_name#]#%s#[#/span#]#z.#[#span class=emph_field_value#]#%s#[#/span#]#z-#[#span class=packetlist_name#]#%s#[#/span#]#z.#[#span class=packetlist_proto#]#%s#[#/span#]#z.#[#span class=packetlist_value#]#%s#[#/span#]#z"#[#span class=fail#]#%s#[#/span#]#z%#[#span class=success#]#%s#[#/span#]#z"#[#span class=even#]#%s#[#/span#]#z!#[#span class=odd#]#%s#[#/span#]#z"#[#span class=left#]#%s#[#/span#]#z##[#span class=right#]#%s#[#/span#]#Nrv   r   r   r   r   rw   K  s    rw   c           	         sÀ  zddl m}m‰  W n* ty>   ddlm} | d¡ Y dS 0 ddlm} i }t	|j
tƒrdd| _n.t	|j
tƒrxd| _nt	|j
tƒrŒd	| _nd
| _z$tƒ  | jjd d }|| jƒ W n tyÈ   Y n0 t	|j|ƒrà|j| _n²t	|j
ttfƒ�rRt	|j
tƒ�rddlm} ||jƒ‰n,t	|j
tƒ�r>ddlm} ||jƒ‰n|j‰|j
 ˆ¡‰nt|jƒ‰t |j
j¡|ˆ j < G ‡ ‡fdd„d|ƒ}|| _ˆt!_"|| _#ztƒ  $¡  W n t�yº   Y n0 dS )zVUpdates the specified IPython console shell with
    the conf.color_theme scapy theme.r   )ÚPromptsÚToken)Úlog_loadingz.IPython too old. Shell color won't be handled.N)ÚconfZnocolorZlightbgÚlinuxZneutralÚliner$   )Úhtml_escape)Ú
tex_escapec                       s(   e Zd Zd‡ ‡fdd„	Z‡ fdd„ZdS )z*apply_ipython_style.<locals>.ClassicPromptNc                    s   ˆ j ˆfgS r4   )ÚPrompt)r"   Úcli©ry   Úpromptr   r   Úin_prompt_tokens—  s    z;apply_ipython_style.<locals>.ClassicPrompt.in_prompt_tokensc                    s   ˆ j dfgS )Nr   )Z	OutPromptr!   )ry   r   r   Úout_prompt_tokens›  s    z<apply_ipython_style.<locals>.ClassicPrompt.out_prompt_tokens)N)r0   r1   r2   r„   r…   r   r‚   r   r   ÚClassicPrompt–  s   r†   )%ZIPython.terminal.promptsrx   ry   Ú	ExceptionZscapy.errorrz   ÚwarningZscapy.configr{   rS   Zcolor_themerK   r$   rn   rp   Úget_ipythonZmagics_managerZmagicsÚ	NameErrorrƒ   Zprompts_classrr   ru   Úscapy.compatr~   rs   Zscapy.utilsr   r5   rU   r/   rW   r€   ÚsysÚps1Zhighlighting_style_overridesZrefresh_style)	Úshellrx   rz   r{   Zscapy_styleZcolor_magicr~   r   r†   r   r‚   r   Úapply_ipython_style^  s\    ÿ

ÿ
	r�   )Nr   r   r3   )rq   rŒ   r‹   r   r   r   r   r   r   rU   r<   r=   rK   rM   rT   rm   rn   ro   rp   rr   rs   rt   ru   rw   r�   r   r   r   r   Ú<module>   s.   	1    ý
*	