웹 어플리케이션을 보호하기 위해 많은 사람들이 즐겨쓰는 유리 방패가 CAPTCHAS 입니다. 일그러지고 찌그러진 글자를 표시해서 사용자로 하여금 그 글자를 입력하도록 한 다음에 폼을 전송하거나 데이터에 접근할 수 있게 합니다. 이 방법은 보통의 사용자들을 귀찮게 하고, 시각장애인이나 실독증 환자는 아예 접근이 불가능합니다. 이 방법은 또한 우리가 생각하는 것만큼 안전하지도 않습니다. PWNtcha는 OCR과 백엔드 시스템을 사용해서 여러  CAPTCHAS들을 계속해서 크랙하고 있습니다.

정말로 놀라운 것은 자바스크립트와 Canvas만 가지고도 크랙이 가능하다는 것입니다. ShaunF씨는 파일 호스팅 사이트인 Megaupload의 CAPTCHAS 암호를 자동으로 해독하는 GreaseMonkey 스크립트를 작성하셨습니다. 데모는 여기서 확인하실 수 있습니다.

John Resig씨가 이 스크립트를 분석하고 설명한대로, 몇 가지 재밌는 방법이 사용되었습니다.
  1. HTML 5 Canvas의 getImageData API를 CAPTCHA 이미지에서 픽셀 데이터를 가져오기 위해 사용했습니다. Canvas는 이미지를 포함할 수 있고, 그로부터 픽셀 데이터를 추출할 수 있습니다.
  2. 스크립트는 순수 자바스크립트로 작성된 신경망 구현체를 포함하고 있습니다.
  3. Canvas를 사용해 이미지로부터 추출한 픽셀 데이터는 신경망으로 전달되어 정확한 문자로 분리하고, 이 문자들은 광학 문자 인식(OCR)에서 사용됩니다.
사실, Megaupload의 CAPTCHA는 매우 기본적입니다. 그렇지만, 자바스크립트로 그것을 크랙할 수 있다는 것은 여전히 인상적입니다. getImageData API는 좀 더 살펴봐야 할 것 같습니다.

from Captcha cracking in JavaScript with Canvas and neural nets
Posted by 행복한고니 트랙백 1 : 댓글 0

티스토리 툴바