앵하니의 더 나은 보안

Captcha bypass by Python OCR 본문

보안 기술/Python

Captcha bypass by Python OCR

앵한 2022. 7. 19. 14:18

과거 웹 취약점 진단 시 자동등록방지용 captcha 수준이 낮아 파이썬 OCR 코딩을 통해 우회했던 코드를 공유한다.

당시 captcha의 수준

 

사실 대단한 코드는 아니고 잘 만들어진 pytesseract 모듈을 사용했다.

from PIL import Image
import pytesseract
import urllib.request

ans_list = []
try_num = 10
for i in range(try_num):
    url = "https://캡챠생성페이지"
    urllib.request.urlretrieve(url,'captcha.png')
    data = Image.open("./captcha.png")
    pytesseract.pytesseract.tesseract_cmd = r'C:/Users/test/Desktop/Tesseract-OCR/tesseract'
    text = pytesseract.image_to_string(data,config='--psm 6 -c tessedit_char_whitelist=0123456789')
    print(text)
    right = input("맞니 ?(맞으면 입력, 틀리면 엔터)")
    ans_list.append(right)

percent = list(filter(None,ans_list))
print(str(len(percent)/try_num*100)+"%")

10번을 시도하고 수동으로 검증해본 결과 당시 tesseract가 아직 학습이 많이 필요했는지

일치율은 통상적으로 20프로정도가 나왔다.

 

해당 소스코드를 이용하기 위해선 tesseract-ocr을 설치해야한다.

https://github.com/tesseract-ocr/tesseract

 

GitHub - tesseract-ocr/tesseract: Tesseract Open Source OCR Engine (main repository)

Tesseract Open Source OCR Engine (main repository) - GitHub - tesseract-ocr/tesseract: Tesseract Open Source OCR Engine (main repository)

github.com

 

해당 모듈을 다운로드 받아 다운로드 받은 tesseract의 경로를 소스코드 11번째 줄의 경로로 작성하면 된다.

'보안 기술 > Python' 카테고리의 다른 글

로또번호와 카오스이론  (0) 2024.08.16
Comments