Descubra o destino por trás do Safe Links, do URL Defense e de outros envolventes (Mimecast: domínio).
Decodificador de QR code
A ferramenta em si está em inglês; esta página explica como usá-la no seu idioma.
Use Decodificador de QR code
O que ele faz
Carregue, solte ou cole a imagem de um QR code. O conteúdo aparece como texto neutralizado, junto com o que ele faz: um link e o host real dele, um login de Wi-Fi, um pedido de pagamento ou um segredo de dois fatores.
Ele funciona inteiramente no seu navegador: nada do que você digitar é enviado.
Como usar Decodificador de QR code
- Obtenha uma imagem do código. Faça uma captura de tela ou tire uma foto do QR code. A página nunca usa a sua câmera.
- Carregue-a. Solte a imagem na caixa, clique na caixa para escolher um arquivo (PNG, JPEG, GIF, WebP, BMP ou SVG de até 20 MB) ou cole uma captura de tela com Ctrl+V.
- Confira a pré-visualização. A imagem aparece com o código detectado contornado. Um selo indica o tipo de conteúdo e o decodificador que o leu.
- Leia o conteúdo e os avisos. O conteúdo aparece neutralizado, para que os links não possam ser clicados. Notas vermelhas e amarelas abaixo dele explicam o que o código faria.
- Veja os campos. Os campos dividem o conteúdo em partes como Host, Network name, Amount ou Recipient. Endereços de carteira têm seu próprio botão Copy.
- Dê o próximo passo. Para um link, use Send to… para passá-lo ao Link Unwrapper, ao Homoglyph Checker ou ao URL Parser sem visitá-lo.
Exemplo
Link de pagamento de estacionamento com host escondido
https://pay-parking.example@198.51.100.24/pay?zone=401Web link read by jsQR (as is)
Payload (defanged)
hxxps://pay-parking[.]example[@]198[.]51[.]100[.]24/pay?zone=401
Copy raw
Text before "@" is not the destination: this link opens 198[.]51[.]100[.]24, not "pay-parking[.]example".
The host is a bare IP address (198[.]51[.]100[.]24), not a domain name.
HOST
198[.]51[.]100[.]24
USER INFO BEFORE @
pay-parking[.]example
SCHEME
https
PATH
/pay
QUERY
?zone=401
Next: use Send to… above. URL Parser splits the link into parts.Load example desenha este texto como QR code na página e decodifica a imagem: o host real é o endereço IP 198.51.100.24, e pay-parking.example antes do @ é só informação de usuário, então os dois são sinalizados como sinais de perigo.
O que ele verifica
| Sinal | O que isso significa |
|---|---|
| Tipo de conteúdo | Link da web, rede Wi-Fi, pedido de pagamento, segredo de dois fatores, rascunho de e-mail, SMS ou telefone, cartão de contato, evento de calendário, link de app ou texto simples. A cor do selo segue o pior aviso. |
| Host escondido em um link | O texto antes do @ não é o destino, e um host escrito como endereço IP aparece em vermelho. Um host em punycode que mistura alfabetos também aparece em vermelho. |
| Encurtador ou encapsulador de e-mail | Links que passam por bit.ly, qrco.de e serviços parecidos, ou por Safe Links ou URL Defense, escondem o endereço real. A ferramenta avisa isso e indica o Link Unwrapper. |
| Hospedagem gratuita, http, porta, subdomínios profundos | http simples recebe um aviso amarelo. Hospedagens gratuitas como github.io ou pages.dev, uma porta fora do padrão e hosts com cinco ou mais níveis recebem notas, porque um endereço assim diz pouco sobre quem opera a página. |
| Segredo de dois fatores (vermelho) | Um código otpauth carrega um segredo que gera os seus códigos de uso único, e um código otpauth-migration contém uma exportação inteira de um autenticador. O segredo fica escondido até você clicar em Show secret. |
| Pedido de pagamento cripto | Links de pagamento de Bitcoin, Ethereum, Solana, TRON, TON e outros mostram o endereço e o valor. Um código Ethereum que chama approve, increaseAllowance, setApprovalForAll ou permit aparece em vermelho, assim como um transaction request do Solana Pay. |
| Códigos de comerciante UPI e EMV | Escanear um código UPI envia dinheiro da sua conta, e um mandato UPI permite débitos repetidos. Um código EMV cujo checksum CRC não confere foi editado ou danificado. |
| Esquemas perigosos | javascript:, data:, file:, ms-msdt:, search-ms: e esquemas parecidos aparecem em vermelho. Códigos que abrem um app em vez de uma página da web recebem uma nota amarela. |
| Detalhes do Wi-Fi | Nome da rede, tipo de segurança, se há senha e se a rede é oculta. Redes abertas recebem um aviso. |
Mais exemplos
QR code de uma rede Wi-Fi aberta
WIFI:T:nopass;S:Airport Free WiFi;;Wi-Fi network. Network name (SSID): Airport Free WiFi, Security: nopass, Password: none, Hidden network: no. Aviso amarelo: Open network: traffic is not encrypted at the Wi-Fi level. Uma nota diz que atacantes montam redes abertas parecidas para interceptar o tráfego.
QR code com um segredo de autenticador
otpauth://totp/Example:alice@example.com?secret=JBSWY3DPEHPK3PXP&issuer=ExampleTwo-factor (TOTP/HOTP) secret. O conteúdo mostra secret=•••••••• até você clicar em Show secret. Campos: Type TOTP, Issuer Example, Account alice[@]example[.]com, Secret present (16 characters, hidden), Algorithm SHA1 (default), Digits 6 (default), Period 30 s, mais um aviso vermelho para nunca enviar esta imagem a ninguém.
Aprovação de token disfarçada de pagamento (endereços de teste do EIP-55)
ethereum:0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359@1/approve?address=0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed&uint256=115792089237316195423570985008687907853269984665640564039457584007913129639935Ethereum payment request. Campos: Network Ethereum, Contract 0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359, Chain ID 1, Function approve, Address parameter (o spender) e Token amount (raw units), aqui o máximo de 78 dígitos. Aviso vermelho: This asks your wallet to call approve: it gives 0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed permission to move your tokens. Wallet drainers use exactly this. Em seguida vem uma nota amarela: compare o endereço inteiro.
Perguntas frequentes
O que o decodificador mostra para um QR code?
O texto decodificado, neutralizado para não ser clicável, e o tipo dele: um link da web (host, punycode, host que é um IP, informação de usuário antes do @, encurtadores e encapsuladores de links), uma rede Wi-Fi, um rascunho de e-mail, telefone ou SMS, um pedido de pagamento cripto, UPI ou EMV, um segredo de dois fatores otpauth, um cartão de contato ou um evento de calendário. Cada tipo recebe os avisos que importam para ele, por exemplo que um código otpauth carrega um segredo 2FA.
Por que uma imagem não é decodificada?
O código pode estar muito pequeno, desfocado, cortado nas bordas ou coberto por reflexos; recortar a imagem de forma a incluir apenas o código com sua borda branca geralmente ajuda. O decodificador tenta usar o detector de código de barras integrado ao navegador, quando houver um, e, em seguida, o jsQR na imagem (reduzida para 1.600 pixels no lado mais longo), um limiar de preto e branco, uma borda branca adicionada e, para imagens de até 800 pixels no lado mais longo, uma ampliação de 2x.
A imagem é enviada?
Não. A imagem é decodificada no seu navegador com a biblioteca jsQR incluída e nunca é enviada a lugar nenhum. A câmera não é usada, então tire uma foto ou uma captura de tela e carregue ou cole.
E se a imagem tiver mais de um QR code?
Se o seu navegador tem um detector de códigos de barras embutido, cada código encontrado é listado como QR code 1 of N, cada um com seus próprios avisos. O jsQR, usado como alternativa, lê um código por imagem, então recorte a imagem no código que interessa.
Por que a senha do Wi-Fi ou o segredo de dois fatores ficam escondidos?
Para que não apareçam na tela nem em uma captura de tela do resultado. Show secret os revela na caixa de conteúdo, e Copy raw sempre copia o texto completo.
Posso soltar um link para uma imagem de outro site?
Não. A página só lê arquivos de imagem e imagens coladas e não baixa nada. Salve a imagem antes, ou copie a própria imagem e cole. Um texto data:image em base64 colado também funciona.