Inspetor Unicode

Veja o que há de fato num texto: cada ponto de código com o seu nome, e os caracteres que se escondem ou enganam, de espaços de largura zero e controles bidirecionais do Trojan Source a letras cirílicas fingindo ser latinas. Consulte qualquer ponto de código, encontre um pelo nome, limpe um texto e escreva-o como escapes em oito linguagens.

Codificação e dados
Experimente

Roda no seu navegador. Nada do que você cola sai da página.

50 pontos de código, 50 unidades UTF-16, 58 bytes UTF-8, 1 linha; 4 fora do ASCII.

4 pontos de código merecem atenção.

Controles bidirecionais deixados abertos

Linha 1: U+202E U+2066 ainda abertos no fim da linha. Tudo o que vem depois deles nessa linha pode ser exibido numa ordem diferente da ordem em que um compilador ou analisador o lê, que é o padrão do Trojan Source (CVE-2021-42574).

O que foi encontrado

  • Controle bidirecional: 4Muda a ordem em que o texto ao redor é exibido. Texto da direita para a esquerda precisa dele; em código, pode fazer uma linha parecer diferente do que ela executa (UTS #55).
  • Invisível: 4Default_Ignorable_Code_Point: onde não é suportado, simplesmente não é desenhado.

O texto, com cada caractere escondido à mostra

Cada caractere que merece atenção aparece como uma etiqueta com o seu ponto de código; passe o mouse ou o foco sobre ela para ver o nome.

if access_level != "userU+202E U+2066// Check if adminU+2069 U+2066" {

Todos os pontos de código

PosiçãoLinha:Col.Car.Ponto de códigoNomeCategoriaEscritaMarcas
01:1iLlLatn
11:2fLlLatn
21:3␣ZsZyyy
31:4aLlLatn
41:5cLlLatn
51:6cLlLatn
61:7eLlLatn
71:8sLlLatn
81:9sLlLatn
91:10_PcZyyy
101:11lLlLatn
111:12eLlLatn
121:13vLlLatn
131:14eLlLatn
141:15lLlLatn
151:16␣ZsZyyy
161:17!PoZyyy
171:18=SmZyyy
181:19␣ZsZyyy
191:20"PoZyyy
201:21uLlLatn
211:22sLlLatn
221:23eLlLatn
231:24rLlLatn
241:25-RIGHT-TO-LEFT OVERRIDECfZyyyControle bidirecional, Invisível
251:26␣ZsZyyy
261:27-LEFT-TO-RIGHT ISOLATECfZyyyControle bidirecional, Invisível
271:28/PoZyyy
281:29/PoZyyy
291:30␣ZsZyyy
301:31CLuLatn
311:32hLlLatn
321:33eLlLatn
331:34cLlLatn
341:35kLlLatn
351:36␣ZsZyyy
361:37iLlLatn
371:38fLlLatn
381:39␣ZsZyyy
391:40aLlLatn
401:41dLlLatn
411:42mLlLatn
421:43iLlLatn
431:44nLlLatn
441:45-POP DIRECTIONAL ISOLATECfZyyyControle bidirecional, Invisível
451:46␣ZsZyyy
461:47-LEFT-TO-RIGHT ISOLATECfZyyyControle bidirecional, Invisível
471:48"PoZyyy
481:49␣ZsZyyy
491:50{PsZyyy

Cópia limpa

Escolha o que mudar. Trocar sósias também altera palavras legítimas de outras escritas, por isso vem desligado.

4 removidos, 0 espaços ou quebras de linha, 0 aspas ou traços, 0 sósias trocados.

if access_level != "user // Check if admin " {

Escrever o texto como escapes

Todo caractere fora do ASCII imprimível vira escape, e os caracteres que cada linguagem reserva também. Cada forma foi decodificada de volta pela própria linguagem quando esta ferramenta foi construída.

if access_level != \"user\u202E \u2066// Check if admin\u2069 \u2066\" {
Endpoint da APIGEThttps://ronutz.com/api/v1/unicode-inspectorDocumentado, não servido. Abre a especificação.

Referências

Aparece nestes fluxos de trabalho