
    i                         d Z ddlZddlmZmZ ddlmZmZm	Z	m
Z
mZ ddlmZmZ ddlmZ ddlZddlZddlmZmZ  G d d	e      Z G d
 de      Ze G d d             Z G d d      Z G d d      Zy)z
CorvOS - Temporal Audit Module v1.0
Tracking de tentativas de manipulacao passado/futuro
Synapse-k | Arkhe(n) | Rio de Janeiro
    N)	dataclassfield)ListDictTupleSetOptional)datetime	timedelta)Enum)dequedefaultdictc                        e Zd ZdZdZdZdZdZy)ManipulationTypepast_falsificationfuture_tamperingretrocausal_loopparadox_injectioncausality_breakN)__name__
__module____qualname__PAST_FALSIFICATIONFUTURE_TAMPERINGRETROCAUSAL_LOOPPARADOX_INJECTIONCAUSALITY_BREAK     ,/home/workspace/corvos_sys/temporal_audit.pyr   r      s    -))+'Or   r   c                       e Zd ZdZdZdZdZy)ManipulationSeverity            N)r   r   r   CRITICALHIGHMEDIUMLOWr   r   r    r"   r"      s    HDF
Cr   r"   c                       e Zd ZU eed<   eed<   eed<   eed<   eed<   ee   ed<   e	e   ed<   eed<   eed	<   d
Z
eed<   d
Zeed<   dZee   ed<   y)TemporalAuditEntryentry_id	timestampmanipulation_typeseveritysource_nodetarget_timealtered_fieldsintegrity_hash_beforeintegrity_hash_afterFquarantinedresolvedN
resolution)r   r   r   str__annotations__r
   r   r"   r	   r   r6   boolr7   r8   r   r   r    r,   r,      sb    M''""(##IKHd $J$r   r,   c                   n    e Zd Zd ZdedefdZdefdZde	dede
eef   fd	Zde
eef   fd
ZdefdZy)TemporalAuditLogc                     g | _         t        t              | _        t        t              | _        t        d      | _        d| _        y )Ni'  )maxlenGENESIS)	entriesr   intparadox_countersetcausality_graphr   integrity_chainhash_chain_tipselfs    r    __init__zTemporalAuditLog.__init__+   s8    13/:3/?4?4D&+5&9#,r   datareturnc                     t        t        |j                                     j                         }t	        j
                  || j                  j                         z         j                         S N)r9   sorteditemsencodehashlibsha256rG   	hexdigest)rI   rK   raws      r    compute_integrity_hashz'TemporalAuditLog.compute_integrity_hash2   sL    &&'..0~~cD$7$7$>$>$@@AKKMMr   entryc                 V   | j                   |_        | j                  |j                        |_        |j                  | _         | j
                  j                  |       | j                  j                  |j                  |j                  |j                  d       |j                  rD| j                  t        |j                           j                  t        |j                               |j                  t        j                   k(  r"| j"                  |j$                  xx   dz  cc<   y y )N)r-   hashr.   r&   )rG   r4   rV   __dict__r5   rA   appendrF   r-   r.   r2   rE   r9   addr/   r   r   rC   r1   )rI   rW   s     r    r[   zTemporalAuditLog.append6   s    &*&9&9#%)%@%@%P"#88E"##..%
 	
   U__!56::3u?P?P;QR""&6&H&HH  !2!23q83 Ir   proposed_timer1   c                     t        |      }|| j                  v r*| j                  |   dkD  rdd| d| j                  |    dfS y)Nr$   TzNode z has z paradox attempts)FOK)r9   rC   )rI   r]   r1   
