
    |*&iB                     Z    S SK r S SKJr  S SKrS SKJr  S SKJr  S SKJ	r	   " S S\5      r
g)    N)List)Vulnerability)Source)VulnerabilityFactoryc                   d    \ rS rSrS rS\\   S\S\\   4S jr	S\\   S\\
   S\\   4S	 jrS
rg)
VulnersAPI   c                     SU l         Xl        g )Nzhttps://vulners.combase_urlconfig)selfr   s     4/home/kali/cveseeker/services/api/sources/vulners.py__init__VulnersAPI.__init__	   s    -    keywordsmax_resultsreturnc                    0 nSR                  U5      nSU S3nU R                   S3nUUS.nSS0n [        R                  " XgUS9n	U	R                  S	:X  Ga  U	R                  5       n
U
R                  S
5      S:X  Ga|  U
R                  S0 5      R                  S/ 5      nU GHS  nUR                  S0 5      nUR                  SS5      nUR                  S/ 5      nU(       d  UR                  S5      (       a  U/nOM]  UR                  SS5      nUR                  SS5      nUR                  SS5      nSnU(       a0   [        R                  R                  US5      R                  S5      nUR                  S0 5      n[        UR                  SS 5      5      nUR                  SS 5      nUR                  SS 5      n/ nUR                  SS5      nUR                  SS5      nU(       a  UR                  U5        U(       a  UR                  U5        U R                  X5      nUR                  U5        / nUR                  S5      nU(       a  UR                  U5        UR                  S5      nU(       a  UR                  U5        U Hd  nUU;  d  M  U R                   S U 3n [        R                   " UU R"                  R$                  U UUU(       a  UOS UUUUU(       a  U/OS S!9UU'   Mf     GMV     O['        S"U	R                   S#35         [+        UR-                  5       5      $ ! [         a    Un GNf = f! [(         a  n!['        S$U! 35         S n!A!NIS n!A!ff = f)%N ()z/api/v3/search/lucene/)querysizez
User-AgentzVulners Python Client)paramsheaders   resultOKdatasearch_sourceid cvelistzCVE-titledescription	publishedz%Y-%m-%dT%H:%M:%Sz%Y-%m-%dcvssscoreseverityvectorhrefvhrefbulletinFamilytypez/cve/)r$   sourceurlr'   r(   tagsdate
base_scorebase_severityreference_urlsvulnerable_componentszError: Received status code z from Vulners API.z&Error fetching data from Vulners API: )joinr   httpxgetstatus_codejson
startswithdatetimestrptimestrftime
ValueErrorstrappend!find_related_exploits_in_responseextendr   make	__class____name__print	Exceptionlistvalues)"r   r   r   vulnerabilitiesquery_stringr   api_endpointr   r   responser!   search_resultsitemr2   bulletin_idcve_listr'   r(   publish_datedate_posted	cvss_datar6   r7   cvss_vectorr8   r.   r/   related_exploitsr4   bulletin_family
type_fieldcve_idr3   es"                                     r   r"   VulnersAPI.search   s@   xx)L>#--(>? 
 1
G	@yygNH##s*}}88H%-%)XXfb%9%=%=h%KN .!%)R!8&,jjr&:#)::i#<'*55f==,7= ( &

7B 7&,jj&C'-zz+r'B&(';.6.?.?.H.HWj.k.t.tu  /A %+JJvr$:	%(w)E%F
(1j$(G&/mmHd&C)+%zz&"5 &

7B 7*11$7 *11%8+/+Q+QRZ+k(&--.>?!*0**5E*F* KK8%+ZZ%7
% KK
3&.F%_<)-uVH&E:N:S:S'-+/>>+B+B(+*/0;154)4/92?3AKV;-\`;" 7 '/] !/~ 4X5I5I4JJ\]^ O**,--c $. ;.:;\  	@:1#>??	@sJ   DM  /L//D&M A"M <M /L?;M >L??M 
M$MM$rV   rS   c                 Z   / nU H  nU H  nUR                  S0 5      nXFR                  S/ 5      ;   d  M,  UR                  S5      S:X  d  MC  UR                  SS5      nUR                  SS5      nU(       a  UR                  U5        U(       d  M  UR                  U5        M     M     U$ )Nr#   r&   r1   exploitr.   r%   r/   )r<   rE   )	r   rV   rS   related_urlscverT   r2   exploit_hrefexploit_vhrefs	            r   rF   ,VulnersAPI.find_related_exploits_in_responseg   s    C&)R0**Y33zz&)Y6'-zz&"'=(.

7B(?'(//=(=(//> '  r   r   N)rJ   
__module____qualname____firstlineno__r   r   rD   intr   r"   dictrF   __static_attributes__ r   r   r   r      s[    X.tCy X.s X.tM?R X.t$s) UYZ^U_ dhildm r   r   )r@   typingr   r;   models.vulnerabilityr   services.api.sourcer   8services.vulnerabilities.factories.vulnerability_factoryr   r   rn   r   r   <module>rs      s%       . & Yl lr   