๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โœ๏ธ 21-2 IPP/study & work

openpyxl ์—ฐ์Šต - 2 (+์—‘์…€ ์Šฌ๋ผ์ด์„œ)

by hanwitjus 2021. 10. 1.

๊ฒ€์ƒ‰์–ด ์ค‘์‹ฌ์œผ๋กœ CVE ๊ฒ€์ƒ‰ํ•ด ๋†“์€ ๊ฑธ ํŒ€์žฅ๋‹˜์ด ๋Œ€๋ถ„๋ฅ˜ Vendor, ์†Œ๋ถ„๋ฅ˜ Product๋กœ ๋‹ค์‹œ ์ •๋ฆฌํ•ด๋‹ฌ๋ผ๊ณ  ํ•˜์…จ๋‹ค. ์ด๊ฑธ ํ•˜๋ ค๊ณ  ๋ณด๋‹ˆ๊นŒ ์—ญ์‹œ ์–‘์ด ๋ฐฉ๋Œ€ํ•ด์„œ CVE ์กฐ์‚ฌํ• ๋•Œ ํฌ๋กค๋ง ํ”„๋กœ๊ทธ๋žจ ๋งŒ๋“  ๊ฒƒ ์ฒ˜๋Ÿผ ์—‘์…€ ์ž๋™ํ™” ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ด๊ฑธ ์ˆ˜ํ–‰ํ•˜๋ฉด ์–ด๋–จ๊นŒ ์‹ถ์–ด์„œ ํšŒ์‚ฌ ์™€์„œ ์ดˆ๋ฐ˜์— ๊ณต๋ถ€ํ–ˆ๋˜ openpyxl ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋”ฉ์„ ํ•ด๋ดค๋‹ค.

 

์ผ๋‹จ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•œ ๊ฑด Vendor๋ณ„๋กœ ๋ถ„๋ฅ˜๋ฅผ ํ•˜๋Š”๊ฑฐ๋‹ˆ๊นŒ ๊ฐ™์€ Vendor๋ฅผ ๊ฐ–๊ณ ์žˆ๋Š” ๋ชจ๋“  CVE๋ฅผ ๋‹ค ๊ฐ€์ ธ์™€์•ผ ํ•˜๋ฏ€๋กœ key๋ณ€์ˆ˜์— ์ฐพ๊ณ ์žํ•˜๋Š” Vendor๋ช…์„ ์ž…๋ ฅํ•˜๊ณ  ์ด๊ฒƒ๊ณผ ๊ฐ™์œผ๋ฉด ๋ฉ”๋ชจ์žฅ์— ํ•ด๋‹น CVE์˜ ID๋ฅผ writeํ•˜์—ฌ ์ €์žฅํ•˜๋Š” ์‹์œผ๋กœ ์ฝ”๋”ฉ์„ ํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

 

 

๋จผ์ € ๋‚ด๊ฐ€ ์ง  ์ „์ฒด ์ฝ”๋“œ๋‹ค.

 

import openpyxl
from openpyxl import Workbook, load_workbook
import sys

key = 'd-link'
vendor = ''
product = ''
cve = ''
cnt = 0
filename = input('Enter Output File Name (Default : search.txt) : ') or 'search.txt'

wb = Workbook()

if not filename.endswith('.txt'):
    filename += '.txt'

try :
    f = open(filename, 'wt')
    for i in range(54, 4031):
        wb = load_workbook('sheet.xlsx')
        sheet = wb.active

        vendor = sheet.cell(i, 7).value
        cve = sheet.cell(i, 5).value

        if vendor != key:
           continue
        else:
            cnt += 1
            if cve == None:
                f.write('\n')
                cve = 'none'
            else:
                f.write(cve + '\n')

            print(cnt, ': ', cve)


    print('---------- END ----------')
    print('total: ', cnt)
    f.close

except KeyboardInterrupt:
    print('End the process, the program has exited...')
    sys.exit()

 

