✏️ 21-2 IPP/study & work

CVE ID, Date, Severity ν•œλ²ˆμ— 크둀링

hanwitjus 2021. 9. 8. 13:49

μ‹€ν–‰ κ³Όμ •

printDateCVESeverity.py

 

ν•œλ²ˆμ— 3κ°€μ§€ 정보λ₯Ό λ‹€ 담을 수 μžˆλŠ” txt νŒŒμΌμ„ 생성할 수 있으면 엑셀에 λ³΅λΆ™ν•˜κΈ° νŽΈν•  것 κ°™μ•„μ„œ(+ 21.09.13 14:25 μ•Œκ³ λ³΄λ‹ˆ μ•ˆνŽΈν•˜λ‹€. κ·Έλƒ₯ λ‹€ λ”°λ‘œ ν•˜λŠ”κ²Œ νŽΈν•˜λ‹€..γ…‹) λ”°λ‘œλ”°λ‘œ 있던 py νŒŒμΌλ“€μ„ κ·Έλƒ₯ ν•˜λ‚˜μ˜ μ½”λ“œμ— ν•©μ³λ²„λ €μ„œ Date - CVE ID - Severity 정보 순으둜 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€μ—ˆλ‹€.

λ”±νžˆ μ–΄λ €μš΄ 건 μ—†κ³  κ·Έλƒ₯ μ›λž˜ 있던 μ½”λ“œλ“€μ„ μ λ‹Ήνžˆ ν•©μΉ˜λ©΄ λ˜μ—ˆλ‹€.

 

for line in data:
    cve = line.strip()
    try:
        url = 'https://nvd.nist.gov/vuln/detail/' + cve
        urlDate = 'https://cve.mitre.org/cgi-bin/cvename.cgi?name=' + cve
        response = requests.get(url)
        soup = BeautifulSoup(response.text, 'html.parser')
        temp = soup.find('a', {'id': "Cvss3NistCalculatorAnchor"})
        if temp == None:
            temp = soup.find('a', {'id': "Cvss3CnaCalculatorAnchor"})
        if temp == None:
            temp = soup.find('a', {'id': "Cvss3NistCalculatorAnchorNA"})
        m = re.search(r'([a-zA-Z]+)', temp.text)
        severity = m.group(1)

        responseDate = requests.get(urlDate)
        mDate = re.search(r'<b>(\d+)</b>', responseDate.text)
        date = mDate.group(1)

        f.write(date + '\n')
        f.write(cve + '\t')
        f.write(severity + '\t')

        cnt += 1
        print('---', cnt, ':', cve, '---')

 

λ¨Όμ € searchCVE.pyλ₯Ό μ‹€ν–‰μ‹œμΌœμ„œ CVE IDλ“€ λΆ€ν„° λ°›μ•„μ˜€κ³ , 그것듀을 ν•˜λ‚˜μ”© μ½μ–΄κ°€λ©΄μ„œ ν•΄λ‹Ή CVE ID의 일자, μœ„ν—˜λ„λ₯Ό κΈμ–΄μ˜¨λ‹€. κ·Έλž˜μ„œ 사싀 url둜 λ§Œλ“€μ–΄μ„œ request λ³΄λ‚΄λŠ” 건 dateλž‘ severity ꡬ할 λ•Œ λ‘λ²ˆμ΄λ©΄ λΌμ„œ 두가지 url λ§Œλ“€μ–΄μ„œ μš”μ²­ 보내고 μ μ ˆν•˜κ²Œ νŒŒμ‹±ν•΄μ„œ 정보 κΈμ–΄μ˜¨ λ‹€μŒμ— f.write()ν•œλ‹€. 

 

 

μ‹€ν–‰ terminal

 

μ‹€ν–‰κ²°κ³Ό .txt

 

 

LIST