Last active
February 19, 2025 15:39
-
-
Save qgustavor/d69da4f577a13743725a505dc1cb4bb8 to your computer and use it in GitHub Desktop.
Quebra o "captcha" da Secretaria de Segurança Pública do Governo de Goiás (SSP-GO)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name Quebra o "captcha" da Secretaria de Segurança Pública do Governo de Goiás (SSP-GO) | |
// @namespace Violentmonkey Scripts | |
// @match https://raivirtual.ssp.go.gov.br/* | |
// @grant none | |
// @version 1.0 | |
// @author qgustavor | |
// @description Quebra o "captcha" da Secretaria de Segurança Pública do Governo de Goiás (SSP-GO) | |
// ==/UserScript== | |
setInterval(() => { | |
// Pelo nome do elemento, eles usavam o Recaptcha, mas tiveram de parar de usar desde que ficou pago | |
const captchaEl = document.querySelector('#g-recaptcha-response') | |
if (!captchaEl || captchaEl.value) return | |
// Aí eles inventaram um captcha fraco que qualquer um consegue quebrar usando um pouco de processamento de imagem | |
// só que para a versão "acessível" eles, ao invés de gerar um MP3 no servidor, mandaram a resposta do captcha | |
// para a página criptografada usando AES e fizeram o navegador ler a resposta. | |
// Logo tudo o que é necessário para quebrar o captcha é decriptografar a resposta: | |
captchaEl.value = CryptoJS.AES.decrypt({ | |
ciphertext: CryptoJS.enc.Base64.parse(document.querySelector('.img-captcha').src.split(';')[1]) | |
}, CryptoJS.enc.Utf8.parse('123AB567TW012345'), { | |
mode: CryptoJS.mode.ECB, | |
padding: CryptoJS.pad.Pkcs7 | |
}).toString(CryptoJS.enc.Utf8) | |
// Fazendo os usuários desse site - os cidadãos do estado de Goiás - perderem tempo com um captcha idiota | |
// que não serve para nada e que pode ser quebrado com uma máquina mais rápido do que por uma pessoa. | |
// Sério, eles poderiam ter usado essa oportunidade para fazer um captcha que usa crowdsourcing para resolver | |
// problemas do estado de Goiás (algo que tenho experiência), não um captcha desses que só serve para tentar | |
// segurar bots mas que é mal implementado de tal forma que só segura script kiddies. | |
// Usaram ofuscação no JavaScript, como se isso segurasse alguma coisa: o que não falta na internet são técnicas | |
// para contornar ofuscação. Até mesmo botar um debugger em um loop para encher o saco de quem está usando um | |
// debugger (que foi a forma que peguei o código) é fácinho de contornar, só desativar o "pause on debugger statement"! | |
// Se o pessoal da SSP-GO ver esse código e quiser entrar em contato, beleza. Eu posso dar um monte de sugestões | |
// sobre como lidar com robôs, desde opções que não envolvem captchas (que uso em meus sites com sucesso), opções | |
// simples e baratas para o Recaptcha, além de sugestões de captchas que podem usar o tempo dos cidadãos de Goiás | |
// para projetos de crowdsourcing que resolvem problemas do próprio governo. Meu Signal está disponível no meu site. | |
}, 1000) | |
// O setInterval é para evitar usar um mutation observer, e como o é um intervalo rápido de processar, não é | |
// um código tão ruim quanto parece. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment