Recuperar contraseñas Node-RED en Home Assistant

Existen diferentes formas de recuperar contraseñas, en este caso veremos como hacerlo de manera sencilla desde un entorno Windows. Instalamos y activamos el Plugin Terminal & SSH para acceder a los ficheros de manera remota, si tenemos pocas credenciales guardadas el fichero será pequeño y podremos acceder desde la barra lateral…

Si no estás familiarizado con entornos Linux (para salir del visor sin guardar escribe «:q!») o el acceso al fichero de credenciales flows_cred.json es muy extenso podríamos utilizar WinSCP para descargar en nuestro equipo y continuar con el siguiente paso.

El contenido del fichero se encuentra encriptado y tendrá un aspecto similar a este:

{"$":"e248d1de8RuXi7sevRMSnJldMNhGfzGREFXOvTdHLxx5ujcLBUkgtw4Cg..."}

Necesitaremos la contraseña/secreto utilizada por Node-RED para encriptar los datos, podemos acceder desde Ajustes > Complementos > Node-RED > Configuración:

Dependiendo de la instalación que tengamos de Home Assistant podremos utilizar Node.js en la misma máquina o ejecutar el siguiente fichero en JavaScript:

const crypto = require('crypto');
 
function mostrarCredenciales(clave, contenido) {
  var flows = contenido["$"];
  var vector = Buffer.from(flows.substring(0, 32),'hex');
  flows = flows.substring(32);
  var dec = crypto.createDecipheriv("aes-256-ctr", clave, vector);
  var texto = dec.update(flows, 'base64', 'utf8') + dec.final('utf8');
  return JSON.parse(texto);
}
 
var fichero = require("./" + process.argv[2])
var secreto = process.argv[3]
 
var clave = crypto.createHash('sha256').update(secreto).digest();
 
console.log(mostrarCredenciales(clave, fichero))

Si guardamos el fichero como ver_claves.js entonces lo ejecutamos desde el mismo directorio:

node ver_claves flows_red.json [contraseña]

Enlaces de interés:
Node.js cifrado
Documentación Node-RED

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


El periodo de verificación de reCAPTCHA ha caducado. Por favor, recarga la página.