
    Xf              	           d dl Z d dl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	 de
deej	        j        ej        f         fdZde
deej	        j        ej        f         fdZdd
e
de
dede
fdZd Zd Zd Zd ZdS )    N)Union)
interfaces	rendererswintimereturnc                     | dz  }|dk    rt          j                    S |dz
  }	 t          j                            |          S # t          t
          f$ r t          j                    cY S w xY w)Ni r   l    !l
 )r   NotApplicableValuedatetimeutcfromtimestamp
ValueErrorOSErrorUnparsableValue)r   	unix_times     \/home/panchajanya/Development/work/volatility3/volatility3/framework/renderers/conversion.pywintime_to_datetimer      s     8#IA~~+---K'I+ 11)<<<  + + +(*****+s   A $A+*A+unixtimec                     t          j                    }| dk    rPt          j        t                    5  t
          j                            |           }d d d            n# 1 swxY w Y   |S )Nr   )r   r   
contextlibsuppressr   r
   r   )r   rets     r   unixtime_to_datetimer      s     	!##  !|| ,, 	? 	?#44X>>C	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? Js    AA#&A#Faddralignupc                 B    | |z  dk    r| S |r| || |z  z
  z   S | | |z  z
  S )zRound an address up or down based on an alignment.

    Args:
        addr: the address
        align: the alignment value
        up: Whether to round up or not

    Returns:
        The aligned address
    r    )r   r   r   s      r   roundr   *   sC     e|q 	35D5L122te|$$    c                 j    t          t          j        t          j        d|                               S )Nz<I)str	ipaddressIPv4Addressstructpack)ip_as_integers    r   convert_ipv4r&   U   s'    y$V[}%E%EFFGGGr   c                 d    t          t          j        t          j        dg| R                      S )Nz<IIII)r    r!   IPv6Addressr#   r$   )	packed_ips    r   convert_ipv6r*   Y   s-    y$V[%E9%E%E%EFFGGGr   c                     | dz	  | dz  dz  z  S )N      r   )port_as_integers    r   convert_portr/   ^   s    q o&<%BCCr   c                    | t           j        k    rSt          |d                   t          |d                   t          |d                   t          |d                   f}ne| t           j        k    rSt          |d                   t          |d                   t          |d                   t          |d                   f}nd}|S )zConverts the connection four_tuple: (source ip, source port, dest ip,
    dest port)

    into their string equivalents. IP addresses are expected as a tuple
    of unsigned shorts Ports are converted to proper endianness as well
    r            N)socketAF_INETr&   r/   AF_INET6r*   )family
four_tupler   s      r   convert_network_four_tupler9   b   s     A''A''A''A''	
 
6?	"	"A''A''A''A''	
 Jr   )F)r   r
   r!   r4   r#   typingr   volatility3.frameworkr   r   intBaseAbsentValuer   r   boolr   r&   r*   r/   r9   r   r   r   <module>r?      sW                    7 7 7 7 7 7 7 7++
:/1BBC+ + + +
:/1BBC   % % %C %T %c % % % %VH H HH H H
D D D    r   