
    [
#gM              	       &   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y)    N)Union)
interfaces	rendererswintimereturnc                    | dz  }|dk(  rt        j                         S |dz
  }	 t        j                  j                  |t        j                  j
                        S # t        t        t        f$ r t        j                         cY S w xY w)Ni r   l    !l
 )
r   NotApplicableValuedatetimefromtimestamptimezoneutc
ValueErrorOverflowErrorOSErrorUnparsableValue)r   	unix_times     \/home/panchajanya/Development/work/volatility3/volatility3/framework/renderers/conversion.pywintime_to_datetimer      s     8#IA~++--K'I+  ..y(:K:K:O:OPP w/ +((**+s   7A (BBunixtimec                    t        j                         }| dkD  rft        j                  t        t
        t              5  t        j                  j                  | t        j                  j                        }d d d        |S |S # 1 sw Y   |S xY w)Nr   )r   r   
contextlibsuppressr   r   r   r
   r   r   r   )r   rets     r   unixtime_to_datetimer      s{     	!!#  !|   ]GD 	S##11(H<M<M<Q<QRC	S J3J	S Js   9BBaddralignupc                 @    | |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    /   s;     e|q5D5L122te|$$    c                 f    t        t        j                  t        j                  d|                   S )Nz<I)str	ipaddressIPv4Addressstructpack)ip_as_integers    r   convert_ipv4r)   Z   s#    y$$V[[}%EFGGr!   c                 f    t        t        j                  t        j                  dg|              S )Nz<IIII)r#   r$   IPv6Addressr&   r'   )	packed_ips    r   convert_ipv6r-   ^   s&    y$$V[[%E9%EFGGr!   c                     | dz	  | dz  dz  z  S )N      r   )port_as_integers    r   convert_portr2   c   s    q o&<%BCCr!   c                 6   | t         j                  k(  r8t        |d         t        |d         t        |d         t        |d         f}|S | t         j                  k(  r8t        |d         t        |d         t        |d         t        |d         f}|S 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)   r2   AF_INET6r-   )family
four_tupler   s      r   convert_network_four_tupler<   g   s     A'A'A'A'	
  J 
6??	"A'A'A'A'	
 J Jr!   )F)r   r
   r$   r7   r&   typingr   volatility3.frameworkr   r   intBaseAbsentValuer   r   boolr    r)   r-   r2   r<   r   r!   r   <module>rB      s          7++
://1B1BBC+ 
://1B1BBC % %C %T %c %VHH
Dr!   