Subir un archivo
  1. base64hub
  2. Herramientas web y de tokens
  3. Decodificador Basic Auth

Decodificador de Basic Auth

Pega un encabezado Authorization: Basic …, solo el token o una URL que contenga user:pass@. La herramienta separa el usuario y la contraseña y muestra en qué juego de caracteres estaban los bytes.

Gratis sin registro, sin límites Local no se sube nada Automático detección de UTF-8 o Latin-1 Actualizado 27 oct 2026

Se procesa en tu navegador. Esta página no puede enviar tus datos a ninguna parte – cómo lo sabemos

Cómo decodificar un encabezado Basic Auth

  1. Pega el valor en Encabezado Authorization, token Basic o URL con credenciales. Todo esto funciona:
    • Authorization: Basic YWRtaW46czNjcjN0OnBhc3M=
    • Proxy-Authorization: Basic …
    • Basic YWRtaW46czNjcjN0OnBhc3M= o solo el token
    • https://user:password@host/path
  2. Deja Juego de caracteres en Detección automática, o fuerza UTF-8 o ISO-8859-1 si el resultado parece incorrecto.
  3. Lee Usuario y Contraseña, copia cualquiera de los dos y revisa Bytes decodificados (hex) cuando un carácter te parezca sospechoso.

Solo se decodifica el esquema Basic. Los encabezados Digest y NTLM tienen otro formato y se indicarán como otro esquema.

Qué muestra el decodificador

EntradaUsuarioContraseñaNota
Basic YWRtaW46czNjcjN0OnBhc3M=admins3cr3t:passSolo separan los primeros dos puntos; la contraseña conserva los suyos.
dGVzdDoxMjOjtest123£No es UTF-8 válido, así que la detección automática recurre a Latin-1.
dGVzdDoxMjPCow==test123£El mismo texto, en bytes UTF-8.
https://ci-bot:p%40ss@ci.example.com/ci-botp@ssSe toma de la URL y se decodifican los porcentajes.
Bearer eyJhbGciOi…Error: un token Bearer, con un enlace al decodificador JWT.

La detección automática sigue un orden. El ASCII puro se decodifica igual en cualquier juego de caracteres; los bytes que forman UTF-8 válido se leen como UTF-8; todo lo demás se lee como ISO-8859-1, el antiguo valor por defecto de los encabezados HTTP. Latin-1 significa aquí ISO-8859-1 de verdad. Windows-1252 se diferencia de él en el rango 0x80–0x9F, donde están caracteres como €, así que una contraseña en Windows-1252 puede aparecer como caracteres de control.

El decodificador es tolerante con los tokens descuidados, como los que no llevan relleno = o usan - y _ URL-safe, y lo indica, porque los servidores estrictos los rechazarían. Si al decodificar sale un texto sin ningún signo de dos puntos, el valor no era un par user:password, y la herramienta lo dice.

Dónde aparecen las credenciales Basic

  • Herramientas de desarrollo del navegador. La pestaña Red muestra los encabezados de cada petición, Authorization incluido.
  • curl. curl -v imprime la petición, así que -u user:pass aparece como > Authorization: Basic ….
  • Archivos HAR y capturas de proxy, que guardan los encabezados completos de cada petición.
  • Configuraciones de servidores y proxies, donde un encabezado escrito a mano da acceso a un backend, por ejemplo proxy_set_header Authorization "Basic …" en nginx.
  • Credenciales de registros Docker. El campo auth de ~/.docker/config.json es el Base64 de user:password; el decodificador de dockerconfigjson abre el archivo completo.
  • Logs de aplicaciones, cuando un framework registra los encabezados entrantes sin ocultar nada.

Todos estos casos son una contraseña en texto plano con una capa de codificación, así que trátalos como la propia contraseña. Base64 no es cifrado explica por qué la codificación no protege nada.

Decodificar el encabezado en el servidor

Normalmente el framework lo hace por ti, pero un pequeño parser viene bien en scripts y pruebas:

import base64

def parse_basic(header_value):
    scheme, _, token = header_value.strip().partition(" ")
    if scheme.lower() != "basic":
        raise ValueError("not a Basic credential")
    user, colon, password = base64.b64decode(token).decode("utf-8").partition(":")
    if not colon:
        raise ValueError("no colon in the decoded value")
    return user, password

print(parse_basic("Basic YWRtaW46czNjcjN0OnBhc3M="))

Imprime ('admin', 's3cr3t:pass'). El nombre del esquema no distingue mayúsculas de minúsculas, así que compáralo en minúsculas, y usa siempre partition o split(":", 1) para que los dos puntos de la contraseña sobrevivan. Comprueba la contraseña con una comparación de tiempo constante, por ejemplo hmac.compare_digest sobre los bytes codificados, en lugar de ==. Para la dirección contraria, usa el generador de encabezados Basic Auth; tienes más recetas de Base64 en la página de Python.

Preguntas frecuentes

¿Cómo decodifico a mano un token de Basic Auth?

Quita la palabra Basic y el espacio, decodifica el resto desde Base64 y sepáralo por los primeros dos puntos. En Linux o macOS, echo 'YWRtaW46czNjcjN0OnBhc3M=' | base64 -d imprime admin:s3cr3t:pass.

¿Qué significa "Esto es un token Bearer"?

El encabezado usa el esquema Bearer, así que lleva un token en lugar de un usuario y una contraseña. Los tokens Bearer suelen ser JWT; ábrelos en el decodificador JWT.

¿Por qué la contraseña decodificada contiene un símbolo extraño?

Probablemente los bytes se escribieron con un juego de caracteres distinto del que se usó para leerlos. Cambia Juego de caracteres entre Detección automática, UTF-8 e ISO-8859-1, y revisa los bytes en hex: C2 A3 es £ en UTF-8, mientras que un A3 suelto es £ en Latin-1.

He encontrado un encabezado Basic Auth en un log. ¿Qué hago?

Da la contraseña por filtrada y cámbiala. Después corta la fuga: configura el proxy, el servidor web o la biblioteca de logs para que oculten el encabezado Authorization.