
    |Le                       d 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Zddl	Z
ddlZd Zd ZddZedk    rQ eej                  d	k    r% eej        d
         ej        d	                    dS  eej        d
                    dS dS )zE
Convert PCAP output to undirected graph and save in Parquet format.
    )annotationsNc                \    t          j        dt          j        |                     d         S )Nz!Ir   )structunpacksocket	inet_atonss    Clib/python3.11/site-packages/datashader/examples/pcap_to_parquet.pyip_to_integerr      s$    =v/2233A66    c                6    d| v rdS d| v rdS d| v rdS d| v rdS d S )NtcpUDPudpEIGRPeigrpICMPicmp r	   s    r   get_ip_protocolr      s?    zzuzzu!||w{{v4r   
maccdc2012c           	        t          |           5 }i }t                      }|                                D ]L}d|v r|                                }|s|d         dk    r,t	          |          }|dvr@	 g }t          j        d|d                   }	|	sa|                    t          |		                    d                               t          j        d|d                   }	|	s|                    t          |		                    d                               |
                    |          }t          |          \  }
}||
|f}t          |d	                   }||v r||xx         |z  cc<   n|||<   F#  Y KxY wt          d
 t          t          |                    D                       }g }|D ]A}||d                  ||d                  |d         ||         g}|                    |           Bt          j        t#          j        t'          |                    dg          }|                    d          }t          j        t#          j        |          g d          }t          j        |d                   |d<   t          j        |d                   |d<   t          j        |d                   |d<   |d                             d          |d<   t1          j        d                    |          |           t1          j        d                    |          |           d d d            d S # 1 swxY w Y   d S )Nunreachable   IP)r   r   r   r   z(?P<address>\d+\.\d+\.\d+\.\d+)   address   c                    g | ]	\  }}||f
S r   r   ).0inodes      r   
<listcomp>zto_parquet.<locals>.<listcomp>P   s     HHHGAttQiHHHr   r   id)columns)sourcetargetprotocolweightr(   r)   r+   r*   categoryz{}_nodes.parqz{}_edges.parq)openset	readlinessplitr   rematchappendr   groupunionsortedintdict	enumeratepd	DataFramenparangelen	set_indexarray
to_numericastypefpwriteformat)filenameprefixftrafficnodeslinefieldsr*   	addressesmsrcdstkeynbytesedgesedgenodes_dfedges_dfs                     r   
to_parquetrW   #   s~   	h =;1KKMM &	 &	D$$ZZ\\F ayD  &t,,H>>>	 H?KK   qwwy/A/A!B!BCCC H?KK   qwwy/A/A!B!BCCCI..!),,Sc* VBZ'>>CLLLF*LLLL#)GCLHHy/G/GHHHII 	 	C#a&M5Q=#a&'#,GDLL<	#e** 5 5vFFF%%d++<9c9c9cddd]8H+=>>]8H+=>>]8H+=>>'
3:::FF
''//:::
''//:::{=; =; =; =; =; =; =; =; =; =; =; =; =; =; =; =; =; =;sE   A%M6E;MAE;(M)BE;9M;F =F9MM
M__main__r   r   )rG   )r   )__doc__
__future__r   r1   r   r   sysfastparquetrC   numpyr<   pandasr:   r   r   rW   __name__r>   argvr   r   r   <module>ra      s    # " " " " " 				   



            7 7 7	 	 	>; >; >; >;@ z
s38}}q
38A;sx{333333
38A;	 r   