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