
    i                         d 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Zddlm	Z	  G d de
          Z G d de
          Z ej        d	          ZddZddZd Zd Zd ZddZddZddZd ZdS )z,Module used for the actual running of TShark    N)version)
get_configc                       e Zd ZdS )TSharkNotFoundExceptionN__name__
__module____qualname__     e/home/jenkins/workspace/simtester-sanitize/venv/lib/python3.11/site-packages/pyshark/tshark/tshark.pyr   r              Dr   r   c                       e Zd ZdS )TSharkVersionExceptionNr   r   r   r   r   r      r   r   r   z[0-9]*\. ([^\s]*)(?: \((.*)\))?tsharkc           	      `   g }t                      }|r,|                    |                    || d                     | wt          j                            t          j                            |           t          j        	                    d          r| dn|          }|
                    d|           t          j        	                    d          rSdD ]O}t          j        |          }|7|                    t          j                            |d| d                     Pn`t          j        dd	          }|                    d
          D ]5}|                    t          j                            ||                     6t          j        	                    d          r|                    d|            |D ]Z}t          j                            |          r9t          j        	                    d          r|                    dd          }|c S [t          d|           )aC  Finds the path of the tshark executable.

    If the user has provided a path
    or specified a location in config.ini it will be used. Otherwise default
    locations will be searched.

    :param tshark_path: Path of the tshark binary
    :raises TSharkNotFoundException in case TShark is not found in any location.
    _pathNwinz.exer   )zProgramFiles(x86)ProgramFiles	WiresharkPATHz1/usr/bin:/usr/sbin:/usr/lib/tshark:/usr/local/bin:darwinz+/Applications/Wireshark.app/Contents/MacOS/\/z[TShark not found. Try adding its location to the configuration file. Searched these paths: )r   appendgetospathjoindirnamesysplatform
startswithinsertgetenvsplitexistsreplacer   )	tshark_pathprocess_namepossible_pathsconfiguser_tshark_pathenvprogram_filesos_pathr   s	            r   get_process_pathr2      sG    N\\F Pfjj,7M7M7MNNOOO 7<<(D(DADAXAXY^A_A_(q<(=(=(=(=eqs sa!1222 |u%% D8 	 	CIcNNM(%%GLL=R=R=RSS  	 )?
 
 MM#&& 	D 	DD!!"',,t\"B"BCCCC
|x(( \ZLZZ[[[  7>>$ 	|&&u-- /||D#..KKK	 "	2!/	2 	2  r   c                    t          |           dg}t          t          j        d          5 }t	          j        ||                              d          }d d d            n# 1 swxY w Y   |                                d         }d}t          j	        ||          }|s"t          d                    |                    |                                d         }t          j        |          S )Nz-vwstderrasciir   z.*\s(\d+\.\d+\.\d+).*z'Unable to parse TShark version from: {})r2   openr   devnull
subprocesscheck_outputdecode
splitlinesrematchr   formatgroupsr   parse)r*   
parametersnullversion_outputversion_linepatternmversion_strings           r   get_tshark_versionrJ   L   s"   ";//6J	bj#		 Z$#0DIIIPPQXYYZ Z Z Z Z Z Z Z Z Z Z Z Z Z Z ",,..q1L&G
,''A e$%N%U%UVb%c%cdddXXZZ]N=(((   *A""A&)A&c                 2    | t          j        d          k    S )Nz2.6.7r   rB   tshark_versions    r   tshark_supports_duplicate_keysrP   [       W]73333r   c                 2    | t          j        d          k    S )Nz2.2.0rM   rN   s    r   tshark_supports_jsonrS   _   rQ   r   c                 :    | t          j        d          k    rdS dS )zGReturns '-Y' for tshark versions >= 1.10.0 and '-R' for older versions.z1.10.0z-Yz-RrM   rN   s    r   get_tshark_display_filter_flagrU   c   s!    x0000ttr   c                    t          |           dg}t          t          j        d          5 }t	          j        ||                              d          }ddd           n# 1 swxY w Y   d |                                D             S )z{Returns a list of interface numbers from the output tshark -D.

    Used internally to capture on multiple interfaces.
    -Dr4   r5   utf-8Nc                 L    g | ]!}d |v|                     d          d         "S )z\\.\    )r'   ).0lines     r   
<listcomp>z)get_tshark_interfaces.<locals>.<listcomp>t   s2    ccc4Y^bMbMbDJJsOOAMbMbMbr   )r2   r8   r   r9   r:   r;   r<   r=   )r*   rC   rD   tshark_interfacess       r   get_tshark_interfacesr`   k   s    
 #;//6J	bj#		 ]$&3JtLLLSST[\\] ] ] ] ] ] ] ] ] ] ] ] ] ] ] dc+<+G+G+I+IccccrK   c                    t          |           dg}t          t          j        d          5 }t	          j        ||                              d          }ddd           n# 1 swxY w Y   g }|                                D ]C}t          	                    |          }|r%|
                    d |d         D                        D|S )zPReturns a list of all possible interface names. Some interfaces may have aliasesrW   r4   r5   rX   Nc                     g | ]}||S r   r   )r\   names     r   r^   z3get_all_tshark_interfaces_names.<locals>.<listcomp>   s    'L'L'Lt'L'L'L'Lr   r   )r2   r8   r   r9   r:   r;   r<   r=   _TSHARK_INTERFACE_ALIAS_PATTERNfindallextend)r*   rC   rD   r_   all_interface_namesr]   matchess          r   get_all_tshark_interfaces_namesri   w   s   ";//6J	bj#		 ]$&3JtLLLSST[\\] ] ] ] ] ] ] ] ] ] ] ] ] ] ] !,,.. N N199$?? 	N&&'L'L'L'L'LMMMrK   c                    t          |           ddg}t          t          j        d          5 }t	          j        ||                              d          }d d d            n# 1 swxY w Y   t          j        |t                    d         }d|v rd	|v rn)d
|v r	|d
         }nd|v r	|d         }nt          d          |d	         d         d	         S )Nz-Gzelastic-mappingr4   r5   r7   )object_pairs_hookmappingsdynamic
propertiesdoc	pcap_filezEYour tshark version does not support elastic-mapping. Please upgrade.layers)r2   r8   r   r9   r:   r;   r<   jsonloads_duplicate_object_hookr   )r*   rC   rD   mappings       r   get_ek_field_mappingrv      s?   ";//7HIJ	bj#		 S$)*TBBBII'RRS S S S S S S S S S S S S S S j02 2 22<>G G 7 7	'		%.			+&$%mnnn< *<88s   *A##A'*A'c                     i }| D ]@\  }}|                     |          }|s|||<   "|                     d          i k    r|||<   A|S )z!Make lists out of duplicate keys.rn   )r   )ordered_pairs	json_dictkeyvalexisting_vals        r   rt   rt      sg    I! % %S }}S)) 	% IcNN ww|$$**!$	#r   )Nr   )N)__doc__rr   	packagingr   r   r:   r"   r>   pyshark.configr   	Exceptionr   r   compilerd   r2   rJ   rP   rS   rU   r`   ri   rv   rt   r   r   r   <module>r      sw   2 2        				     



 				 % % % % % %	 	 	 	 	i 	 	 		 	 	 	 	Y 	 	 	 #-"*-O"P"P 1 1 1 1h) ) ) )4 4 44 4 4  	d 	d 	d 	d   9 9 9 9.    r   