Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- HTML
- MITRE ATT&CK
- 국가기록원
- 정보보안
- UKPT level
- 국정원
- webhacking
- 경기팀
- 웹 해킹 입문
- Los
- UKPT
- 국가정보원
- 불법유통
- 화학물질안전원
- suninatas
- 프로젝트
- Service
- 12기
- 파이썬
- 여행
- codeup
- PHP
- 기타정보
- 불법유통근절
- 연구모임
- 도구모음
- 대외활동
- 화학물질불법유통온라인감시단
- nurisec
- 화학물질
Archives
- Today
- Total
agencies
exploit-db 검색 및 파싱 본문
오늘은 특정 키워드를 exploit-db에 검색하고,
도출된 검색 결과를 가져오는 파이썬 프로그래밍을 진행했습니다.
※ pip 설치 내용
1. selenium
2. beautifulsoup4
3. requests
소스코드
#버전 0.2
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup
import time
import requests
# exploit-db 검색
test = input("keyword: ")
# ChromeOptions
chrome_options = Options()
#chrome_options.add_argument('--headless') # 브라우저 UI 없이 실행
chrome_options.add_argument('--disable-gpu') # GPU 사용 비활성화
# 웹 드라이버 객체 생성 + 10초 대기
driver = webdriver.Chrome(options=chrome_options)
driver.implicitly_wait(10)
# exploit-db URL
url = 'https://www.exploit-db.com/'
driver.get(url)
#robots
headers={"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"}
try:
# 검색바 요소 찾기
time.sleep(1)
search_box = driver.find_element(By.CSS_SELECTOR, 'input[type="search"]')
# 검색진행
time.sleep(1)
search_box.send_keys(test)
time.sleep(1)
search_box.send_keys(Keys.RETURN)
# 페이지의 HTML 콘텐츠
num = 1
while True:
time.sleep(1)
page_source = driver.page_source
# BeautifulSoup을 사용하여 페이지 파싱
soup = BeautifulSoup(page_source, 'html.parser')
a_tags = soup.find_all('a')
for a_tag in a_tags:
href = a_tag.get('href')
text = a_tag.get_text(strip=True)
if '/exploits/' in href:
print(f'Text: {text}\nHref: {href}\n')
testurl = (f"https://www.exploit-db.com{href}")
#print(testurl)
testres = requests.get(testurl,headers=headers)
testsoup = BeautifulSoup(testres.text,'html.parser')
#제목
in_title = testsoup.find(class_='card-title text-secondary text-center')
in_title = in_title.get_text(strip=True)
print('제목:',in_title)
#print(testsoup)
# 모든 info-title 요소를 찾기
info_titles = testsoup.find_all(class_='info-title')
info_ary = []
#모든 stats-title 요소 찾기
stats_titles = testsoup.find_all(class_='stats-title')
stats_ary = []
for info_title in info_titles:
title_text1 = info_title.get_text(strip=True)
info_ary.append(title_text1)
for stats_title in stats_titles:
title_text2 = stats_title.get_text(strip=True)
stats_ary.append(title_text2)
print(info_ary)
print(stats_ary)
# Next 버튼 찾기
next_button = driver.find_element(By.CSS_SELECTOR, 'li.paginate_button.page-item.next a.page-link')
# Next 버튼 클릭
if next_button:
next_button.click()
time.sleep(2)
num+=1
print("=====================================================================================")
print('현재페이지 : %d'%num)
except:
print('몹시 끝')
이렇게 log4j를 입력하면,
위와같이 창이 나타나고,
목록을 읽어오고 (1페이지)
목록에 해당되는, 세부 내용(cve edb-id 등)을 불러옵니다.
만약 2페이지가 있다면 위와 마찬가지로 동작하고, 마지막 페이지까지 진행합니다.
'Ⅰ. 프로그래밍' 카테고리의 다른 글
파이썬 프로그래밍 (이미지 실행파일) (3) | 2024.11.05 |
---|---|
CVE 검색 및 파싱 (0) | 2024.09.20 |
[CodeUp] 1425 : 자리 배치 (0) | 2024.04.16 |
[CodeUp] 1420 : 3등 찾기 (0) | 2024.04.16 |
[CodeUp] 1416 : 2진수 변환 (0) | 2024.04.16 |