Rating:
自作のRecaptchaシステムが与えられるので300回回避する問題。
適当に以下とかを見ながら環境を作る。
[tesseract+pytesseractのdockerコンテナ](https://qiita.com/cranpun/items/704a32f0def141ea1da4)
これでOCRを使ってソルバーを書いて回避。
使ったOCRエンジンの精度がひどいが、失敗してもペナルティ無しなので、適当に回していればフラグまでたどり着く。
```python
import requests
import re
import base64
from PIL import Image
import pytesseract
BASE_URL = 'https://captcha1.uctf.ir'
INIT_SESSID = '5af1ob090g94h8plhnm27v61gp'
cookies = {
'PHPSESSID': INIT_SESSID,
'926835342a210d84823968c8328cc3c8' : '6a1941a8e10bb5cbd77de0fd19bcebae'
}
b64image = re.search(r'data:image\/png;base64,([^"]*)"', requests.get(BASE_URL + '/', cookies=cookies).text)[1]
with open("image.png", 'bw') as fp:
fp.write(base64.b64decode(b64image))
for i in range(300):
print(i)
ocred = pytesseract.image_to_string(Image.open("image.png")).strip()
t = requests.post(BASE_URL + '/', data={'captcha': ocred}, cookies=cookies).text
b64image = re.search(r'data:image\/png;base64,([^"]*)"', t)[1]
with open("image.png", 'bw') as fp:
fp.write(base64.b64decode(b64image))
```