์ด๋ ‡๊ฒŒ ํ•ด์„œ ์ž˜ ๋Œ์•„๊ฐ€๊ธด ํ•˜๋Š”๋ฐ ์†๋„๊ฐ€ ๋„ˆ์–ดใ…“์–ด์–ดใ…“๋ฌด ๋А๋ ธ๋‹ค. ๊ทผ๋ฐ ์ง„์งœ ์ด๊ฑธ ๊ทธ๋ƒฅ ์Œฉ์œผ๋กœ ๋‚ด๊ฐ€ ๋ถ„๋ฅ˜ํ•ด์„œ ์ •๋ฆฌํ•˜๋ฉด ๋ฐฑํผ ์Œฉ๋…ธ๊ฐ€๋‹ค์ธ๋ฐ๋‹ค๊ฐ€ ๋น„ํšจ์œจ์ ์ด๊ณ  ์‹œ๊ฐ„๋„ ์—„์ฒญ ์˜ค๋ž˜๊ฑธ๋ฆด๊ฒŒ ๋ป”ํ–ˆ๋‹ค.

 

 

 ์ตœ๋Œ€ํ•œ ํšจ์œจ์ ์œผ๋กœ ํ•˜๊ณ  ์‹ถ์–ด์„œ ๋จธ๋ฆฌ๋ฅผ ๊ตด๋ ธ๋Š”๋ฐ, ์•„๋ฌด๋ฆฌ ์—‘์…€ ์ž๋™ํ™” ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ ํ•ด๋„ ์ด๋ ‡๊ฒŒ ๊ฒ€์ƒ‰์„ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์€ ๊ฒ€์ƒ‰ํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ๋ฐ–์— ์—†๊ธฐ ๋•Œ๋ฌธ์— ์†๋„ ๋ฉด์—์„œ๋Š” ๋ฉ”๋ฆฌํŠธ๊ฐ€ ์—†์—ˆ๋‹ค.  ๊ณ„์† ๊ฐ™์€ ์œ„์น˜์— ๋ฌด์–ธ๊ฐ€๋ฅผ ๋ณต์‚ฌ ๋ถ™์—ฌ๋„ฃ๊ธฐ๋ฅผ ํ•œ๋‹ค๊ฑฐ๋‚˜ ํ•˜๋Š” ๋ฐ˜๋ณต์ ์ธ '๋ฌธ์„œ์ž‘์—…'์„ ์ž๋™ํ™”๋กœ ํ•ด์ฃผ๋Š”๋ฐ์—๋Š” ์žฅ์ ์ด ๋  ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ, ์ด๋ ‡๊ฒŒ ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ํŒŒ์ผ์— ์žˆ๋Š” data๋“ค ์†์—์„œ ์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ์ฐพ๋Š” ๊ฒƒ์€ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ํ•˜๊ธฐ์—๋Š” ๋ฌด๋ฆฌ์ผ ๊ฒƒ ๊ฐ™์•˜๋‹ค..

 

 

์‹คํ–‰ํ™”๋ฉด... ๊ธ€์“ฐ๊ธฐ ์‹œ์ž‘ ์ „๋ถ€ํ„ฐ ์‹คํ–‰์‹œ์ผœ๋†จ๋Š”๋ฐ ์•„์ง๋„ ํ•˜๊ณ ์žˆ๋‹ค...

 

 

 

์•”ํŠผ ๊ทธ๋ž˜์„œ ๋‚ด๊ฐ€ ์ฐพ์•„๋‚ธ๊ฑด ๋ฐ”๋กœ '์Šฌ๋ผ์ด์„œ'์ด๋‹ค!

 

 

์ด๋ ‡๊ฒŒ ์Šฌ๋ผ์ด์„œ๊ฐ€ ์•Œ์•„์„œ ์ด sheet์— ์žˆ๋Š” ๋ชจ๋“  Vendorํ–‰์˜ ๋ชฉ๋ก๋“ค์„ ๋ณด์—ฌ์ค€๋‹ค. ๊ทธ๋Ÿผ ๋‚œ ๋‚ด๊ฐ€ ์ฐพ๊ณ ์ž ํ•˜๋Š” Vendor์— ์ฒดํฌ๋ฅผ ํ•˜๊ณ , ์Šฌ๋ผ์ด์„œ ํ•˜๋‚˜๋ฅผ ๋” ์ƒ์„ฑํ•ด์„œ

 

 

์ด๋ ‡๊ฒŒ Apple Vendor์— ํ•ด๋‹นํ•˜๋Š” Product๋„ ์„ ํƒํ•˜๋ฉด ๋ถ„๋ฅ˜๋ฅผ ์ž˜ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. 

 

์–ด๋–ป๊ฒŒ ๋ณด๋ฉด ์ด๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ๋„ ๋…ธ๊ฐ€๋‹ค๋ฅผ ์™„์ „ํžˆ ์•ˆํ•ด๋„ ๋˜๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ์ง„ ์•Š์•˜์ง€๋งŒ ๊ทธ๋ž˜๋„ ํ›จ์”ฌ ํŽธํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

 

LIST

๋Œ“๊ธ€