Espiar QR code
A câmera do celular abre um QR code quase assim que o vê. Este leitor para um passo antes. Ele decodifica o código, mostra o que está escrito nele e o que um celular faria com isso, e deixa a decisão com você.
Os celulares ligam a câmera traseira quando você escolhe “Escanear com a câmera”. Em um computador, uma captura de tela ou uma foto do código serve: solte o arquivo ou cole com Ctrl+V (⌘+V no Mac).
🔒 Decoding takes place on your device. Camera frames and pictures stay in your browser, and what the code says is not passed to anyone.
Um QR code é um pequeno trecho de texto
Esses quadradinhos pretos e brancos formam caracteres, alguns milhares no máximo, com correção de erros para que o código ainda seja lido quando parte dele está suja ou coberta por um logo. É só isso que tem nele. Nenhum programa, nenhum destino escondido. O problema vem do que o aparelho que lê faz em seguida. Se o texto começa com https://, o celular oferece abri-lo. Outros prefixos disparam outras ações, e ninguém consegue saber quais só olhando os quadradinhos.
É por isso que as fraudes migraram para os QR codes. Um link num e-mail passa pelos filtros de spam e você pode passar o cursor sobre ele para examiná-lo. Imprima o mesmo link como código num parquímetro, numa mesa de restaurante ou num falso aviso de entrega, e ele escapa dos filtros e é aberto num celular, onde a barra de endereço mostra muito pouco.
Os tipos de conteúdo que o leitor reconhece
| Começa com | O que um celular faria | O que conferir |
|---|---|---|
http://, https://, www. | Abrir uma página web | O domínio em negrito |
WIFI: | Entrar numa rede sem fio | Quem administra a rede; redes abertas e WEP são sinalizadas |
BEGIN:VCARD, MECARD: | Adicionar um contato | Os campos de e-mail e site |
mailto:, SMSTO:, sms:, tel: | Preparar uma mensagem ou uma ligação | O destinatário; números curtos e números de tarifa especial são sinalizados |
otpauth:// | Adicionar uma conta a um app autenticador | Que é você mesmo quem está configurando |
bitcoin:, ethereum: e semelhantes | Preparar uma transferência de criptomoeda | Tudo, porque não dá para desfazer |
000201…, BCD, upi:// | Preparar um pagamento por cartão, banco (SEPA) ou UPI | Nome do recebedor e valor |
geo:, BEGIN:VEVENT | Abrir um mapa, adicionar um evento à agenda | Nada em especial |
Qualquer outra coisa é mostrada como texto simples. Se houver um endereço web escondido nesse texto, ele passa pelo mesmo exame que um link. Um código com um endereço javascript:, data: ou file: é marcado em vermelho.
Como um link é examinado
A maioria dos códigos contém um endereço web, e o leitor o desmonta sem acessá-lo.
- Domínio. O domínio registrável aparece em negrito e é testado quanto a alfabetos misturados, caracteres invisíveis e semelhança com marcas conhecidas, com o mesmo motor do detector de caracteres enganosos. Tudo o que vem antes de um
@é apontado, porquehttps://city-parking.example@payments.example.net/leva você para payments.example.net. - Criptografia. Um endereço
http://simples fica amarelo. - Encurtadores. Cerca de cinquenta serviços como bit.ly, tinyurl.com e qrco.de são reconhecidos. O destino real fica guardado no servidor do encurtador e não pode ser lido no código. No bit.ly, acrescentar
+ao fim do endereço mostra uma página de pré-visualização. O TinyURL tempreview.tinyurl.com. - Parâmetros de rastreamento.
utm_source,fbclid,gclide seus parentes são listados, e você recebe uma segunda cópia do endereço sem eles. - Palavras de pagamento. Se o endereço fala de pagar, estacionar, multa, pedágio ou fatura, uma observação lembra você de procurar um adesivo colado por cima do código original.
O texto decodificado nunca vira um link clicável, com uma exceção. Endereços web comuns ganham um link “Abrir mesmo assim” no fim, que abre uma nova aba sem enviar referenciador.
O que a leitura do código não diz
O leitor vê o endereço, não a página. Um domínio sem nada de errado na grafia ainda pode hospedar uma cópia do formulário de login de um banco. Para testar o próprio destino, cole o endereço na consulta de sites perigosos ou siga-o salto por salto com o rastreador de redirecionamentos. Os dois rodam no nosso servidor, não no seu celular.
Ele também não enxerga o mundo físico. Passe o dedo sobre um código numa máquina pública, porque um adesivo tem borda. Para qualquer pagamento, o caminho mais seguro é o app do operador ou um endereço web que você mesmo digita.
Tome cuidado especial com códigos otpauth://. Eles contêm o segredo a partir do qual seus códigos de login são gerados. Só leia um na página de segurança de um serviço em que você mesmo está ativando a verificação em duas etapas. Ninguém legítimo vai mandar um para você “verificar sua conta”.
A decodificação usa o detector de códigos de barras embutido no seu navegador, quando existe. Caso contrário, um pequeno decodificador de código aberto é carregado deste site. De qualquer forma a imagem fica no seu aparelho, e a câmera, que precisa da sua permissão, é desligada assim que um código é lido.
Perguntas frequentes
Ler um QR code pode invadir meu celular?
Ler um código é inofensivo, já que ele só entrega texto. O risco começa com o que vem depois, como abrir uma página de phishing, entrar numa rede Wi-Fi desconhecida ou aprovar um pagamento. Se você olhar o conteúdo antes, como esta página faz, nada acontece sem a sua escolha.
Como leio um QR code que está na minha própria tela?
Tire uma captura de tela, depois solte a imagem nesta página, escolha-a pelo botão de arquivo ou cole com Ctrl+V (⌘V no Mac). A imagem é decodificada localmente.
O que é quishing?
Phishing entregue por QR code. Uma forma típica é um adesivo num parquímetro ou num ponto de recarga que leva a uma página de pagamento falsa. Outra é um e-mail pedindo que você leia um código para “manter sua conta ativa”, o que tira você de um computador de trabalho protegido e leva para um celular pessoal.
Por que o leitor diz que nenhum QR code foi encontrado?
O código provavelmente está pequeno demais no quadro, borrado ou cortado. Recorte a imagem em volta do código, deixe uma margem branca nos quatro lados e tente de novo. Códigos que não são QR, como códigos de barras comuns de produtos ou Data Matrix, não são lidos.
Um QR code que usa um encurtador de links é perigoso?
Não necessariamente. Muitos geradores de QR passam todo código pelo próprio domínio curto para que o destino possa ser trocado depois. Isso quer dizer que o código não diz nada sobre onde você vai parar, e o destino pode mudar depois que o código foi impresso. Use o recurso de pré-visualização do encurtador ou o rastreador de redirecionamentos.
A imagem da câmera sai do meu aparelho?
Não. Os quadros são analisados no navegador e descartados. O conteúdo decodificado também não é transmitido.