Herramientas de desarrollo · JWT decodificador
Cómo decodificar una carga útil JWT a mano con base64 y jq
· Cómo funciona
jwt línea de comando flujo de trabajo del desarrollador
En una caja sin cabeza todavía puedes leer un token con cut, tr, base64 y jq. Esta publicación brinda los comandos, explica la conversión de base64url que realiza cada uno y enumera los errores.
Lectura de un token a través de SSH: cuando un navegador no es una opción
Un servidor sin cabeza puede dejarle con una cadena en forma de token y sin interfaz de usuario del navegador. El trabajo de inspección requerido aún es pequeño: aislar un segmento, traducir la ortografía de la URL base64, restaurar el relleno, decodificar bytes y analizar JSON. El peligro es operativo más que computacional porque el historial del shell puede preservar una credencial activa.
Utilice un token sintético o caducado siempre que sea posible. Si la respuesta a incidentes requiere examinar un valor real, siga los controles de manejo de credenciales de su organización, evite que ingrese al historial o registros compartidos y rótelo después de la exposición. La decodificación de la línea de comandos sigue siendo sólo de inspección; no proporciona ninguna clave de verificación ni política de confianza.
División en puntos: corte o awk para aislar el segmento de carga útil
Un JWT compacto con forma de JWS tiene tres campos separados por puntos. La carga útil es la segunda. Un shell puede dividirlo con una herramienta que reconoce delimitadores, pero entrecomilla las variables para que el shell no expanda caracteres ni divida espacios en blanco. Elimine una etiqueta `Bearer ` inicial antes de seleccionar campos porque ese prefijo pertenece a la sintaxis HTTP.
Cuente los campos en lugar de tomar el campo dos a ciegas. ToolAcre rechaza todo lo que no sea de tres partes e identifica por separado la entrada cifrada de cinco partes. Un oleoducto exterior debería aplicar la misma precaución estructural; recibir un segmento de una entrada con formato incorrecto puede producir un JSON plausible y al mismo tiempo ocultar que el token original fue truncado.
Conversión del alfabeto: tr para convertir el guión y el guión bajo en más y barra
Las implementaciones estándar de línea de comandos Base64 normalmente esperan un signo más y una barra diagonal donde un segmento JWT puede contener un guión y un guión bajo. Al traducir `-` a `+` y `_` a `/` se asignan los símbolos seguros para URL a sus posiciones estándar sin cambiar los valores de seis bits representados.
Utilice un comando de traducción cuya opción de análisis no pueda confundir un guión inicial con una bandera y mantenga los datos en una variable entre comillas o una entrada estándar. La conversión del alfabeto es un trabajo de codificación reversible. No descifra las afirmaciones y el éxito no establece que el token proceda del emisor nombrado.
Restaurar el relleno: la aritmética que suma el número correcto de signos iguales
Después de la traducción, calcule la longitud módulo cuatro. El resto cero no necesita signos iguales, el resto dos necesita dos y el resto tres necesita uno. El resto indica truncamiento y debería detener la canalización. Agregar un relleno arbitrario hasta que una empresa deje de quejarse puede ocultar el daño en lugar de diagnosticarlo.
ToolAcre usa exactamente esta regla de longitud en `base64ToBytes` y rechaza el resto imposible. Las utilidades de Shell varían en cuanto a si aceptan relleno omitido, por lo que normalizar primero la entrada hace que el concepto de canalización sea explícito y portátil, aunque los indicadores de comando aún pueden diferir entre sistemas operativos.
Decodificación e impresión bonita: base64 -d canalizada a jq
Canalice el valor acolchado al decodificador Base64 de la plataforma y luego a `jq`. El primer comando recupera bytes; el segundo requiere que esos bytes formen JSON. Un comando Base64 exitoso seguido de un error de análisis jq significa que la codificación era estructuralmente descodificable pero su contenido no era una carga útil JSON.
Esa distinción refleja las rutas de error de ToolAcre. Primero informa base64url o UTF-8 no válido, luego informa por separado JSON no válido, luego rechaza nulos, matrices y primitivas porque un encabezado o carga útil JWT debe ser un objeto para esta herramienta. Mantener las etapas separadas hace que una falla sea procesable.
Ejemplo resuelto: el proceso completo en un token de muestra, con el resultado en cada etapa
Para un ejemplo sintético, el segmento de carga útil `eyJzdWIiOiJkZW1vIiwicm9sZSI6InJlYWRlciJ9` no necesita traducción alfabética ni relleno. La decodificación produce `{"sub":"demo","role":"reader"}` y jq formatea ese objeto a través de líneas. El rol visible es simplemente una cadena proporcionada por el token.
Ahora modifique el JSON, codifíquelo nuevamente y adjunte cualquier tercer segmento. La canalización todavía imprime el objeto modificado. Esto demuestra por qué un comando de decodificación no puede servir como verificación de validez: tanto las afirmaciones legítimas como las fabricadas atraviesan las mismas transformaciones públicas a menos que un verificador independiente verifique la firma.
Errores: historial de shell que captura el token, implementaciones base64 que rechazan el relleno faltante y tokens con un 'Portador' inicial
Las fallas comunes incluyen conservar el prefijo HTTP, seleccionar el campo separado por puntos incorrecto, perder caracteres finales durante la copia y usar una implementación Base64 que requiere relleno. Otro problema es colocar el token completo directamente en la línea de comando, donde los listados de procesos o el historial pueden retenerlo.
Prefiera entradas estándar y variables efímeras bajo controles apropiados, y nunca pegue un token de producción en chat, tickets o terminales compartidas por conveniencia. Recuerde también que el tercer segmento es material de firma binaria en lugar de JSON, por lo que enviarlo a través de jq debería fallar y no le indica nada sobre la validez de la firma.
Conclusión: la misma decodificación, en cualquier entorno; cuando tienes un navegador, el descodificador ToolAcre JWT lo hace localmente sin cargar nada
La canalización de shell y ToolAcre realizan la misma secuencia de solo decodificación en diferentes entornos: dividir, normalizar, rellenar, decodificar UTF-8 y analizar JSON. Utilice cualquier entorno que pueda inspeccionar y controlar, con datos no confidenciales como valor predeterminado.
Ninguna ruta verifica la autenticidad ni autoriza a la persona que llama. Después de leer la forma de la carga útil, vaya al verificador confiable del servicio y a los registros para tomar decisiones criptográficas y políticas. Un comando que produce bastante JSON ha completado una tarea de formateo, no un juicio de seguridad.