{"id":1817,"date":"2023-03-30T10:33:59","date_gmt":"2023-03-30T10:33:59","guid":{"rendered":"https:\/\/www.mainmind.com\/blog\/?p=1817"},"modified":"2023-03-30T11:33:48","modified_gmt":"2023-03-30T11:33:48","slug":"recuperar-contrasenas-node-red-en-home-assistant","status":"publish","type":"post","link":"https:\/\/www.mainmind.com\/blog\/recuperar-contrasenas-node-red-en-home-assistant\/","title":{"rendered":"Recuperar contrase\u00f1as Node-RED en Home Assistant"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Existen diferentes formas de recuperar contrase\u00f1as, en este caso veremos como hacerlo de manera sencilla desde un entorno Windows. Instalamos y activamos el Plugin <a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/home-assistant\/addons\/tree\/master\/ssh\" data-type=\"URL\" data-id=\"https:\/\/github.com\/home-assistant\/addons\/tree\/master\/ssh\" target=\"_blank\">Terminal &amp; SSH<\/a> para acceder a los ficheros de manera remota, si tenemos pocas credenciales guardadas el fichero ser\u00e1 peque\u00f1o y podremos acceder desde la barra lateral&#8230;<\/p>\n\n\n\n<!--more-->\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"558\" height=\"114\" src=\"https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2023\/HomeAssistant\/node_red_terminal.jpg\" alt=\"\" class=\"wp-image-1820\" srcset=\"https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2023\/HomeAssistant\/node_red_terminal.jpg 558w, https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2023\/HomeAssistant\/node_red_terminal-300x61.jpg 300w\" sizes=\"auto, (max-width: 558px) 100vw, 558px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Si no est\u00e1s familiarizado con entornos Linux (para salir del visor sin guardar escribe \u00ab:q!\u00bb) o el acceso al fichero de credenciales <em>flows_cred.json<\/em> es muy extenso podr\u00edamos utilizar <a rel=\"noreferrer noopener\" href=\"https:\/\/winscp.net\/eng\/download.php\" data-type=\"URL\" data-id=\"https:\/\/winscp.net\/eng\/download.php\" target=\"_blank\">WinSCP<\/a> para descargar en nuestro equipo y continuar con el siguiente paso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El contenido del fichero se encuentra encriptado y tendr\u00e1 un aspecto similar a este:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\n{&quot;$&quot;:&quot;e248d1de8RuXi7sevRMSnJldMNhGfzGREFXOvTdHLxx5ujcLBUkgtw4Cg...&quot;}\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Necesitaremos la contrase\u00f1a\/secreto utilizada por Node-RED para encriptar los datos, podemos acceder desde Ajustes &gt; Complementos &gt; Node-RED &gt; Configuraci\u00f3n:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2023\/HomeAssistant\/node_red_secret-1024x318.jpg\" alt=\"\" class=\"wp-image-1819\" width=\"694\" height=\"216\" srcset=\"https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2023\/HomeAssistant\/node_red_secret-1024x318.jpg 1024w, https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2023\/HomeAssistant\/node_red_secret-300x93.jpg 300w, https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2023\/HomeAssistant\/node_red_secret-768x238.jpg 768w, https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2023\/HomeAssistant\/node_red_secret.jpg 1057w\" sizes=\"auto, (max-width: 694px) 100vw, 694px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Dependiendo de la instalaci\u00f3n que tengamos de Home Assistant podremos utilizar <a rel=\"noreferrer noopener\" href=\"https:\/\/nodejs.org\/en\/download\" data-type=\"URL\" data-id=\"https:\/\/nodejs.org\/en\/download\" target=\"_blank\">Node.js<\/a> en la misma m\u00e1quina o ejecutar el siguiente fichero en JavaScript:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\nconst crypto = require(&#039;crypto&#039;);\n \nfunction mostrarCredenciales(clave, contenido) {\n  var flows = contenido&#x5B;&quot;$&quot;];\n  var vector = Buffer.from(flows.substring(0, 32),&#039;hex&#039;);\n  flows = flows.substring(32);\n  var dec = crypto.createDecipheriv(&quot;aes-256-ctr&quot;, clave, vector);\n  var texto = dec.update(flows, &#039;base64&#039;, &#039;utf8&#039;) + dec.final(&#039;utf8&#039;);\n  return JSON.parse(texto);\n}\n \nvar fichero = require(&quot;.\/&quot; + process.argv&#x5B;2])\nvar secreto = process.argv&#x5B;3]\n \nvar clave = crypto.createHash(&#039;sha256&#039;).update(secreto).digest();\n \nconsole.log(mostrarCredenciales(clave, fichero))\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Si guardamos el fichero como <em>ver_claves.js<\/em> entonces lo ejecutamos desde el mismo directorio:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nnode ver_claves flows_red.json &#x5B;contrase\u00f1a]\n<\/pre><\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2023\/HomeAssistant\/node_red_secret_script.jpg\" alt=\"\" class=\"wp-image-1821\" width=\"498\" height=\"85\" srcset=\"https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2023\/HomeAssistant\/node_red_secret_script.jpg 498w, https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2023\/HomeAssistant\/node_red_secret_script-300x51.jpg 300w\" sizes=\"auto, (max-width: 498px) 100vw, 498px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Enlaces de inter\u00e9s: <br>&#8211; <a rel=\"noreferrer noopener\" href=\"https:\/\/nodejs.org\/api\/crypto.html#cryptocreatedecipherivalgorithm-key-iv-options\" data-type=\"URL\" data-id=\"https:\/\/nodejs.org\/api\/crypto.html#cryptocreatedecipherivalgorithm-key-iv-options\" target=\"_blank\">Node.js cifrado<\/a> <br>&#8211; <a href=\"https:\/\/github.com\/node-red\/node-red\/blob\/master\/packages\/node_modules\/%40node-red\/runtime\/lib\/nodes\/credentials.js#L34-L46\" data-type=\"URL\" data-id=\"https:\/\/github.com\/node-red\/node-red\/blob\/master\/packages\/node_modules\/%40node-red\/runtime\/lib\/nodes\/credentials.js#L34-L46\" target=\"_blank\" rel=\"noreferrer noopener\">Documentaci\u00f3n Node-RED<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Existen diferentes formas de recuperar contrase\u00f1as, en este caso veremos como hacerlo de manera sencilla desde un entorno Windows. Instalamos y activamos el Plugin Terminal &amp; SSH para acceder a los ficheros de manera remota, si tenemos pocas credenciales guardadas el fichero ser\u00e1 peque\u00f1o y podremos acceder desde la barra lateral&#8230;<\/p>\n","protected":false},"author":1,"featured_media":1826,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[864,19],"tags":[866,909],"class_list":["post-1817","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-domotica","category-seguridad","tag-home-assistant","tag-node-red"],"_links":{"self":[{"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/posts\/1817","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/comments?post=1817"}],"version-history":[{"count":0,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/posts\/1817\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/media\/1826"}],"wp:attachment":[{"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/media?parent=1817"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/categories?post=1817"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/tags?post=1817"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}