source_strs       r    detect_causality_violationz+TemporalAuditLog.detect_causality_violationE   sW    %
---$2F2Fz2RUV2V5U43G3G
3S2TTefffr   c           
          t        | j                        D ]U  \  }}|dk(  r| j                  |dz
     j                  }|j                  |k7  s8dd| d|d d  d|j                  d d  fc S  y)	Nr   r&   FzChain broken at entry z: expected    z, got )TzChain intact)	enumeraterA   r5   r4   )rI   irW   	prev_hashs       r    verify_chain_integrityz'TemporalAuditLog.verify_chain_integrityL   s    !$,,/ 	~HAuAvQqS)>>I**i7 6qcYsPR^DTTZ[`[v[vwzxz[{Z|}}}	~ $r   c           	         t        t              }| j                  D ]*  }||j                  j                     j                  |       , t        | j                        |j                         D ci c]  \  }}|t        |       c}}t        d | j                  D              t        d | j                  D              | j                         d   t        | j                  j                         d       d d dS c c}}w )Nc              3   :   K   | ]  }|j                   sd   ywr&   N)r6   .0es     r    	<genexpr>z8TemporalAuditLog.get_tampering_report.<locals>.<genexpr>\   s     HQ!--qH   c              3   :   K   | ]  }|j                   sd   ywrj   )r7   rk   s     r    rn   z8TemporalAuditLog.get_tampering_report.<locals>.<genexpr>]   s     B!qzzABro   r   c                     | d    S Nr&   r   xs    r    <lambda>z7TemporalAuditLog.get_tampering_report.<locals>.<lambda>_   s    UVWXUYTY r   key   )total_entriesby_typer6   r7   chain_integritytop_paradox_nodes)r   listrA   r/   valuer[   lenrP   sumrg   rO   rC   )rI   rz   rm   kvs        r    get_tampering_reportz%TemporalAuditLog.get_tampering_reportU   s    d# 	9AA''--.55a8	9 !..5mmo>da3q6	>H$,,HHBt||BB#::<Q?!'(<(<(B(B(D/!Z[]\]!^
 	
>s   0C<N)r   r   r   rJ   dictr9   rV   r,   r[   r
   r   r;   ra   rg   r   r   r   r   r    r=   r=   *   sp    -N4 NC N9. 9 038=dCi8H$dCi(8 $
d 
r   r=   c            	       B    e Zd Zd Zdededeeee	   f   fdZ
defdZy)TemporalAuditEnginec                 >    t               | _        i | _        i | _        y rN   )r=   	audit_logblocked_time_windowscausality_lockrH   s    r    rJ   zTemporalAuditEngine.__init__c   s    )+9;!/1r   packet	directionrL   c                   K   t        j                         }t        j                  t	        |      j                               j                         d d }|j                  dd      }|j                  d      }|j                  dg       }t        j                  }|dk(  rt        j                  nt        j                  }	|r t        j                  }t        j                  }	t        d|j!                          d| ||	||||d	d	
	      }
| j"                  j%                  |xs ||      \  }}|rd|
_        ||
_        | j"                  j+                  |
       | |
fS w)Nrc   node_idUNKNOWNr2   r3   retrocausalzAUD-- )	r-   r.   r/   r0   r1   r2   r3   r4   r5   T)r
   nowrR   rS   r9   rQ   rT   getr"   r*   r   r   r   r(   r   r,   r.   r   ra   r6   r8   r[   )rI   r   r   r   packet_hashnoder2   alteredr0   mtyperW   	violationmsgs                r    audit_packetz TemporalAuditEngine.audit_packeth   s9    llnnnS[%7%7%9:DDFsKzz)Y/jj/**-r2'++7@M7Q 33WgWxWx+00H$66E"CMMO,Ak];##""$!#

 BB;CURUW[\	3 $E"Ee$}e##s   EEc           	          | j                   j                         }|d   |d   t        | j                        t	        t        |d   j                         d       d d       dS )Nry   r{   rz   c                     | d    S rr   r   rs   s    r    ru   z0TemporalAuditEngine.get_status.<locals>.<lambda>   s    \]^_\`[` r   rv   r$   )audit_entriesintegrity_verifiedblocked_windowstop_manipulation_types)r   r   r   r   r   rO   rP   )rI   reports     r    
get_statuszTemporalAuditEngine.get_status   sd    446#O4"():";"4#<#<=&*6&2C2I2I2KQ`+abdcd+e&f	
 	
r   N)r   r   r   rJ   r   r9   r   r;   r	   r,   r   r   r   r   r    r   r   b   s=    2
$ $# $%hWiNjHjBk $:
D 
r   r   )__doc__numpynpdataclassesr   r   typingr   r   r   r   r	   r
   r   enumr   rR   asynciocollectionsr   r   r   r"   r,   r=   r   r   r   r    <module>r      sj   
  ( 3 3 (   *(t (4  % % %6
 6
p*
 *
r   