
    |*&i                         S SK JrJr  S SKJrJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SK J!r!   " S S5      r"g)    )ListDict)ThreadPoolExecutoras_completed)VulnerabilityIntelligence)CacheManager)cisa_kev_enrich_vulnerability)github_fetch_cve_datagithub_fetch_cve_data_cached)fetch_github_poc_datafetch_github_poc_cached_data)nist_enrich_vulnerability)vulners_find_related_cve_data)GitHubPoCHandler)NistCachedHandler)VulnersHandler)GitHubHandler)CisaKevHandlerc                   n    \ rS rSrS\\   S\S\4S jrS r	S\\   4S jr
S	\S\4S
 jrS	\S\4S jrSrg)*VulnerabilityIntelligenceEnrichmentManager   vulnerability_intelligence_listenrichment_configcache_managerc                   ^ ^ UT l         UT l        TT l        [        [        [
        U4S jU4S jU 4S jU 4S jS.T l        [        [        [        [        [        [        [        S.T l        0 T l        0 T l        T R                  5         g )Nc                    > [        U T5      $ Nr   cver   s    t/home/kali/cveseeker/services/vulnerability_intelligence/enrichment/vulnerability_intelligence_enrichment_manager.py<lambda>EVulnerabilityIntelligenceEnrichmentManager.__init__.<locals>.<lambda>   s    6RSVXe6f    c                    > [        U T5      $ r   r   r    s    r"   r#   r$      s    -I#}-]r%   c                 0   > [        U TR                  5      $ r   )r	   r   r!   selfs    r"   r#   r$       s    $A#tGYGY$Zr%   c                 0   > [        U TR                  5      $ r   )r   r   r(   s    r"   r#   r$   !   s    '@dFXFX'Yr%   )vulnerstrickest_cve_github
github_poctrickest_cve_github_cachedgithub_poc_cachedcisa_kevnist_cached)r+   r,   r.   r-   r/   r0   r1   )r   r   r   r   r
   r   all_enrichment_functionsr   r   r   r   r   all_handlersenrichment_functionshandlers_filter_enrichment_sources)r)   r   r   r   s   `  `r"   __init__3VulnerabilityIntelligenceEnrichmentManager.__init__   sz    /N,!2* 5#8/*f!]ZY)
% &#0*7*!1&,
 %'!'')r%   c           	         U R                   R                  S0 5      nU(       d  [        S5        OU R                  R	                  5        VVs0 s H   u  p#UR                  US5      (       d  M  X#_M"     snnU l        U R                  R	                  5        VVs0 s H  u  p$X R
                  ;   d  M  X$_M     snnU l        [        SSR                  [        U R
                  R                  5       5      5       S35        g s  snnf s  snnf )Nsourcesz0[-] No enrichment sources defined in the config.Fz"

[*] Enabled enrichment sources: z, z.
)r   getprintr2   itemsr4   r3   r5   joinlistkeys)r)   enrichment_sourcesnamefunchandlers        r"   r6   EVulnerabilityIntelligenceEnrichmentManager._filter_enrichment_sources2   s    !3377	2F!DE #'"?"?"E"E"G)"GJD%))$6 
"G)D% &*%6%6%<%<%>%>MD444 %>DM 	4TYYtDD]D]DbDbDd?e5f4ggjkl)
s   D.DD3Dreturnc           	      h   U R                   (       d  [        S5        U R                  $ [        SS9 nU R                   Vs0 s HA  o"R                  R                  S5      (       d  M$  UR                  U R                  U5      U_MC     nn[        U5       H2  nX4   n UR                  5       nU(       a  U R                  X%5        M2  M4     S S S 5        U R                  $ s  snf ! [         a&  n[        SUR                   SU 35         S nAMz  S nAff = f! , (       d  f       U R                  $ = f)Nz;[-] No enrichment sources are enabled. Skipping enrichment.
   )max_workerszCVE-z[!] Error enriching data for : )r4   r<   r   r   id
startswithsubmit_get_enrichment_datar   result_apply_enrichment	Exception)r)   executorvuln_intelligencefuture_to_vulnfutureenrichment_dataes          r"   enrich1VulnerabilityIntelligenceEnrichmentManager.enrichE   s(   ((OP777B/8 *.)M)M)M%QeQeQpQpqwQx a 9 9;LMO``)M  
 '~6$2$:!W&,mmoO&../@R '	 7 0 333 ! W9:K:N:N9OrRSQTUVVW 0/ 333sM   D#C (!C 	D(C%D D%
D/D
DDD
D1rS   c           
          0 nU R                   R                  5        H  u  p4 U" UR                  5      nXRU'   M     U$ ! [         a3  n[	        SUR
                   SUR                   SU 35         S nAMZ  S nAff = f)Nz[!] Error in z	 for CVE rJ   )r4   r=   rK   rQ   r<   __name__)r)   rS   rV   source_namerC   datarW   s          r"   rN   ?VulnerabilityIntelligenceEnrichmentManager._get_enrichment_data[   s    !%!:!:!@!@!BK[-001/3, "C   [dmm_I>O>R>R=SSUVWUXYZZ[s   ?
A<	(A77A<rV   c                     UR                  5        HP  u  p4U R                  R                  U5      nU(       a  U" U5      nUR                  U5        MB  [	        SU 35        MR     g )Nz![!] No handler found for source: )r=   r5   r;   applyr<   )r)   rS   rV   sourcer]   handler_classrD   s          r"   rP   <VulnerabilityIntelligenceEnrichmentManager._apply_enrichmentg   sU    +113LF MM--f5M'-/09&BC 4r%   )r2   r3   r   r   r4   r5   r   N)r[   
__module____qualname____firstlineno__r   r   r   r   r7   r6   rX   rN   rP   __static_attributes__ r%   r"   r   r      sm    *=V8W *lp *  BN *:m&467 4,
6O 
TX 
D3L D_c Dr%   r   N)#typingr   r   concurrent.futuresr   r   !models.vulnerability_intelligencer   services.cache.cache_managerr   Bservices.vulnerability_intelligence.enrichment.enrichment.cisa_kevr	   Mservices.vulnerability_intelligence.enrichment.enrichment.trickest_cve_githubr
   Tservices.vulnerability_intelligence.enrichment.enrichment.trickest_cve_github_cachedr   Dservices.vulnerability_intelligence.enrichment.enrichment.github_pocr   Kservices.vulnerability_intelligence.enrichment.enrichment.github_poc_cachedr   Eservices.vulnerability_intelligence.enrichment.enrichment.nist_cachedr   Aservices.vulnerability_intelligence.enrichment.enrichment.vulnersr   ?services.vulnerability_intelligence.handlers.github_poc_handlerr   @services.vulnerability_intelligence.handlers.nist_cached_handlerr   <services.vulnerability_intelligence.handlers.vulners_handlerr   ;services.vulnerability_intelligence.handlers.github_handlerr   =services.vulnerability_intelligence.handlers.cisa_kev_handlerr   r   rh   r%   r"   <module>ry      sC     ? G 5 l o } f t k k \ ^ W U XZD ZDr%   