550 lines
48 KiB
HTML
550 lines
48 KiB
HTML
|
<!DOCTYPE html>
|
|||
|
<html lang="en-US">
|
|||
|
<head>
|
|||
|
<meta charset='UTF-8'>
|
|||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|||
|
<link rel="profile" href="http://gmpg.org/xfn/11">
|
|||
|
<link rel="pingback" href="/xmlrpc.php">
|
|||
|
<title>How to decrypt flows_cred.json from NodeRED data ? – HugoPoi</title>
|
|||
|
<meta name='robots' content='max-image-preview:large' />
|
|||
|
<link rel='dns-prefetch' href='//fonts.googleapis.com' />
|
|||
|
<link rel='dns-prefetch' href='//s.w.org' />
|
|||
|
<link rel="alternate" type="application/rss+xml" title="HugoPoi » Feed" href="/en/feed/" />
|
|||
|
<link rel="alternate" type="application/rss+xml" title="HugoPoi » Comments Feed" href="/en/comments/feed/" />
|
|||
|
<link rel="alternate" type="application/rss+xml" title="HugoPoi » How to decrypt flows_cred.json from NodeRED data ? Comments Feed" href="/en/2021/12/28/how-to-decrypt-flows_cred-json-from-nodered-data/feed/" />
|
|||
|
<script type="text/javascript">
|
|||
|
window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/13.1.0\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/13.1.0\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/blog.hugopoi.net\/wp-includes\/js\/wp-emoji-release.min.js?ver=5.8.2"}};
|
|||
|
!function(e,a,t){var n,r,o,i=a.createElement("canvas"),p=i.getContext&&i.getContext("2d");function s(e,t){var a=String.fromCharCode;p.clearRect(0,0,i.width,i.height),p.fillText(a.apply(this,e),0,0);e=i.toDataURL();return p.clearRect(0,0,i.width,i.height),p.fillText(a.apply(this,t),0,0),e===i.toDataURL()}function c(e){var t=a.createElement("script");t.src=e,t.defer=t.type="text/javascript",a.getElementsByTagName("head")[0].appendChild(t)}for(o=Array("flag","emoji"),t.supports={everything:!0,everythingExceptFlag:!0},r=0;r<o.length;r++)t.supports[o[r]]=function(e){if(!p||!p.fillText)return!1;switch(p.textBaseline="top",p.font="600 32px Arial",e){case"flag":return s([127987,65039,8205,9895,65039],[127987,65039,8203,9895,65039])?!1:!s([55356,56826,55356,56819],[55356,56826,8203,55356,56819])&&!s([55356,57332,56128,56423,56128,56418,56128,56421,56128,56430,56128,56423,56128,56447],[55356,57332,8203,56128,56423,8203,56128,56418,8203,56128,56421,8203,56128,56430,8203,56128,56423,8203,56128,56447]);case"emoji":return!s([10084,65039,8205,55357,56613],[10084,65039,8203,55357,56613])}return!1}(o[r]),t.supports.everything=t.supports.everything&&t.supports[o[r]],"flag"!==o[r]&&(t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&t.supports[o[r]]);t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&!t.supports.flag,t.DOMReady=!1,t.readyCallback=function(){t.DOMReady=!0},t.supports.everything||(n=function(){t.readyCallback()},a.addEventListener?(a.addEventListener("DOMContentLoaded",n,!1),e.addEventListener("load",n,!1)):(e.attachEvent("onload",n),a.attachEvent("onreadystatechange",function(){"complete"===a.readyState&&t.readyCallback()})),(n=t.source||{}).concatemoji?c(n.concatemoji):n.wpemoji&&n.twemoji&&(c(n.twemoji),c(n.wpemoji)))}(window,document,window._wpemojiSettings);
|
|||
|
</script>
|
|||
|
<style type="text/css">
|
|||
|
img.wp-smiley,
|
|||
|
img.emoji {
|
|||
|
display: inline !important;
|
|||
|
border: none !important;
|
|||
|
box-shadow: none !important;
|
|||
|
height: 1em !important;
|
|||
|
width: 1em !important;
|
|||
|
margin: 0 .07em !important;
|
|||
|
vertical-align: -0.1em !important;
|
|||
|
background: none !important;
|
|||
|
padding: 0 !important;
|
|||
|
}
|
|||
|
</style>
|
|||
|
<link rel='stylesheet' id='wp-block-library-css' href='/wp-includes/css/dist/block-library/style.min.css?ver=5.8.2' type='text/css' media='all' />
|
|||
|
<link rel='stylesheet' id='wp-syntax-css-css' href='/wp-content/plugins/wp-syntax/css/wp-syntax.css?ver=1.1' type='text/css' media='all' />
|
|||
|
<link rel='stylesheet' id='bootstrap-css' href='/wp-content/themes/hestia/assets/bootstrap/css/bootstrap.min.css?ver=1.0.2' type='text/css' media='all' />
|
|||
|
<link rel='stylesheet' id='hestia-font-sizes-css' href='/wp-content/themes/hestia/assets/css/font-sizes.min.css?ver=3.0.20' type='text/css' media='all' />
|
|||
|
<link rel='stylesheet' id='hestia_style-css' href='/wp-content/themes/hestia/style.min.css?ver=3.0.20' type='text/css' media='all' />
|
|||
|
<style id='hestia_style-inline-css' type='text/css'>
|
|||
|
.hestia-top-bar, .hestia-top-bar .widget.widget_shopping_cart .cart_list {
|
|||
|
background-color: #363537
|
|||
|
}
|
|||
|
.hestia-top-bar .widget .label-floating input[type=search]:-webkit-autofill {
|
|||
|
-webkit-box-shadow: inset 0 0 0px 9999px #363537
|
|||
|
}.hestia-top-bar, .hestia-top-bar .widget .label-floating input[type=search], .hestia-top-bar .widget.widget_search form.form-group:before, .hestia-top-bar .widget.widget_product_search form.form-group:before, .hestia-top-bar .widget.widget_shopping_cart:before {
|
|||
|
color: #ffffff
|
|||
|
}
|
|||
|
.hestia-top-bar .widget .label-floating input[type=search]{
|
|||
|
-webkit-text-fill-color:#ffffff !important
|
|||
|
}
|
|||
|
.hestia-top-bar div.widget.widget_shopping_cart:before, .hestia-top-bar .widget.widget_product_search form.form-group:before, .hestia-top-bar .widget.widget_search form.form-group:before{
|
|||
|
background-color: #ffffff
|
|||
|
}.hestia-top-bar a, .hestia-top-bar .top-bar-nav li a {
|
|||
|
color: #ffffff
|
|||
|
}
|
|||
|
.hestia-top-bar ul li a[href*="mailto:"]:before, .hestia-top-bar ul li a[href*="tel:"]:before{
|
|||
|
background-color: #ffffff
|
|||
|
}
|
|||
|
.hestia-top-bar a:hover, .hestia-top-bar .top-bar-nav li a:hover {
|
|||
|
color: #eeeeee
|
|||
|
}
|
|||
|
.hestia-top-bar ul li:hover a[href*="mailto:"]:before, .hestia-top-bar ul li:hover a[href*="tel:"]:before{
|
|||
|
background-color: #eeeeee
|
|||
|
}
|
|||
|
a,
|
|||
|
.navbar .dropdown-menu li:hover > a,
|
|||
|
.navbar .dropdown-menu li:focus > a,
|
|||
|
.navbar .dropdown-menu li:active > a,
|
|||
|
.navbar .navbar-nav > li .dropdown-menu li:hover > a,
|
|||
|
body:not(.home) .navbar-default .navbar-nav > .active:not(.btn) > a,
|
|||
|
body:not(.home) .navbar-default .navbar-nav > .active:not(.btn) > a:hover,
|
|||
|
body:not(.home) .navbar-default .navbar-nav > .active:not(.btn) > a:focus,
|
|||
|
a:hover,
|
|||
|
.card-blog a.moretag:hover,
|
|||
|
.card-blog a.more-link:hover,
|
|||
|
.widget a:hover,
|
|||
|
.has-text-color.has-accent-color,
|
|||
|
p.has-text-color a {
|
|||
|
color:#05ad13;
|
|||
|
}
|
|||
|
.svg-text-color{
|
|||
|
fill:#05ad13;
|
|||
|
}
|
|||
|
.pagination span.current, .pagination span.current:focus, .pagination span.current:hover {
|
|||
|
border-color:#05ad13
|
|||
|
}
|
|||
|
button,
|
|||
|
button:hover,
|
|||
|
.woocommerce .track_order button[type="submit"],
|
|||
|
.woocommerce .track_order button[type="submit"]:hover,
|
|||
|
div.wpforms-container .wpforms-form button[type=submit].wpforms-submit,
|
|||
|
div.wpforms-container .wpforms-form button[type=submit].wpforms-submit:hover,
|
|||
|
input[type="button"],
|
|||
|
input[type="button"]:hover,
|
|||
|
input[type="submit"],
|
|||
|
input[type="submit"]:hover,
|
|||
|
input#searchsubmit,
|
|||
|
.pagination span.current,
|
|||
|
.pagination span.current:focus,
|
|||
|
.pagination span.current:hover,
|
|||
|
.btn.btn-primary,
|
|||
|
.btn.btn-primary:link,
|
|||
|
.btn.btn-primary:hover,
|
|||
|
.btn.btn-primary:focus,
|
|||
|
.btn.btn-primary:active,
|
|||
|
.btn.btn-primary.active,
|
|||
|
.btn.btn-primary.active:focus,
|
|||
|
.btn.btn-primary.active:hover,
|
|||
|
.btn.btn-primary:active:hover,
|
|||
|
.btn.btn-primary:active:focus,
|
|||
|
.btn.btn-primary:active:hover,
|
|||
|
.hestia-sidebar-open.btn.btn-rose,
|
|||
|
.hestia-sidebar-close.btn.btn-rose,
|
|||
|
.hestia-sidebar-open.btn.btn-rose:hover,
|
|||
|
.hestia-sidebar-close.btn.btn-rose:hover,
|
|||
|
.hestia-sidebar-open.btn.btn-rose:focus,
|
|||
|
.hestia-sidebar-close.btn.btn-rose:focus,
|
|||
|
.label.label-primary,
|
|||
|
.hestia-work .portfolio-item:nth-child(6n+1) .label,
|
|||
|
.nav-cart .nav-cart-content .widget .buttons .button,
|
|||
|
.has-accent-background-color[class*="has-background"] {
|
|||
|
background-color: #05ad13;
|
|||
|
}
|
|||
|
@media (max-width: 768px) {
|
|||
|
.navbar-default .navbar-nav>li>a:hover,
|
|||
|
.navbar-default .navbar-nav>li>a:focus,
|
|||
|
.navbar .navbar-nav .dropdown .dropdown-menu li a:hover,
|
|||
|
.navbar .navbar-nav .dropdown .dropdown-menu li a:focus,
|
|||
|
.navbar button.navbar-toggle:hover,
|
|||
|
.navbar .navbar-nav li:hover > a i {
|
|||
|
color: #05ad13;
|
|||
|
}
|
|||
|
}
|
|||
|
body:not(.woocommerce-page) button:not([class^="fl-"]):not(.hestia-scroll-to-top):not(.navbar-toggle):not(.close),
|
|||
|
body:not(.woocommerce-page) .button:not([class^="fl-"]):not(hestia-scroll-to-top):not(.navbar-toggle):not(.add_to_cart_button):not(.product_type_grouped):not(.product_type_external),
|
|||
|
div.wpforms-container .wpforms-form button[type=submit].wpforms-submit,
|
|||
|
input[type="submit"],
|
|||
|
input[type="button"],
|
|||
|
.btn.btn-primary,
|
|||
|
.widget_product_search button[type="submit"],
|
|||
|
.hestia-sidebar-open.btn.btn-rose,
|
|||
|
.hestia-sidebar-close.btn.btn-rose,
|
|||
|
.everest-forms button[type=submit].everest-forms-submit-button {
|
|||
|
-webkit-box-shadow: 0 2px 2px 0 rgba(5,173,19,0.14),0 3px 1px -2px rgba(5,173,19,0.2),0 1px 5px 0 rgba(5,173,19,0.12);
|
|||
|
box-shadow: 0 2px 2px 0 rgba(5,173,19,0.14),0 3px 1px -2px rgba(5,173,19,0.2),0 1px 5px 0 rgba(5,173,19,0.12);
|
|||
|
}
|
|||
|
.card .header-primary, .card .content-primary,
|
|||
|
.everest-forms button[type=submit].everest-forms-submit-button {
|
|||
|
background: #05ad13;
|
|||
|
}
|
|||
|
body:not(.woocommerce-page) .button:not([class^="fl-"]):not(.hestia-scroll-to-top):not(.navbar-toggle):not(.add_to_cart_button):hover,
|
|||
|
body:not(.woocommerce-page) button:not([class^="fl-"]):not(.hestia-scroll-to-top):not(.navbar-toggle):not(.close):hover,
|
|||
|
div.wpforms-container .wpforms-form button[type=submit].wpforms-submit:hover,
|
|||
|
input[type="submit"]:hover,
|
|||
|
input[type="button"]:hover,
|
|||
|
input#searchsubmit:hover,
|
|||
|
.widget_product_search button[type="submit"]:hover,
|
|||
|
.pagination span.current,
|
|||
|
.btn.btn-primary:hover,
|
|||
|
.btn.btn-primary:focus,
|
|||
|
.btn.btn-primary:active,
|
|||
|
.btn.btn-primary.active,
|
|||
|
.btn.btn-primary:active:focus,
|
|||
|
.btn.btn-primary:active:hover,
|
|||
|
.hestia-sidebar-open.btn.btn-rose:hover,
|
|||
|
.hestia-sidebar-close.btn.btn-rose:hover,
|
|||
|
.pagination span.current:hover,
|
|||
|
.everest-forms button[type=submit].everest-forms-submit-button:hover,
|
|||
|
.everest-forms button[type=submit].everest-forms-submit-button:focus,
|
|||
|
.everest-forms button[type=submit].everest-forms-submit-button:active {
|
|||
|
-webkit-box-shadow: 0 14px 26px -12px rgba(5,173,19,0.42),0 4px 23px 0 rgba(0,0,0,0.12),0 8px 10px -5px rgba(5,173,19,0.2);
|
|||
|
box-shadow: 0 14px 26px -12px rgba(5,173,19,0.42),0 4px 23px 0 rgba(0,0,0,0.12),0 8px 10px -5px rgba(5,173,19,0.2);
|
|||
|
color: #fff;
|
|||
|
}
|
|||
|
.form-group.is-focused .form-control {
|
|||
|
background-image: -webkit-gradient(linear,left top, left bottom,from(#05ad13),to(#05ad13)),-webkit-gradient(linear,left top, left bottom,from(#d2d2d2),to(#d2d2d2));
|
|||
|
background-image: -webkit-linear-gradient(linear,left top, left bottom,from(#05ad13),to(#05ad13)),-webkit-linear-gradient(linear,left top, left bottom,from(#d2d2d2),to(#d2d2d2));
|
|||
|
background-image: linear-gradient(linear,left top, left bottom,from(#05ad13),to(#05ad13)),linear-gradient(linear,left top, left bottom,from(#d2d2d2),to(#d2d2d2));
|
|||
|
}
|
|||
|
.navbar:not(.navbar-transparent) li:not(.btn):hover > a,
|
|||
|
.navbar li.on-section:not(.btn) > a,
|
|||
|
.navbar.full-screen-menu.navbar-transparent li:not(.btn):hover > a,
|
|||
|
.navbar.full-screen-menu .navbar-toggle:hover,
|
|||
|
.navbar:not(.navbar-transparent) .nav-cart:hover,
|
|||
|
.navbar:not(.navbar-transparent) .hestia-toggle-search:hover {
|
|||
|
color:#05ad13
|
|||
|
}
|
|||
|
.header-filter-gradient {
|
|||
|
background: linear-gradient(45deg, rgba(168,29,132,1) 0%, rgb(234,57,111) 100%);
|
|||
|
}
|
|||
|
.has-text-color.has-header-gradient-color { color: #a81d84; }
|
|||
|
.has-header-gradient-background-color[class*="has-background"] { background-color: #a81d84; }
|
|||
|
.has-text-color.has-background-color-color { color: #000000; }
|
|||
|
.has-background-color-background-color[class*="has-background"] { background-color: #000000; }
|
|||
|
.btn.btn-primary:not(.colored-button):not(.btn-left):not(.btn-right):not(.btn-just-icon):not(.menu-item), input[type="submit"]:not(.search-submit), body:not(.woocommerce-account) .woocommerce .button.woocommerce-Button, .woocommerce .product button.button, .woocommerce .product button.button.alt, .woocommerce .product #respond input#submit, .woocommerce-cart .blog-post .woocommerce .cart-collaterals .cart_totals .checkout-button, .woocommerce-checkout #payment #place_order, .woocommerce-account.woocommerce-page button.button, .woocommerce .track_order button[type="submit"], .nav-cart .nav-cart-content .widget .buttons .button, .woocommerce a.button.wc-backward, body.woocommerce .wccm-catalog-item a.button, body.woocommerce a.wccm-button.button, form.woocommerce-form-coupon button.button, div.wpforms-container .wpforms-form button[type=submit].wpforms-submit, div.woocommerce a.button.alt, div.woocommerce table.my_account_orders .button, .btn.colored-button, .btn.btn-left, .btn.btn-right, .btn:not(.colored-button):not(.btn-left):not(.btn-right):not(.btn-just-icon):not(.menu-item):not(.hestia-sidebar-open):not(.hestia-sidebar-close){ padding-top:15px; padding-bottom:15px; padding-left:33px; padding-right:33px; }
|
|||
|
.btn.btn-primary:not(.colored-button):not(.btn-left):not(.btn-right):not(.btn-just-icon):not(.menu-item), input[type="submit"]:not(.search-submit), body:not(.woocommerce-account) .woocommerce .button.woocommerce-Button, .woocommerce .product button.button, .woocommerce .product button.button.alt, .woocommerce .product #respond input#submit, .woocommerce-cart .blog-post .woocommerce .cart-collaterals .cart_totals .checkout-button, .woocommerce-checkout #payment #place_order, .woocommerce-account.woocommerce-page button.button, .woocommerce .track_order button[type="submit"], .nav-cart .nav-cart-content .widget .buttons .button, .woocommerce a.button.wc-backward, body.woocommerce .wccm-catalog-item a.button, body.woocommerce a.wccm-button.button, form.woocommerce-form-coupon button.button, div.wpforms-container .wpforms-form button[type=submit].wpforms-submit, div.woocommerce a.button.alt, div.woocommerce table.my_account_orders .button, input[type="submit"].search-submit, .hestia-view-cart-wrapper .added_to_cart.wc-forward, .woocommerce-product-search button, .woocommerce-cart .actions .button, #secondary div[id^=woocommerce_price_filter] .button, .woocommerce div[id^=woocommerce_widget_cart].widget .buttons .button, .searchform input[type=submit], .searchform button, .search-form:not(.media-toolbar-primary) input[type=submit], .search-form:not(.media-toolbar-primary) button, .woocommerce-product-search input[type=submit], .btn.colored-button, .btn.btn-left, .btn.btn-right, .btn:not(.colored-button):not(.btn-left):not(.btn-right):not(.btn-just-icon):not(.menu-item):not(.hestia-sidebar-open):not(.hestia-sidebar-close){border-radius:3px;}
|
|||
|
@media (min-width: 769px){
|
|||
|
.page-header.header-small .hestia-title,
|
|||
|
.page-header.header-small .title,
|
|||
|
h1.hestia-title.title-in-content,
|
|||
|
.main article.section .has-title-font-size {
|
|||
|
font-size: 42px;
|
|||
|
}}
|
|||
|
</style>
|
|||
|
<link rel='stylesheet' id='hestia_fonts-css' href='https://fonts.googleapis.com/css?family=Roboto%3A300%2C400%2C500%2C700%7CRoboto+Slab%3A400%2C700&subset=latin%2Clatin-ext&ver=3.0.20' type='text/css' media='all' />
|
|||
|
<script type='text/javascript' src='/wp-includes/js/jquery/jquery.min.js?ver=3.6.0' id='jquery-core-js'></script>
|
|||
|
<script type='text/javascript' src='/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.3.2' id='jquery-migrate-js'></script>
|
|||
|
<link rel="https://api.w.org/" href="/wp-json/" /><link rel="alternate" type="application/json" href="/wp-json/wp/v2/posts/1320" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="/xmlrpc.php?rsd" />
|
|||
|
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="/wp-includes/wlwmanifest.xml" />
|
|||
|
<meta name="generator" content="WordPress 5.8.2" />
|
|||
|
<link rel="canonical" href="/en/2021/12/28/how-to-decrypt-flows_cred-json-from-nodered-data/" />
|
|||
|
<link rel='shortlink' href='/?p=1320' />
|
|||
|
<link rel="alternate" type="application/json+oembed" href="/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fblog.hugopoi.net%2Fen%2F2021%2F12%2F28%2Fhow-to-decrypt-flows_cred-json-from-nodered-data%2F" />
|
|||
|
<link rel="alternate" type="text/xml+oembed" href="/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fblog.hugopoi.net%2Fen%2F2021%2F12%2F28%2Fhow-to-decrypt-flows_cred-json-from-nodered-data%2F&format=xml" />
|
|||
|
<meta name="description" content="" />
|
|||
|
<style type="text/css" id="custom-background-css">
|
|||
|
body.custom-background { background-color: #000000; }
|
|||
|
</style>
|
|||
|
<style type="text/css" id="wp-custom-css">
|
|||
|
@media only screen and (min-width:1440px){
|
|||
|
/* styles for browsers larger than 1440px; */
|
|||
|
.container{
|
|||
|
width: 1600px;
|
|||
|
}
|
|||
|
}
|
|||
|
.wp-block {
|
|||
|
max-width: initial;
|
|||
|
} </style>
|
|||
|
</head>
|
|||
|
<body class="post-template-default single single-post postid-1320 single-format-standard custom-background blog-post header-layout-default">
|
|||
|
<div class="wrapper post-1320 post type-post status-publish format-standard hentry category-news-en tag-bash-en tag-flows-credential-en tag-nodered-en tag-openssl-en default ">
|
|||
|
<header class="header ">
|
|||
|
<div style="display: none"></div> <nav class="navbar navbar-default navbar-fixed-top hestia_left navbar-not-transparent">
|
|||
|
<div class="container">
|
|||
|
<div class="navbar-header">
|
|||
|
<div class="title-logo-wrapper">
|
|||
|
<a class="navbar-brand" href="/en/"
|
|||
|
title="HugoPoi">
|
|||
|
<p>HugoPoi</p></a>
|
|||
|
</div>
|
|||
|
<div class="navbar-toggle-wrapper">
|
|||
|
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#main-navigation">
|
|||
|
<span class="icon-bar"></span>
|
|||
|
<span class="icon-bar"></span>
|
|||
|
<span class="icon-bar"></span>
|
|||
|
<span class="sr-only">Toggle Navigation</span>
|
|||
|
</button>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div id="main-navigation" class="collapse navbar-collapse"><ul id="menu-main-menu" class="nav navbar-nav"><li id="menu-item-985" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-985"><a title="Home" href="/">Home</a></li>
|
|||
|
<li id="menu-item-1281" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1281"><a title="Videos" href="https://stream.hugopoi.net/channel/1/">Videos</a></li>
|
|||
|
<li id="menu-item-1332-fr" class="lang-item lang-item-204 lang-item-fr no-translation lang-item-first menu-item menu-item-type-custom menu-item-object-custom menu-item-1332-fr"><a title="Français" href="/" hreflang="fr-FR" lang="fr-FR">Français</a></li>
|
|||
|
<li id="menu-item-1332-en" class="lang-item lang-item-206 lang-item-en current-lang menu-item menu-item-type-custom menu-item-object-custom menu-item-1332-en"><a title="English" href="/en/2021/12/28/how-to-decrypt-flows_cred-json-from-nodered-data/" hreflang="en-US" lang="en-US">English</a></li>
|
|||
|
</ul></div> </div>
|
|||
|
</nav>
|
|||
|
</header>
|
|||
|
<div id="primary" class="boxed-layout-header page-header header-small" data-parallax="active" ><div class="container"><div class="row"><div class="col-md-10 col-md-offset-1 text-center"><h1 class="hestia-title entry-title">How to decrypt flows_cred.json from NodeRED data ?</h1><h4 class="author">Published by <a href="/en/author/hugopoi/" class="vcard author"><strong class="fn">HugoPoi</strong></a> on <time class="entry-date published" datetime="2021-12-28T00:17:36+01:00" content="2021-12-28">28 December 2021</time><time class="updated hestia-hidden" datetime="2021-12-28T00:26:42+01:00">28 December 2021</time></h4></div></div></div><div class="header-filter" style="background-image: url(/wp-content/uploads/2017/06/IMG_20170528_085824.jpg);"></div></div>
|
|||
|
<div class="main main-raised ">
|
|||
|
<div class="blog-post blog-post-wrapper">
|
|||
|
<div class="container">
|
|||
|
<article id="post-1320" class="section section-text">
|
|||
|
<div class="row">
|
|||
|
<div class="col-md-8 single-post-container" data-layout="sidebar-right">
|
|||
|
<div class="single-post-wrap entry-content"><h2>1. Digging the code</h2>
|
|||
|
<p>The first step is to reverse the code from NodeRED, simple steps<br />
|
|||
|
1. Clone the sources<br />
|
|||
|
<code>git clone https://github.com/node-red/node-red.git</code><br />
|
|||
|
2. Dig with grep in the code<br />
|
|||
|
<code>grep -ril crypto packages/</code></p>
|
|||
|
<pre><code class=""> packages/node_modules/@node-red/editor-api/lib/auth/index.js
|
|||
|
packages/node_modules/@node-red/editor-api/lib/auth/strategies.js
|
|||
|
packages/node_modules/@node-red/editor-api/lib/auth/tokens.js
|
|||
|
packages/node_modules/@node-red/editor-api/lib/editor/comms.js
|
|||
|
packages/node_modules/@node-red/editor-client/src/js/ui/editors/code-editors/monaco.js
|
|||
|
packages/node_modules/@node-red/editor-client/src/types/README.md
|
|||
|
packages/node_modules/@node-red/editor-client/src/types/node/crypto.d.ts
|
|||
|
packages/node_modules/@node-red/editor-client/src/types/node/tls.d.ts
|
|||
|
packages/node_modules/@node-red/editor-client/src/vendor/monaco/dist/editor.js
|
|||
|
packages/node_modules/@node-red/editor-client/src/vendor/monaco/dist/html.worker.js
|
|||
|
packages/node_modules/@node-red/editor-client/src/vendor/monaco/dist/ts.worker.js
|
|||
|
packages/node_modules/@node-red/nodes/core/common/60-link.js
|
|||
|
packages/node_modules/@node-red/nodes/core/network/21-httprequest.js
|
|||
|
packages/node_modules/@node-red/runtime/lib/nodes/credentials.js
|
|||
|
packages/node_modules/@node-red/runtime/lib/storage/index.js
|
|||
|
packages/node_modules/@node-red/runtime/lib/storage/localfilesystem/projects/git/authServer.js
|
|||
|
packages/node_modules/@node-red/runtime/lib/storage/localfilesystem/projects/index.js
|
|||
|
packages/node_modules/node-red/red.js
|
|||
|
</code></pre>
|
|||
|
<ol start="3">
|
|||
|
<li>Find the interesting parts<br />
|
|||
|
<code>packages/node_modules/@node-red/runtime/lib/nodes/credentials.js</code> file name looks promising.</li>
|
|||
|
</ol>
|
|||
|
<pre><code class="language-javascript ">function decryptCredentials(key,credentials) {
|
|||
|
var creds = credentials["$"];
|
|||
|
var initVector = Buffer.from(creds.substring(0, 32),'hex');
|
|||
|
creds = creds.substring(32);
|
|||
|
var decipher = crypto.createDecipheriv(encryptionAlgorithm, key, initVector);
|
|||
|
var decrypted = decipher.update(creds, 'base64', 'utf8') + decipher.final('utf8');
|
|||
|
return JSON.parse(decrypted);
|
|||
|
}
|
|||
|
</code></pre>
|
|||
|
<p>and</p>
|
|||
|
<pre><code class="language-javascript "> var defaultKey;
|
|||
|
try {
|
|||
|
defaultKey = settings.get('_credentialSecret');
|
|||
|
} catch(err) {
|
|||
|
}
|
|||
|
if (defaultKey) {
|
|||
|
defaultKey = crypto.createHash('sha256').update(defaultKey).digest();
|
|||
|
encryptionKeyType = "system";
|
|||
|
}
|
|||
|
</code></pre>
|
|||
|
<p>and</p>
|
|||
|
<pre><code class="language-javascript "> // Check if we have a generated _credSecret to decrypt with and remove
|
|||
|
if (defaultKey) {
|
|||
|
log.debug("red/runtime/nodes/credentials.load : default key present. Will migrate");
|
|||
|
if (credentialsEncrypted) {
|
|||
|
try {
|
|||
|
credentials = decryptCredentials(defaultKey,credentials)
|
|||
|
} catch(err) {
|
|||
|
credentials = {};
|
|||
|
log.warn(log._("nodes.credentials.error",{message:err.toString()}))
|
|||
|
var error = new Error("Failed to decrypt credentials");
|
|||
|
error.code = "credentials_load_failed";
|
|||
|
throw error;
|
|||
|
}
|
|||
|
}
|
|||
|
dirty = true;
|
|||
|
removeDefaultKey = true;
|
|||
|
}
|
|||
|
</code></pre>
|
|||
|
<ul>
|
|||
|
<li>The key come from <code>_credentialSecret</code> which is in the file <code>.config.runtime.json</code></li>
|
|||
|
<li>Then the key is hashed as sha256 and pass to <code>decryptCredentials()</code> function</li>
|
|||
|
<li><code>decryptCredentials()</code> extract the 32 first characters and taken them as the Initial Vector</li>
|
|||
|
<li>The end of creds string is a base64 encoded, and the content is encrypted aes</li>
|
|||
|
</ul>
|
|||
|
<h2>2. Openssl is a pain</h2>
|
|||
|
<p>The command <code>openssl enc -base64 -d</code> DOESN’T DO THE SAME AS <code>base64 -d</code></p>
|
|||
|
<p><a class="wp-editor-md-post-content-link" href="https://stackoverflow.com/questions/35289912/openssl-enc-base64-d-does-not-decode-strings-after-a-certain-length">Why ?</a></p>
|
|||
|
<p>Because you need <code>-A</code> one line weird option.</p>
|
|||
|
<p><code>openssl enc -base64 -d -A</code> does the same as <code>base64 -d</code></p>
|
|||
|
<p>So if you need to decrypt a encoded base64 payload you need the -a and -A options like</p>
|
|||
|
<p><code>openssl enc -aes-256-ctr -d -a -A</code></p>
|
|||
|
<p>Our key is <code>jq -j '._credentialSecret' $1/.config.runtime.json | sha256sum | cut -c 1-64</code> ( pay attention to the <code>-j</code> option of <code>jq</code> command for not passing a breakline to sha256sum).</p>
|
|||
|
<p>Our IV is <code>jq -r '.["$"]' $1/flows_cred.json | cut -c 1-32</code>.</p>
|
|||
|
<p>And our aes data is <code>jq '.["$"]' -j $1/flows_cred.json | cut -c 33-</code>.</p>
|
|||
|
<h2>3. Final script</h2>
|
|||
|
<pre><code class="language-bash ">#!/bin/bash
|
|||
|
#
|
|||
|
# Decrypt flows_cred.json from a NodeRED data directory
|
|||
|
#
|
|||
|
# Usage
|
|||
|
# ./node-red-decrypt-flows-cred.sh ./node_red_data
|
|||
|
#
|
|||
|
jq '.["$"]' -j $1/flows_cred.json | \
|
|||
|
cut -c 33- | \
|
|||
|
openssl enc -aes-256-ctr -d -base64 -A -iv `jq -r '.["$"]' $1/flows_cred.json | cut -c 1-32` -K `jq -j '._credentialSecret' $1/.config.runtime.json | sha256sum | cut -c 1-64`
|
|||
|
</code></pre>
|
|||
|
</div>
|
|||
|
<div class="section section-blog-info">
|
|||
|
<div class="row">
|
|||
|
<div class="col-md-6">
|
|||
|
<div class="entry-categories">Categories: <span class="label label-primary"><a href="/en/category/news-en/">News</a></span> </div>
|
|||
|
<div class="entry-tags">Tags: <span class="entry-tag"><a href="/en/tag/bash-en/" rel="tag">Bash</a></span><span class="entry-tag"><a href="/en/tag/flows-credential-en/" rel="tag">flows credential</a></span><span class="entry-tag"><a href="/en/tag/nodered-en/" rel="tag">NodeRED</a></span><span class="entry-tag"><a href="/en/tag/openssl-en/" rel="tag">Openssl</a></span></div> </div>
|
|||
|
<div class="col-md-6">
|
|||
|
<div class="entry-social">
|
|||
|
<a target="_blank" rel="tooltip"
|
|||
|
data-original-title="Share on Facebook"
|
|||
|
class="btn btn-just-icon btn-round btn-facebook"
|
|||
|
href="https://www.facebook.com/sharer.php?u=https://blog.hugopoi.net/en/2021/12/28/how-to-decrypt-flows_cred-json-from-nodered-data/">
|
|||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512" width="20" height="17"><path fill="currentColor" d="M279.14 288l14.22-92.66h-88.91v-60.13c0-25.35 12.42-50.06 52.24-50.06h40.42V6.26S260.43 0 225.36 0c-73.22 0-121.08 44.38-121.08 124.72v70.62H22.89V288h81.39v224h100.17V288z"></path></svg>
|
|||
|
</a>
|
|||
|
<a target="_blank" rel="tooltip"
|
|||
|
data-original-title="Share on Twitter"
|
|||
|
class="btn btn-just-icon btn-round btn-twitter"
|
|||
|
href="http://twitter.com/share?url=https://blog.hugopoi.net/en/2021/12/28/how-to-decrypt-flows_cred-json-from-nodered-data/&text=How%20to%20decrypt%20flows_cred.json%20from%20NodeRED%20data%20%3F">
|
|||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="20" height="17"><path fill="currentColor" d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"></path></svg>
|
|||
|
</a>
|
|||
|
<a rel="tooltip"
|
|||
|
data-original-title=" Share on Email"
|
|||
|
class="btn btn-just-icon btn-round"
|
|||
|
href="mailto:?subject=How%20to%20decrypt%20flows_cred.json%20from%20NodeRED%20data%20?&body=https://blog.hugopoi.net/en/2021/12/28/how-to-decrypt-flows_cred-json-from-nodered-data/">
|
|||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="20" height="17"><path fill="currentColor" d="M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"></path></svg>
|
|||
|
</a>
|
|||
|
</div>
|
|||
|
</div> </div>
|
|||
|
<hr>
|
|||
|
<div id="comments" class="section section-comments">
|
|||
|
<div class="row">
|
|||
|
<div class="col-md-12">
|
|||
|
<div class="media-area">
|
|||
|
<h3 class="hestia-title text-center">
|
|||
|
0 Comments </h3>
|
|||
|
</div>
|
|||
|
<div class="media-body">
|
|||
|
<div id="respond" class="comment-respond">
|
|||
|
<h3 class="hestia-title text-center">Leave a Reply <small><a rel="nofollow" id="cancel-comment-reply-link" href="/en/2021/12/28/how-to-decrypt-flows_cred-json-from-nodered-data/#respond" style="display:none;">Cancel reply</a></small></h3><span class="pull-left author"><div class="avatar"><img src="/wp-content/themes/hestia/assets/img/placeholder.jpg" alt="Avatar placeholder" height="64" width="64"/></div></span><form action="https://blog.hugopoi.net/wp-comments-post.php" method="post" id="commentform" class="form media-body"><p class="comment-notes"><span id="email-notes">Your email address will not be published.</span> Required fields are marked <span class="required">*</span></p><div class="row"> <div class="col-md-4"> <div class="form-group label-floating is-empty"> <label class="control-label">Name <span class="required">*</span></label><input id="author" name="author" class="form-control" type="text" aria-required='true' /> <span class="hestia-input"></span> </div> </div>
|
|||
|
<div class="col-md-4"> <div class="form-group label-floating is-empty"> <label class="control-label">Email <span class="required">*</span></label><input id="email" name="email" class="form-control" type="email" aria-required='true' /> <span class="hestia-input"></span> </div> </div>
|
|||
|
<div class="col-md-4"> <div class="form-group label-floating is-empty"> <label class="control-label">Website</label><input id="url" name="url" class="form-control" type="url" aria-required='true' /> <span class="hestia-input"></span> </div> </div> </div>
|
|||
|
<div class="form-group label-floating is-empty"> <label class="control-label">What's on your mind?</label><textarea id="comment" name="comment" class="form-control" rows="6" aria-required="true"></textarea><span class="hestia-input"></span> </div><p class="form-submit"><input name="submit" type="submit" id="submit" class="btn btn-primary pull-right" value="Post Comment" /> <input type='hidden' name='comment_post_ID' value='1320' id='comment_post_ID' />
|
|||
|
<input type='hidden' name='comment_parent' id='comment_parent' value='0' />
|
|||
|
</p><p style="display: none;"><input type="hidden" id="akismet_comment_nonce" name="akismet_comment_nonce" value="6633939105" /></p><p style="display: none !important;"><label>Δ<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js" name="ak_js" value="19"/><script>document.getElementById( "ak_js" ).setAttribute( "value", ( new Date() ).getTime() );</script></p></form> </div><!-- #respond -->
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div> <div class="col-md-3 blog-sidebar-wrapper col-md-offset-1">
|
|||
|
<aside id="secondary" class="blog-sidebar" role="complementary">
|
|||
|
<div id="text-2" class="widget widget_text"><h5>Edito</h5> <div class="textwidget">Bienvenu sur mon blog, ici je parle de bricolage, de web (version de base). Blog perso sans prétention je poste quand j'ai le temps en plus j'aime pas écrire.</div>
|
|||
|
</div><div id="text-6" class="widget widget_text"><h5>Hébergé gracieusement par</h5> <div class="textwidget"><div style="text-align: center"><a href="http://www.majewan.fr"><img src="/wp-content/uploads/2015/01/path22.png" alt="logo Majewan Interactive" style="width: 50%; padding: 1em;"></a></div></div>
|
|||
|
</div><div id="custom_html-2" class="widget_text widget widget_custom_html"><h5>MASTODON</h5><div class="textwidget custom-html-widget"><a rel="me" href="https://mastodon.hugopoi.net/@hugopoi">@Hugopoi</a></div></div><div id="twitter-2" class="widget widget_twitter"><div><h5><span class='twitterwidget twitterwidget-title'>Twitter: hugopoi</span></h5><ul><li><span class='entry-content'>[Blog] How to decrypt flows_cred.json from NodeRED data ? <a href="https://t.co/CU8FYfwdq3">https://t.co/CU8FYfwdq3</a></span> <span class='entry-meta'><span class='time-meta'><a href="http://twitter.com/HugoPoi/statuses/1475611452585263112">about 7 minutes ago</a></span> <span class='from-meta'>from <a href="https://crossposter.hugopoi.net/" rel="nofollow">Mastodon To Twitter HugoPoi</a></span></span> <span class="intent-meta"><a href="http://twitter.com/intent/tweet?in_reply_to=1475611452585263112" data-lang="en" class="in-reply-to" title="Reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=1475611452585263112" data-lang="en" class="retweet" title="Retweet">Retweet</a><a href="http://twitter.com/intent/favorite?tweet_id=1475611452585263112" data-lang="en" class="favorite" title="Favorite">Favorite</a></span></li><li><span class='entry-content'>[Shell Hell]
|
|||
|
This command
|
|||
|
openssl enc -base64 -d
|
|||
|
DOESN'T DO THE SAME AS
|
|||
|
base64 -d
|
|||
|
Why ?… <a href="https://t.co/9FtXX6QiJk">https://t.co/9FtXX6QiJk</a></span> <span class='entry-meta'><span class='time-meta'><a href="http://twitter.com/HugoPoi/statuses/1475419690822479875">about 12 hours ago</a></span> <span class='from-meta'>from <a href="https://crossposter.hugopoi.net/" rel="nofollow">Mastodon To Twitter HugoPoi</a></span></span> <span class="intent-meta"><a href="http://twitter.com/intent/tweet?in_reply_to=1475419690822479875" data-lang="en" class="in-reply-to" title="Reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=1475419690822479875" data-lang="en" class="retweet" title="Retweet">Retweet</a><a href="http://twitter.com/intent/favorite?tweet_id=1475419690822479875" data-lang="en" class="favorite" title="Favorite">Favorite</a></span></li><li><span class='entry-content'>RT <a href="http://twitter.com/NightHaunter" class="twitter-user">@NightHaunter</a>: Les enfants et la pandémie, c'est un peu comme une fable.
|
|||
|
Une fable qui a débuté avec les masques et qui se poursuit avec…</span> <span class='entry-meta'><span class='time-meta'><a href="http://twitter.com/HugoPoi/statuses/1475383742122405892">about 15 hours ago</a></span> <span class='from-meta'>from <a href="https://github.com/TwidereProject" rel="nofollow">Twidere for Android</a></span></span> <span class="intent-meta"><a href="http://twitter.com/intent/tweet?in_reply_to=1475383742122405892" data-lang="en" class="in-reply-to" title="Reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=1475383742122405892" data-lang="en" class="retweet" title="Retweet">Retweet</a><a href="http://twitter.com/intent/favorite?tweet_id=1475383742122405892" data-lang="en" class="favorite" title="Favorite">Favorite</a></span></li><li><span class='entry-content'>[Blog] Do a wifi repeater with only one wifi card and Debian
|
|||
|
<a href="https://t.co/1PQ034kJgW">https://t.co/1PQ034kJgW</a></span> <span class='entry-meta'><span class='time-meta'><a href="http://twitter.com/HugoPoi/statuses/1473333191293517827">05:43:00 PM December 21, 2021</a></span> <span class='from-meta'>from <a href="https://crossposter.hugopoi.net/" rel="nofollow">Mastodon To Twitter HugoPoi</a></span></span> <span class="intent-meta"><a href="http://twitter.com/intent/tweet?in_reply_to=1473333191293517827" data-lang="en" class="in-reply-to" title="Reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=1473333191293517827" data-lang="en" class="retweet" title="Retweet">Retweet</a><a href="http://twitter.com/intent/favorite?tweet_id=1473333191293517827" data-lang="en" class="favorite" title="Favorite">Favorite</a></span></li><li><span class='entry-content'>RT <a href="http://twitter.com/carm_ina" class="twitter-user">@carm_ina</a>: Allez, petit thread rapide en rapport avec les media et le traitement du porno.
|
|||
|
Hier, une chaîne de télé m'appelle pour me f…</span> <span class='entry-meta'><span class='time-meta'><a href="http://twitter.com/HugoPoi/statuses/1471432453902544903">11:50:09 AM December 16, 2021</a></span> <span class='from-meta'>from <a href="https://about.twitter.com/products/tweetdeck" rel="nofollow">TweetDeck</a></span></span> <span class="intent-meta"><a href="http://twitter.com/intent/tweet?in_reply_to=1471432453902544903" data-lang="en" class="in-reply-to" title="Reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=1471432453902544903" data-lang="en" class="retweet" title="Retweet">Retweet</a><a href="http://twitter.com/intent/favorite?tweet_id=1471432453902544903" data-lang="en" class="favorite" title="Favorite">Favorite</a></span></li><li><span class='entry-content'>RT <a href="http://twitter.com/molly_struve" class="twitter-user">@molly_struve</a>: indexes can be helpful as well <a href="https://t.co/lSGnXpRqtU">https://t.co/lSGnXpRqtU</a></span> <span class='entry-meta'><span class='time-meta'><a href="http://twitter.com/HugoPoi/statuses/1470877572380643331">11:05:15 PM December 14, 2021</a></span> <span class='from-meta'>from <a href="https://github.com/TwidereProject" rel="nofollow">Twidere for Android</a></span></span> <span class="intent-meta"><a href="http://twitter.com/intent/tweet?in_reply_to=1470877572380643331" data-lang="en" class="in-reply-to" title="Reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=1470877572380643331" data-lang="en" class="retweet" title="Retweet">Retweet</a><a href="http://twitter.com/intent/favorite?tweet_id=1470877572380643331" data-lang="en" class="favorite" title="Favorite">Favorite</a></span></li><li><span class='entry-content'>It looks good but I think the charger is dead, only ~600mV, seems low, I read 6V is the standby output <a href="https://t.co/VP8zHZSZ31">https://t.co/VP8zHZSZ31</a></span> <span class='entry-meta'><span class='time-meta'><a href="http://twitter.com/HugoPoi/statuses/1470737097619353609">01:47:03 PM December 14, 2021</a></span> <span class='from-meta'>from <a href="https://crossposter.hugopoi.net/" rel="nofollow">Mastodon To Twitter HugoPoi</a></span></span> <span class="intent-meta"><a href="http://twitter.com/intent/tweet?in_reply_to=1470737097619353609" data-lang="en" class="in-reply-to" title="Reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=1470737097619353609" data-lang="en" class="retweet" title="Retweet">Retweet</a><a href="http://twitter.com/intent/favorite?tweet_id=1470737097619353609" data-lang="en" class="favorite" title="Favorite">Favorite</a></span></li><li><span class='entry-content'>RT <a href="http://twitter.com/brutofficiel" class="twitter-user">@brutofficiel</a>: "On ne peut pas dire 'J'irai en réa si je suis malade.' C'est pas possible."
|
|||
|
À l'hôpital de Colmar, sur les 17 patients…</span> <span class='entry-meta'><span class='time-meta'><a href="http://twitter.com/HugoPoi/statuses/1470697799146737666">11:10:54 AM December 14, 2021</a></span> <span class='from-meta'>from <a href="https://github.com/TwidereProject" rel="nofollow">Twidere for Android</a></span></span> <span class="intent-meta"><a href="http://twitter.com/intent/tweet?in_reply_to=1470697799146737666" data-lang="en" class="in-reply-to" title="Reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=1470697799146737666" data-lang="en" class="retweet" title="Retweet">Retweet</a><a href="http://twitter.com/intent/favorite?tweet_id=1470697799146737666" data-lang="en" class="favorite" title="Favorite">Favorite</a></span></li></ul><div class="follow-button"><a href="http://twitter.com/hugopoi" class="twitter-follow-button" title="Follow @hugopoi" data-lang="en">@hugopoi</a></div></div></div><div id="categories-3" class="widget widget_categories"><h5>Catégories</h5>
|
|||
|
<ul>
|
|||
|
<li class="cat-item cat-item-408"><a href="/en/category/news-en/">News</a> (5)
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
</div><div id="linkcat-2" class="widget widget_links"><h5>Blogs et Infos</h5>
|
|||
|
<ul class='xoxo blogroll'>
|
|||
|
<li><a href="http://blog.rom1v.com" title="Découverte récente, publication de qualité">®om's blog</a></li>
|
|||
|
<li><a href="http://bluetouff.com" title="Un blog hacktiviste avec des idées et des compétences pas comme les autres." target="_blank">☠ Bluetouff</a></li>
|
|||
|
<li><a href="http://www.korben.info/" title="Upgrade your Mind" target="_blank">Korben</a></li>
|
|||
|
<li><a href="http://www.laquadrature.net/fr" title="La Quadrature du Net Fr" target="_blank">La Quadrature du Net</a></li>
|
|||
|
<li><a href="https://www.nextinpact.com/" title="Actualité Informatique" target="_blank">NextInpact</a></li>
|
|||
|
<li><a href="http://pixellibre.net/" title="Un petit blog de geek comme on les aime avec du hadopi, de l’info et du troll" target="_blank">Pixel Libre.net</a></li>
|
|||
|
<li><a href="http://reflets.info" title="Reflets.info fait le pari de devenir le reflet d’une société, des individus qui la composent." target="_blank">Reflets</a></li>
|
|||
|
<li><a href="http://blog.spyou.org/wordpress-mu/" rel="acquaintance" title="Fabriquer son internet" target="_blank">Turb(l)o(g)</a></li>
|
|||
|
</ul>
|
|||
|
</div>
|
|||
|
<div id="linkcat-76" class="widget widget_links"><h5>Podcast</h5>
|
|||
|
<ul class='xoxo blogroll'>
|
|||
|
<li><a href="http://www.nowatch.net/category/nowatch-net/nowatch-fm/appload-nowatch-fm/" title="Des Apps pour votre mobile (un peu sponsorisé par Apple mais il y a du Android aussi)" target="_blank">AppLoad</a></li>
|
|||
|
<li><a href="http://freepod.net/" title="Libère ton podcast, regroupement de podcast." target="_blank">Freepod</a></li>
|
|||
|
<li><a href="http://www.geekinc.fr/" title="On partage la culture geek ! (sponsorisé par Apple mais j’aime bien quand même)" target="_blank">GeekInc</a></li>
|
|||
|
<li><a href="http://www.captainweb.net/" title="Podcast déjanté de l’actu web, super ambiance !" target="_blank">L'Apéro du Captainweb</a></li>
|
|||
|
<li><a href="http://www.lagrottedubarbu.com/" title="Hack the technologie" target="_blank">La Grotte du Barbu</a></li>
|
|||
|
<li><a href="http://www.poligeek.fr/" title="“Un jour les geek domineront le monde, mais pas demain, y’a une keynote de Steve Jobs”" target="_blank">PoliGeek</a></li>
|
|||
|
<li><a href="http://quadratour.net/" title="Pour les vieux Geeks de l’apocalypse…" target="_blank">Quadratour</a></li>
|
|||
|
</ul>
|
|||
|
</div>
|
|||
|
</aside><!-- .sidebar .widget-area -->
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</article>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="section related-posts">
|
|||
|
<div class="container">
|
|||
|
<div class="row">
|
|||
|
<div class="col-md-12">
|
|||
|
<h2 class="hestia-title text-center">Related Posts</h2>
|
|||
|
<div class="row">
|
|||
|
<div class="col-md-4">
|
|||
|
<div class="card card-blog">
|
|||
|
<div class="content">
|
|||
|
<h6 class="category text-info"><a href="/en/category/news-en/" title="View all posts in News" >News</a> </h6>
|
|||
|
<h4 class="card-title">
|
|||
|
<a class="blog-item-title-link" href="/en/2021/12/21/do-a-wifi-repeater-with-only-one-wifi-card-and-debian/" title="Do a wifi repeater with only one wifi card and Debian" rel="bookmark">
|
|||
|
Do a wifi repeater with only one wifi card and Debian </a>
|
|||
|
</h4>
|
|||
|
<p class="card-description">Summary I wanted to extend the range of an existing wifi access point without cables or changing the configuration. It’s a temporary installation, and I doesn’t want do buy more hardware and use what I<a class="moretag" href="/en/2021/12/21/do-a-wifi-repeater-with-only-one-wifi-card-and-debian/"> Read more…</a></p>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="col-md-4">
|
|||
|
<div class="card card-blog">
|
|||
|
<div class="content">
|
|||
|
<h6 class="category text-info"><a href="/en/category/news-en/" title="View all posts in News" >News</a> </h6>
|
|||
|
<h4 class="card-title">
|
|||
|
<a class="blog-item-title-link" href="/en/2020/04/29/my-shitty-nvidia-displayport-problems-who-no-ones-care-about/" title="My shitty Nvidia DisplayPort Problems who no ones care about" rel="bookmark">
|
|||
|
My shitty Nvidia DisplayPort Problems who no ones care about </a>
|
|||
|
</h4>
|
|||
|
<p class="card-description">Recently I have done the acquisition of a new ULTRAWIDE screen, precisily a Philips 439PH9 with a DisplayPort v1.4, this information is very important for what’s coming next. The problem The morning I receive it,<a class="moretag" href="/en/2020/04/29/my-shitty-nvidia-displayport-problems-who-no-ones-care-about/"> Read more…</a></p>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="col-md-4">
|
|||
|
<div class="card card-blog">
|
|||
|
<div class="card-image">
|
|||
|
<a href="/en/2020/04/11/how-to-backup-freenas-zvol-to-s3-storage/" title="How to backup FreeNas zvol to S3 storage">
|
|||
|
<img width="360" height="240" src="/wp-content/uploads/2020/04/IMG_20200411_171114-360x240.jpg" class="attachment-hestia-blog size-hestia-blog wp-post-image" alt="" loading="lazy" /> </a>
|
|||
|
</div>
|
|||
|
<div class="content">
|
|||
|
<h6 class="category text-info"><a href="/en/category/news-en/" title="View all posts in News" >News</a> </h6>
|
|||
|
<h4 class="card-title">
|
|||
|
<a class="blog-item-title-link" href="/en/2020/04/11/how-to-backup-freenas-zvol-to-s3-storage/" title="How to backup FreeNas zvol to S3 storage" rel="bookmark">
|
|||
|
How to backup FreeNas zvol to S3 storage </a>
|
|||
|
</h4>
|
|||
|
<p class="card-description">Context I have a FreeNAS setup I want a cheap offsite backup solution Backblaze only offer S3 storage solution I have virtual machines on zvol to backup (not just files) ZFS send/receive is very convenient<a class="moretag" href="/en/2020/04/11/how-to-backup-freenas-zvol-to-s3-storage/"> Read more…</a></p>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="footer-wrapper">
|
|||
|
<footer class="footer footer-black footer-big">
|
|||
|
<div class="container">
|
|||
|
<div class="hestia-bottom-footer-content"><ul class="footer-menu pull-left"></ul>
|
|||
|
<div class="copyright pull-right">
|
|||
|
Hestia | Developed by <a href="https://themeisle.com" rel="nofollow">ThemeIsle</a> </div>
|
|||
|
</div> </div>
|
|||
|
</footer>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
|
|||
|
<button class="hestia-scroll-to-top">
|
|||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512" width="12.5px" height="20px"><path d="M177 255.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 351.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 425.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1zm-34-192L7 199.7c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l96.4-96.4 96.4 96.4c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9l-136-136c-9.2-9.4-24.4-9.4-33.8 0z"></path></svg>
|
|||
|
</button>
|
|||
|
<!-- Matomo -->
|
|||
|
<script type="text/javascript">
|
|||
|
var _paq = window._paq || [];
|
|||
|
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
|
|||
|
_paq.push(['trackPageView']);
|
|||
|
_paq.push(['enableLinkTracking']);
|
|||
|
(function() {
|
|||
|
var u="//blog.hugopoi.net/wp-content/plugins/wp-piwik/proxy/"
|
|||
|
_paq.push(['setTrackerUrl', u+'matomo.php']);
|
|||
|
_paq.push(['setSiteId', '1']);
|
|||
|
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
|
|||
|
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'matomo.php'; s.parentNode.insertBefore(g,s);
|
|||
|
})();
|
|||
|
</script>
|
|||
|
<!-- End Matomo Code -->
|
|||
|
<script type='text/javascript' src='/wp-content/plugins/wp-syntax/js/wp-syntax.js?ver=1.1' id='wp-syntax-js-js'></script>
|
|||
|
<script type='text/javascript' src='/wp-includes/js/comment-reply.min.js?ver=5.8.2' id='comment-reply-js'></script>
|
|||
|
<script type='text/javascript' src='/wp-content/themes/hestia/assets/bootstrap/js/bootstrap.min.js?ver=1.0.2' id='jquery-bootstrap-js'></script>
|
|||
|
<script type='text/javascript' src='/wp-includes/js/jquery/ui/core.min.js?ver=1.12.1' id='jquery-ui-core-js'></script>
|
|||
|
<script type='text/javascript' id='hestia_scripts-js-extra'>
|
|||
|
/* <![CDATA[ */
|
|||
|
var requestpost = {"ajaxurl":"https:\/\/blog.hugopoi.net\/wp-admin\/admin-ajax.php","disable_autoslide":"","masonry":""};
|
|||
|
/* ]]> */
|
|||
|
</script>
|
|||
|
<script type='text/javascript' src='/wp-content/themes/hestia/assets/js/script.min.js?ver=3.0.20' id='hestia_scripts-js'></script>
|
|||
|
<script type='text/javascript' src='/wp-includes/js/wp-embed.min.js?ver=5.8.2' id='wp-embed-js'></script>
|
|||
|
<script type='text/javascript' src='https://platform.twitter.com/widgets.js?ver=1.0.0' id='twitter-widgets-js'></script>
|
|||
|
</body>
|
|||
|
</html>
|