
    |*&i                     n    S SK r S SKrS SK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)	    N)List)BeautifulSoup)Vulnerability)Source)VulnerabilityFactoryc                   J    \ rS rSrS rS rS rS rS\\	   S\\
   4S jrS	rg
)
OpenCVEAPI   c                     SU l         Xl        g )Nzhttps://app.opencve.io/cvebase_urlconfig)selfr   s     4/home/kali/cveseeker/services/api/sources/opencve.py__init__OpenCVEAPI.__init__   s    4    c                 L    SR                  U5      nU R                   SU SU 3$ )N+z/?cvss=&search=z&page=)joinr   )r   pagequerysearch_strings       r   __get_search_urlOpenCVEAPI.__get_search_url   s*    --fTFKKr   c                    Sn[         R                  " X15      nSnSnU(       a4  [        UR                  S5      5      n[        UR                  S5      5      nU(       a"  Sn[        R
                  " X'-  5      nX:  a  UnOUnXVU4$ )NzPage (\d+) of (\d+)         )researchintgroupmathceil)	r   response_datamax_resultspatternmatchcurrent_pageof_all_pagesresults_per_page	max_pagess	            r   __get_paginationOpenCVEAPI.__get_pagination   s|    (		'1u{{1~.Lu{{1~.L!		+"@AI'(	$I944r   c                    / n[        US5      nUR                  SSS05      nUR                  SSS9nU GH  n UR                  S5      R                  S	5      R                  nUR                  S5      S
   R                  S	5      R                  nUR                  S5      S   R                  S	5       V	s/ s H  oR                  PM     n
n	UR                  S5      S   R                  R	                  5       nUR                  S5      S   R                  S5      R                  R	                  5       nU(       a  UR                  S5      u  pOSu  pUR                  SSS9nUR                  S5      R                  R	                  5       n[        R                  " UU R                  R                  SU 3UUUU[        U
 Vs/ s H
  nU SU 3PM     sn5      US9	nUR                  U5        GM     U$ s  sn	f s  snf !    GM  = f)Nzhtml.parsertableidcvestrz
cve-header)class_tdar   r         span )NNzcve-summaryzhttps://app.opencve.io/cve/)	r2   sourceurltitle
base_scorebase_severitydescriptionvulnerable_componentsdate)r   findfind_alltextstripsplitfind_next_siblingr   make	__class____name__listappend)r   r&   vulnerabilitiessoupr1   rowsrowcve_idvendorprodproductsupdated_date	cvss_textr?   r@   description_rowrA   productvulnerabilitys                      r   __get_vulnerabilities OpenCVEAPI.__get_vulnerabilities*   s   ]M:		'D&>2~~d<~8C$,,S166d+A.33C8==25,,t2DQ2G2P2PQT2UV2U$II2UV"||D1!499??ALL.q166v>CCIIK	090D-J0:-J #&"7"7]"7"S-2248==CCE 4 9 9>>225fX> )"/ +*.U]/^U]'6(!G90EU]/^*_%
!  &&}5; B ; W* 0_
s+   A<H 6G6C8H G;H 6
H  Hkeywordsreturnc                    / n[         R                  " U R                  SU5      5      nUR                  S:w  a  / $ U R	                  UR
                  U5      u  pVnXW::  a^   [         R                  " U R                  XQ5      5      nU R                  UR
                  5      nUR                  U5        US-   nXW::  a  M^  U$ ! [         a  n	 S n	A	U$ S n	A	ff = f)Nr      )	httpxget_OpenCVEAPI__get_search_urlstatus_code_OpenCVEAPI__get_paginationrF    _OpenCVEAPI__get_vulnerabilitiesextend	Exception)
r   r^   r'   rO   responser*   	all_pagesr-   page_vulnerabilitieses
             r   r!   OpenCVEAPI.searchT   s    99T221h?@3&I-1-B-B8==R]-^*' 99T%:%:<%RS'+'A'A(--'P$&&';<+a/ '   s    AB? ?
CCr   N)rL   
__module____qualname____firstlineno__r   rd   rf   rg   r   strr   r!   __static_attributes__ r   r   r	   r	      s4    L5,(TtCy $}:M r   r	   )r$   r    rb   typingr   bs4r   models.vulnerabilityr   services.api.sourcer   8services.vulnerabilities.factories.vulnerability_factoryr   r	   rt   r   r   <module>rz      s+     	    . & Y[ [r   