También disponible en: English · Português · Français · العربية
Conversor de punycode
Descodifica dominios xn-- para ver qué letras dicen de verdad, codifica en el otro sentido y comprueba de qué alfabetos tira un nombre.
¿Qué es punycode?
Los nombres de dominio, tal y como viajan por la red, solo pueden llevar letras de la a a la z, dígitos y guiones. Punycode, definido en el RFC 3492, es la forma de meter en ese alfabeto un dominio escrito en cualquier otra escritura: münchen.de se convierte en xn--mnchen-3ya.de, y пример.рф en xn--e1afmkfd.xn--p1ai. El prefijo xn-- marca una etiqueta codificada así, y lo que va detrás es el punycode propiamente dicho.
Es una pieza de ingeniería bastante ingeniosa. Primero se copian los caracteres ASCII y después una serie compacta de dígitos en base 36 describe qué caracteres no ASCII hay que insertar y en qué posición. No se pierde nada, la codificación es reversible y los nombres cortos siguen siendo cortos.
Te lo sueles encontrar en dos situaciones: o el navegador te ha enseñado un enlace como xn--80ak6aa92e.com y quieres saber qué pone en realidad, o tienes un dominio en tu propia escritura y necesitas la forma ASCII para un fichero de configuración, un certificado o un registro DNS. Esta herramienta hace las dos cosas, entera en tu navegador.
Cómo usarlo
- Elige la dirección que necesitas. De punycode a Unicode convierte un dominio xn-- de vuelta en letras. De Unicode a punycode va al revés, para cuando necesitas la forma ASCII.
- Pega el dominio. Valen dominios enteros, no solo etiquetas sueltas: cada parte entre puntos se convierte por separado, exactamente como la trata el DNS.
- Mira el desglose por etiquetas y la lista de alfabetos. Cada etiqueta aparece con su resultado, así que ves cuál llevaba la codificación. Debajo se listan los sistemas de escritura usados, con un aviso si alguna etiqueta mezcla más de uno.
El navegador hace una dirección y se niega a la otra
Merece la pena saberlo, porque explica por qué existen herramientas como esta. Todos los navegadores llevan dentro una implementación completa de punycode, y desde JavaScript puedes llegar a una parte: construir una URL a partir de münchen.de devuelve un nombre de host xn--mnchen-3ya.de. La dirección de codificado sale gratis.
La inversa no está disponible. Dale al mismo analizador xn--mnchen-3ya.de y te lo devuelve igual, lo cual es correcto, porque ya es un nombre de host válido y no hay motivo para tocarlo, pero significa que la plataforma no te va a decir qué pone en un dominio codificado. Y esa es justo la dirección que necesita quien está mirando un enlace sospechoso, así que hay que implementarla en vez de tomarla prestada. Esta página implementa el RFC 3492 completo, comprobado contra los diecinueve vectores de prueba que publica la propia norma.
Dos nombres que parecen el mismo y no lo son
El motivo de que punycode importe más allá de la curiosidad es que así es como se registra un dominio impostor. Una a latina y una а cirílica son caracteres distintos que casi cualquier tipografía dibuja igual. Escribe apple.com con la cirílica y se codifica como xn--pple-43d.com: un dominio completamente distinto que, en la barra de direcciones, se ve prácticamente igual que el de verdad.
La comprobación que hacen los navegadores es si una misma etiqueta mezcla sistemas de escritura, y esta herramienta te enseña lo mismo. Un nombre con una letra cirílica entre latinas queda marcado. Pero esa comprobación tiene un agujero que conviene entender: una etiqueta escrita entera con sosias cirílicos es texto coherente de un solo sistema, así que pasa. Varias letras cirílicas se parecen lo bastante a las latinas como para escribir palabras enteras. El aviso de mezcla es una señal útil, no una garantía, y esta página lo dice en vez de dar a entender que la ausencia de aviso significa seguridad.
Hay dos sorpresas más en la propia codificación. La ß alemana es uno de un puñado de caracteres cuyo significado cambió entre las dos versiones de la norma IDNA: con las reglas antiguas faß.de se convertía en fass.de y eran el mismo dominio, mientras que con las actuales faß.de se codifica como xn--fa-hia.de y son dos registros distintos. Y en griego, poner un dominio en mayúsculas y volverlo a minúsculas no devuelve el dominio de partida, porque una Σ final pasa a ς y no a σ, así que ΣΊΣΥΦΟΣ.gr y σίσυφος.gr no son el mismo nombre.
Límites honestos
Esto convierte punycode; no te dice si un dominio es peligroso. Un nombre puede ser perfectamente normal en su escritura, y un nombre puede ser ASCII puro y aun así ser una web de phishing. Lo que te da la herramienta son las letras y los sistemas de escritura, que es información que la barra de direcciones no te enseña y que resulta genuinamente útil, pero el juicio es tuyo.
La detección de escrituras es deliberadamente tosca. Cubre latino, griego, cirílico, han, árabe y hebreo, que son los rangos que importan para la confusión de la que va esta página, y todo lo demás se etiqueta como Otro en vez de adivinarlo. Los dígitos, los guiones y los signos cuentan como Común y nunca hacen por sí solos que un dominio parezca mezclado.
Hay además una capa por encima de punycode que esta herramienta no aplica. IDNA2008 tiene reglas sobre qué caracteres pueden aparecer siquiera en un dominio, y los navegadores añaden restricciones propias; la mayoría de registros ni siquiera te venderían un nombre con mezcla de escrituras. Así que un dominio que esta página convierte tan tranquila puede ser uno que ningún registrador aceptaría. Y al revés: un navegador codifica cosas que la norma prohíbe, como un dominio con emoji, o un guion al principio o al final.
Por último, la descodificación se hace por etiqueta. Si un nombre no lleva el prefijo xn--, pasa tal cual, porque no hay manera de distinguir un punycode sin marcar de una palabra normal que casualmente lo parezca.
¿Por qué es gratis?
Porque no cuesta nada mantenerlo. La conversión ocurre en tu navegador según escribes; no se sube nada, no se registra nada y ningún servidor ve los dominios que pegas, cosa que aquí importa más de lo habitual, porque el motivo mismo de usar esta página puede ser que no te fíes del enlace que te han mandado.
Ni cuenta, ni registro, ni nada reservado. El algoritmo es el RFC 3492 tal cual se publicó, verificado contra los diecinueve vectores de prueba de la propia norma y contra una implementación de referencia independiente.