Primeiro eu gostaria de falar oi para os internautas: oi internautas. Agora eu queria falar de uma coisa muito séria. CAPTCHAs são ridículos. Sim, CAPTCHAs são falhos e a maioria é facilmente burlável. Opa, você não sabe o que é CAPTCHA? CAPTCHAs são aquelas letrinhas que você não consegue digitar quando quer fazer alguma coisa na internet, tipo um perfil falso no orkut para estalkear aquela gatinha. O termo CAPTCHA significa Completely Automated Public Turing test to tell Computers and Humans Apart, que, em tradução livre, quer dizer “método inseguro e sádico para descobrir se você é um humano ou não”.

Fonte: http://xkcd.com/632/
Mas o motivo desse post não é a existência do CAPTCHA em si, e sim algo que eu descobri recentemente. Não sei há quanto tempo o Banco do Brasil faz isso, mas eu fui fazer uma trasferência de 100 milhões de reais hoje para pagar a conta do bar que meu amigo Bill Gates pagou ontem, e me deparei com essa surpresinha no site do net banking do Banco do Brasil:
Sim, meus caros. Um CAPTCHA! Neste momento você deve se perguntar: “poxa, como será que eles fazem esse texto ser visto apenas por humanos e não por computadores, né?” O que você não sabe porque ninguém quer dizer é o seguinte: esse texto é tão facilmente lido por computadores quanto é por humanos. Na verdade, vai demorar mais ensinar uma criança a ler números do que ensinar um computador a ler esses números.
Tanto é que eu, que nunca trabalhei com CAPTCHAS e tenho apenas o conhecimento básico de visão computacional (que são técnicas para se extrair informações de imagens) , demorei menos de 5 minutos para fazer meu computador lê-lo.
Sim, 5 minutos. E isso não é um eufemismo. Ok., eu usei o Photoshop e um OCR (Optical Character Recognition, que numa tradução livre significa “Bagulho Loko Que Lê Os Texto Na Moral”) já pronto. Mas o ponto é o seguinte: se eu faço isso com o meu Photoshop supostamente legalizado e com um OCR online, qualquer um definitivamente pode fazer isso em um programa automatizado.
Eu só não faço porque, se o Banco do Brasil prefere por um CAPTCHA fedido no seu site ao invés de colocar um sistema de assinaturas digitais apenas para economizar dinheiro na sua ” incansável busca pela segurança do dinheiro dos seus clien zzzzz ronc”, ele deve ser mau caráter o suficiente para tentar me processar por automatizar a quebra e expor ao ridículo o ingênuo sistema de segurança que eles tentam vender. (E é claro que eu também não faço porque tenho preguiça e daria trabalho fazer algo bonitinho).
A quebra desse CAPTCHA é simples. Como em todo programa de visão computacional, há primeiro a fase de pré-processamento e depois a leitura da imagem para extrair o texto. A fase de pré-processamento se enquadra em tornar o CAPTCHA mais bonito, cheirosinho e cuti-cuti para que o algoritmo escolhido para leitura (como, por exemplo, redes neurais artificiais) possa efetivamente extrair as informações necessárias da imagem, que no caso são esses números.
A primeira parte da fase de pré-processamento consiste em retirar o ruído artificial inserido no CAPTCHA (é assim que eles pretendem fazer com que o computador não leia o texto). O que é simples, posto que o ruído também é bem simples. Neste caso específico, eu apenas “binarizei” a imagem (Thresholding) e posteriormente passei um filtro de mediana (median filter) para retirar o ruído restante. O resultado final foi:
Percebem como essa imagem está mais nítida e legítvel que a anterior? Pois é; e se ela está mais simples para nós, ela também está mais simples para um computador. Também é legal ficar registrado que thresholding e um filtro de mediana são bem simples de serem implementados em um programa de computador.
Como fiquei com preguiça de treinar uma RNA (Rede Neural Artificial) para ler essa imagem, preferi usar um OCR on-line gratuito para sua leitura. As vantagens são que, para a demonstração da “prova de conceitos”, eu não preciso avançar muito mais no pré-processamento e que o OCR em questão já está treinado e funcionando.
Bem, o resultado foi que o OCR leu a imagem; “3780″ foi o texto extraído. E se vocês duvidam da minha gloriosa e honrada palavra, copiem a imagem acima para seus computadores e enviem para o site do OCR (curiosamente, ele também usa um CAPTCHA, embora o dele seja melhor).
Enfim. Esse CAPTCHA é um sistema quase infantil de segurança. Se vocês acham que retirar o dinheiro de baixo do colchão para por no banco foi uma boa atitude, talvez estejam enganados… Na verdade, a única segurança que o público tem ao colocar dinheiro no banco não está no fato dele ser supostamente mais seguro. Está no fato de que as leis obrigam o banco a te ressarcir caso sua conta seja furtada.
Na prática, a segurança do CAPTCHA, senhas de cartões, microchips, chaveiros com geradores de números aleatórios (?), bloqueios de cartões quando esses são clonados etc. Enfim, todas as supostas medidas de segurança – sejam elas realmente seguras ou não - são única e exclusivamente para aumentar a segurança do próprio banco, que é obrigado legalmente a te ressarcir caso seu dinheiro seja tomado de você da sua conta.
Por isso, banqueiro algum se importa: se o investimento na segurança é maior que o prejuízo com as fraudes sofridas, por que gastar dinheiro em segurança? Se é possível economizar para aumentar os lucros – mesmo que seja ao custo da sua dor de cabeça – é isso o que será feito.
Leitura recomendada: O que há de errado com o Projeto Azeredo? por Tulio Vianna.
