¿Cómo se codifica el token de API en los archivos de configuración de Jenkins?

3

Estoy usando una configuración de prueba Jenkins 1.644 donde creé un usuario llamado admin.

La interfaz web dice que el token API del usuario es aa13769c03d0ef0618380ae6940b5e3a.

El archivo de configuración del usuario. users/admin/config.xml contiene lo siguiente.

<jenkins.security.ApiTokenProperty>
  <apiToken>JvzeeQeyI/p/93m3+Cmb1k0j+js7voeJSFbef77eBRy8ItQH5BJoIsYgXTelX7sC</apiToken>
</jenkins.security.ApiTokenProperty>

¿Alguien sabría qué algoritmo de codificación / decodificación se utiliza para pasar de un valor a otro?

marcv81
fuente
1
se parece a su HMACSHA384 (48Bytes) y luego a Base64 codificada (64bytes), pero la clave secreta es desconocida, así que no puedo realizar ingeniería inversa para estar seguro. Es probable que haya un valor incrustado en el programa que se rellena y concatena en el mensaje durante el hash, por lo que, en efecto, es solo un hash que el software sabe cómo crear. El hash HMAC es significativamente más seguro que el SHA tradicional como resultado. es.wikipedia.org/wiki/Hash-based_message_authentication_code Este sitio tiene algunos convertidores interesantes: hash.online-convert.com/sha384-generator
Frank Thomas
Gracias por la conjetura de que podría ser una transformación a un valor de 48 bytes que luego está codificado en Base64. Tiene sentido con los caracteres utilizados y la longitud de la cadena. Sin embargo, no puede haber hash en el proceso, ya que la operación es reversible (es decir, puedo usar el mismo archivo de configuración en 2 configuraciones diferentes y Jenkins puede resolver el token API real).
marcv81
Echando un vistazo al código, creo que el token de API está concatenado con ::::MAGIC:::: luego AES128 encriptado con una clave que no pude recuperar, pero que es la misma en todas las instancias de Jenkins.
marcv81
El directorio de inicio de Jenkins contiene un archivo llamado secret.key. Esa podría ser la clave secreta.
derfred