Domínios, e-mails ou URLs
Converta nomes de domínio internacionalizados (IDN) entre a forma Unicode, como ñandú.com.ar, e a forma ASCII com Punycode usada pelo DNS, como xn--and-6ma2c.com.ar. A direção é detectada automaticamente, e-mails e URLs completas são aceitos e você é avisado quando um domínio mistura escritas para se passar por outro.
Até 500 linhas. Nos e-mails, só o domínio é convertido e, nas URLs, só o host.
Resultado
Unicode → ASCII
Unicodeñandú.com.ar
ASCIIxn--and-6ma2c.com.ar
ñandúxn--and-6ma2c13 · Latin
ASCII → Unicode
Unicodemünchen.de
ASCIIxn--mnchen-3ya.de
münchenxn--mnchen-3ya14 · Latin
Unicode → ASCIIE-mail
Unicodecontacto@correo.españa.es
ASCIIcontacto@correo.xn--espaa-rta.es
españaxn--espaa-rta13 · Latin
Unicode → ASCIIURL
Unicodehttps://日本語.jp/ページ
ASCIIhttps://xn--wgv71a119e.jp/%E3%83%9A%E3%83%BC%E3%82%B8
日本語xn--wgv71a119e14 · Han
Unicode → ASCII
Unicodeаррӏе.com
ASCIIxn--80ak6aa92e.com
аррӏеxn--80ak6aa92e14 · Cyrillic

O rótulo está escrito inteiramente com letras cirílicas ou gregas idênticas a letras latinas. Ele pode estar se passando por um domínio conhecido: confira a forma xn-- antes de confiar no link.

Punycode sem prefixo (RFC 3492)

Codifique ou decodifique qualquer texto com o algoritmo Punycode puro, sem o prefixo xn-- nem a normalização de domínios. Útil para depurar uma implementação própria.

Resultadomaana-pta

Como funciona

O DNS só aceita letras ASCII, dígitos e hifens, então um domínio como ñandú.com.ar não pode trafegar como está. Os domínios internacionalizados (IDN) resolvem isso com Punycode (RFC 3492): cada rótulo que tem caracteres fora do ASCII é codificado com um algoritmo que mantém as letras comuns e acrescenta no final a posição das especiais, e recebe o prefixo xn-- na frente. Assim, ñandú vira xn--and-6ma2c.

Antes de codificar, o IDNA normaliza o nome: converte para minúsculas, unifica as formas Unicode e converte pontos alternativos como o 。 japonês. Esta ferramenta usa o mesmo mapeamento (UTS #46) que o navegador aplica ao abrir um endereço, de modo que o resultado coincide com o que ele acaba consultando no DNS. Nos e-mails, converte só o domínio e, nas URLs, só o host.

Além disso, detalha cada rótulo com seu comprimento e as escritas que usa, e avisa quando um domínio mistura alfabetos ou está escrito com letras cirílicas ou gregas idênticas às latinas: essa é a base dos ataques homógrafos, em que um link parece ser de um site conhecido.

Exemplos

ñandú.com.arxn--and-6ma2c.com.arSó muda o rótulo que tem caracteres especiais; com e ar permanecem iguais. É a forma que deve ser cadastrada no DNS e nos SANs de um certificado.
faß.dexn--fa-hia.deNo IDNA2008, o ß alemão é uma letra válida e é codificado. No padrão anterior, ele virava ss e apontava para fass.de, um domínio diferente: por isso alguns sistemas antigos resolvem outra coisa.
аррӏе.comxn--80ak6aa92e.comO homógrafo publicado por Xudong Zheng em 2017: cinco letras cirílicas que parecem exatamente apple. Desde então, o Chrome e o Firefox exibem esse tipo de domínio na forma xn--.
пример.рфxn--e1afmkfd.xn--p1aiOs domínios de primeiro nível também podem ser internacionais: .рф é o da Rússia em cirílico e, no DNS, é escrito xn--p1ai.

Casos de uso

  • Obter a forma xn-- de um domínio com acentos ou cedilha para cadastrar registros no DNS, na configuração do nginx ou do Apache ou nos SANs de um certificado.
  • Entender qual domínio real está por trás de um xn-- que aparece em um log, em um relatório de phishing ou na barra do navegador.
  • Analisar um link suspeito para detectar letras cirílicas ou gregas que imitam as latinas.
  • Converter o domínio de um endereço de e-mail internacionalizado para um servidor que não suporta SMTPUTF8.
  • Verificar se um domínio internacional não ultrapassa 63 caracteres por rótulo depois de codificado.

Perguntas frequentes

O que significa o prefixo xn--?

É o prefixo ACE (ASCII Compatible Encoding), que indica que o rótulo está em Punycode. Os rótulos com hifens na terceira e na quarta posição ficaram reservados para esses prefixos, então os registros não permitem criar um domínio que comece com xn-- se não for um IDN válido.

Qual forma devo usar no DNS, no servidor web e no certificado?

A forma ASCII, com xn--, em todos os lugares técnicos: registros DNS, server_name do nginx, ServerName do Apache, SANs do certificado e cabeçalhos Host. A forma Unicode serve apenas para exibição às pessoas; os navegadores a convertem antes de fazer a consulta.

O que é um ataque homógrafo?

É registrar um domínio que parece idêntico a outro usando letras de outro alfabeto, como o a cirílico no lugar do latino. Os navegadores exibem a forma xn-- quando um rótulo mistura escritas ou se parece com um domínio conhecido. Se um link parece normal, mas sua forma ASCII começa com xn--, desconfie.

É possível usar acentos em um endereço de e-mail?

No domínio, sim, e ele pode ser convertido para xn-- para qualquer servidor. A parte antes da arroba é outra história: com caracteres não ASCII, ela exige que todos os servidores do caminho suportem SMTPUTF8 (RFC 6531), e não tem uma forma Punycode equivalente.

Por que meu domínio com maiúsculas mudou?

Os nomes de domínio não diferenciam maiúsculas de minúsculas, e o IDNA converte tudo para minúsculas antes de codificar: MÜNCHEN.de e münchen.de são o mesmo domínio, xn--mnchen-3ya.de. Já o Punycode puro preserva as maiúsculas, por isso o conversor sem prefixo dá resultados diferentes.