Quebrando CAPTCHAs - Introdução

Por Julio 28/06/2017

CAPTCHAs? SIM, CAPTCHAs

Sabe aquelas imagens chatas que aparecem quando você está preenchendo um formulário ou quer acessar uma página específica, pedindo para você decifrar o texto? Isso é o que chamamos de CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart). Captchas foram criados para impedir que robôs acessem determinadas páginas na web de forma irrestrita. Algumas empresas como a Google também usam essas coisinhas para utilizar o conhecimento de seres humanos para dominar o mundo.

Exemplo de CAPTCHA: Consulta de CNPJ da Receita Federal.

Figure 1: Exemplo de CAPTCHA: Consulta de CNPJ da Receita Federal.

Existem captchas de todo tipo: difíceis, fáceis, que fazem sentido e que não fazem sentido. Um exemplo de CAPTCHA que faz sentido são os presentes em formulários para criação de emails. Imagine se alguém fizesse um programa que criasse bilhões de contas de e-mail do gmail! Morte horrível.

Um exemplo de CAPTCHA que não faz sentido são os sites de serviços públicos, como a Receita Federal ou de alguns Tribunais de Justiça. Algumas justificativas para isso são: i) não onerar os sistemas (me poupe, basta fazer uma API) ou ii) a falsa ideia de que assim estão protegendo as pessoas (de acessar dados públicos?). Se uma informação é pública ela deve ser acessível, ponto. O que é errado não é acessar a informação, e sim fazer mau uso dela.

Pensando nisso, fiquei imaginando:

Será que é possível quebrar CAPTCHAs usando modelos estatísticos?

Tornando curta uma história longa, sim, é possível! O resultado dessa brincadeira está na organização decryptr. Claro que não são todos os CAPTCHAs que conseguimos quebrar, mas estamos fazendo pesquisa, brincando nas Rackathons (hackathons com R) e discutindo várias ideias para tornar isso viável. É um esforço da comunidade para tornar os serviços públicos mais acessíveis.

Série de posts

Como esse tema é extenso e envolve várias técnicas estatísticas e computacionais avançadas, decidimos montar uma série de posts. O plano de posts segue abaixo, mas pode mudar conforme os trabalhos forem realizados.

  1. Introdução - feito! 🙋🏼
  2. O pacote decryptr: baixar, visualizar e classificar CAPTCHAs.
  3. Resolvendo CAPTCHAs com segmentação manual.
  4. Trabalhando com as imagens completas.
  5. Arquitetura do pacote decryptr.
  6. Estendendo o decryptr para quebrar seus próprios CAPTCHAs.
  7. Redes neurais aplicadas a CAPTCHAs.
  8. Utilizando o Keras para quebrar CAPTCHAs.
  9. Quebrando CAPTCHAs usando o áudio - case da Receita Federal.
  10. Tópicos e opiniões sobre o tema.

É isso! Happy coding ;)

comments powered by Disqus