# 4Chan CAPTCHA 해독하기

> Clean Markdown view of GeekNews topic #18032. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=18032](https://news.hada.io/topic?id=18032)
- GeekNews Markdown: [https://news.hada.io/topic/18032.md](https://news.hada.io/topic/18032.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-11-30T14:34:20+09:00
- Updated: 2024-11-30T14:34:20+09:00
- Original source: [nullpt.rs](https://www.nullpt.rs/breaking-the-4chan-captcha)
- Points: 1
- Comments: 1

## Topic Body

#### 소개
- 이 프로젝트는 머신러닝과 TensorFlow에 대한 지식을 향상시키기 위한 학습 경험으로 시작되었음.
- 목표는 브라우저에서 4Chan CAPTCHA를 80% 이상의 정확도로 해결할 수 있는 머신러닝 모델을 만드는 것이었음.

#### 용어
- **CAPTCHA**: 컴퓨터나 웹사이트 사용자가 인간인지 확인하기 위한 테스트.
- **4Chan**: 다양한 주제의 토론 게시판을 제공하는 익명 이미지 게시판 웹사이트.
- **일반 CAPTCHA**: 5~6개의 영숫자 문자로 구성된 4Chan CAPTCHA.
- **슬라이더 CAPTCHA**: 배경 이미지와 전경 이미지가 겹쳐져 있는 복잡한 형태의 CAPTCHA.

#### 데이터 수집
- 머신러닝 문제에서 가장 어려운 부분은 데이터를 수집하는 것임.
- 4Chan에서 CAPTCHA를 스크래핑하고 솔루션을 얻는 것이 주요 과제였음.

#### 4Chan에서 CAPTCHA 스크래핑
- HTTP 요청을 분석하여 CAPTCHA 데이터를 JSON 형식으로 추출하는 방법을 발견함.
- 요청 간격을 조절하여 CAPTCHA의 난이도를 관리해야 했음.

#### 솔루션 얻기
- 상업적인 CAPTCHA 해결 서비스를 이용했으나, 정확도가 낮았음.
- 직접 해결하거나 신뢰할 수 있는 사람에게 부탁하는 방법도 시도했으나, 제한적이었음.

#### 합성 데이터 생성
- 4Chan CAPTCHA를 모방하여 합성 데이터를 생성함.
- 배경과 문자를 분리하여 합성 CAPTCHA를 생성하는 알고리즘을 개발함.

#### 모델 생성
- LSTM CNN 아키텍처를 사용하여 모델을 구축함.
- Keras와 TensorFlow를 사용하여 모델을 구현함.

#### 데이터 처리
- 모든 CAPTCHA 이미지를 300x80 픽셀로 조정하여 모델에 입력함.
- 문서의 중요성을 강조하며, 문서의 세부 사항을 놓치지 않도록 주의해야 함.

#### 모델 훈련
- 약 500개의 수작업 이미지와 50,000개의 합성 이미지를 사용하여 모델을 훈련함.
- 훈련은 NVIDIA RTX A4000 GPU에서 수행되었음.

#### TensorFlow.js에서 모델 사용
- TensorFlow.js로 모델을 변환하여 브라우저에서 실행 가능하도록 함.
- Python 3.12에서는 변환 스크립트가 작동하지 않음.
- Keras 3 모델은 TensorFlow.js에서 지원되지 않음.

#### 실제 성능
- 실제 4Chan CAPTCHA에서 90% 이상의 성공률을 보임.
- 4자 CAPTCHA에서도 동일한 성능을 보임.

#### 결론
- 이 프로젝트를 통해 머신러닝과 컴퓨터 비전에 대해 많은 것을 배웠음.
- 목표를 달성하여 만족스러운 결과를 얻었음.

## Comments



### Comment 31870

- Author: neo
- Created: 2024-11-30T14:34:21+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=42276865) 
- JSON 스크립트를 사용하여 시각화 데이터를 파싱하는 것은 복잡한 작업임
  - 4chan이 이메일 인증을 요구하기 시작함
- Keras와 Tensorflow.js 간의 상호 운용성 문제는 Tensorflow의 전형적인 문제임
  - TF는 통합된 제품보다는 관련 도구들의 모음처럼 느껴짐
  - 모든 오픈 소스 Google 라이브러리/도구가 비슷한 느낌을 줌
- 왜 사람들이 왜곡된 텍스트 기반 캡차를 피하는지 이유가 있음
  - 컴퓨터가 인간보다 더 잘 풀 수 있는 수준에 도달함
  - 관련된 흥미로운 논문이 있음
- 놀랍게도 많은 텍스트 기반 캡차는 몇 줄의 쉘 스크립트로 해결 가능함
  - imagemagik을 사용하여 그레이스케일로 변환 후 teserract로 처리 가능함
- 2captcha.net 같은 사이트도 존재함
  - 캡차는 최소한의 노력을 요구하는 것과 같음
- 캡차를 가장하여 사용자 행동과 타이밍을 분석하는 것이 더 나을지 궁금함
  - AI를 훈련시켜 상대방이 인간인지 아닌지를 판단하는 '역 튜링 테스트'를 발명할 수 있음
- Silk Road CAPTCHA에 대한 2014년 분석이 있음
- 4chan의 적절한 대응은 인간의 작업을 단순화하는 것임
  - 복잡한 캡차는 인간의 불편함을 증가시키고 기계의 해결 가능성을 줄이지 않음
- 4chan 캡차의 문자 선택이 인종차별적/극단적 슬로건을 만들 수 있도록 의도되었을 가능성이 있음
  - 특정 문자들이 자주 사용됨
  - 무작위로 보이지만 특정 패턴이 자주 발생함
- 4chan 캡차를 해결하는 프로젝트가 존재함
- 4chan을 사용하려 했으나 캡차를 통과하지 못한 경험이 있음
- 4chan이 Google 캡차처럼 봇 행동 감지를 하는지 궁금함
