<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>nerd | Memini.it</title>
	<atom:link href="https://www.memini.it/category/nerd/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.memini.it</link>
	<description>Mondo sensibile imperfetto, spazio ideale metafisico</description>
	<lastBuildDate>Tue, 06 Sep 2022 16:35:01 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Johnny Mnemonic</title>
		<link>https://www.memini.it/johnny-mnemonic/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=johnny-mnemonic</link>
					<comments>https://www.memini.it/johnny-mnemonic/#respond</comments>
		
		<dc:creator><![CDATA[luca]]></dc:creator>
		<pubDate>Tue, 14 Sep 2021 07:25:04 +0000</pubDate>
				<category><![CDATA[me?!]]></category>
		<category><![CDATA[nerd]]></category>
		<guid isPermaLink="false">http://www.memini.it/?p=3790</guid>

					<description><![CDATA[<p>Johnny Mnemonic (William Gibson 1981)</p>
<p>The post <a href="https://www.memini.it/johnny-mnemonic/">Johnny Mnemonic</a> first appeared on <a href="https://www.memini.it">Memini.it</a>.</p>]]></description>
										<content:encoded><![CDATA[<figure class="wp-block-image"><img fetchpriority="high" decoding="async" width="1080" height="707" src="https://www.memini.it/wp-content/uploads/2021/09/facebook_1631604291498_6843444406250525855.jpg" alt="Siamo un'economia fondata sull'informazione. Lo insegnano anche a scuola. Quello che non dicono Ã¨ che Ã¨ impossibile muoversi, vivere, operare a qualunque livello senza lasciare tracce, segni, frammenti di informazione apparentemente privi di significato. Frammenti che possono essere recuperati e amplificati" class="wp-image-3789" srcset="https://www.memini.it/wp-content/uploads/2021/09/facebook_1631604291498_6843444406250525855.jpg 1080w, https://www.memini.it/wp-content/uploads/2021/09/facebook_1631604291498_6843444406250525855-600x393.jpg 600w, https://www.memini.it/wp-content/uploads/2021/09/facebook_1631604291498_6843444406250525855-1024x670.jpg 1024w, https://www.memini.it/wp-content/uploads/2021/09/facebook_1631604291498_6843444406250525855-768x503.jpg 768w" sizes="(max-width: 1080px) 100vw, 1080px" /></figure>



<p>Johnny Mnemonic (William Gibson 1981)</p><p>The post <a href="https://www.memini.it/johnny-mnemonic/">Johnny Mnemonic</a> first appeared on <a href="https://www.memini.it">Memini.it</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.memini.it/johnny-mnemonic/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>DNSTap?</title>
		<link>https://www.memini.it/dnstap/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dnstap</link>
					<comments>https://www.memini.it/dnstap/#respond</comments>
		
		<dc:creator><![CDATA[luca]]></dc:creator>
		<pubDate>Thu, 21 Jan 2021 09:11:20 +0000</pubDate>
				<category><![CDATA[Lavoratore]]></category>
		<category><![CDATA[nerd]]></category>
		<guid isPermaLink="false">http://www.memini.it/?p=3695</guid>

					<description><![CDATA[<p>In questi giorni mi sto divertendo con DNStap (su bind 9.11) ! https://github.com/LDO-CERT/dnstap_reader</p>
<p>The post <a href="https://www.memini.it/dnstap/">DNSTap?</a> first appeared on <a href="https://www.memini.it">Memini.it</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>In questi giorni mi sto divertendo con DNStap (su bind 9.11) !</p>



<p><a href="https://github.com/LDO-CERT/dnstap_reader">https://github.com/LDO-CERT/dnstap_reader</a></p><p>The post <a href="https://www.memini.it/dnstap/">DNSTap?</a> first appeared on <a href="https://www.memini.it">Memini.it</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.memini.it/dnstap/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Steve Jobs</title>
		<link>https://www.memini.it/steve-jobs/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=steve-jobs</link>
					<comments>https://www.memini.it/steve-jobs/#respond</comments>
		
		<dc:creator><![CDATA[luca]]></dc:creator>
		<pubDate>Sat, 09 Jan 2021 22:32:08 +0000</pubDate>
				<category><![CDATA[Artisti]]></category>
		<category><![CDATA[me?!]]></category>
		<category><![CDATA[nerd]]></category>
		<guid isPermaLink="false">http://www.memini.it/?p=3682</guid>

					<description><![CDATA[<p>Il vostro tempo Ã¨ limitato, quindi non sprecatelo vivendo la vita di qualcun altro. Non lasciatevi intrappolare dai dogmi che</p>
<p>The post <a href="https://www.memini.it/steve-jobs/">Steve Jobs</a> first appeared on <a href="https://www.memini.it">Memini.it</a>.</p>]]></description>
										<content:encoded><![CDATA[<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Il vostro tempo Ã¨ limitato, quindi non sprecatelo vivendo la vita di qualcun altro. Non lasciatevi intrappolare dai dogmi che vuol dire vivere seguendo i risultati del pensiero di altri.&nbsp;Non lasciate che il rumore delle opinioni altrui lasci affogare la vostra voce interiore.<br />E, cosa piÃ¹ importante,&nbsp;abbiate il coraggio di seguire il vostro cuore ed il vostro intuito. Loro sanno giÃ  quello che voi volete veramente diventare.<br />Tutto il resto Ã¨ secondario.</p><cite>Steve Jobs<br /></cite></blockquote><p>The post <a href="https://www.memini.it/steve-jobs/">Steve Jobs</a> first appeared on <a href="https://www.memini.it">Memini.it</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.memini.it/steve-jobs/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Apache mod auth form with OTP support as separated field</title>
		<link>https://www.memini.it/apache-mod-auth-form-with-otp-support-as-separated-field/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=apache-mod-auth-form-with-otp-support-as-separated-field</link>
					<comments>https://www.memini.it/apache-mod-auth-form-with-otp-support-as-separated-field/#respond</comments>
		
		<dc:creator><![CDATA[luca]]></dc:creator>
		<pubDate>Fri, 09 Feb 2018 14:13:54 +0000</pubDate>
				<category><![CDATA[nerd]]></category>
		<guid isPermaLink="false">http://www.memini.it/?p=3177</guid>

					<description><![CDATA[<p>In questi giorni ho avuto la necessitÃ  di modificare il modulo di autenticazione mod_auth_form di apache per aggiungere il supporto</p>
<p>The post <a href="https://www.memini.it/apache-mod-auth-form-with-otp-support-as-separated-field/">Apache mod auth form with OTP support as separated field</a> first appeared on <a href="https://www.memini.it">Memini.it</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><a href="https://www.memini.it/wp-content/uploads/2018/02/one-time-password-page_tcm42-55031.png"><img decoding="async" class="aligncenter size-medium wp-image-3180" src="https://www.memini.it/wp-content/uploads/2018/02/one-time-password-page_tcm42-55031-600x259.png" alt="" width="600" height="259" srcset="https://www.memini.it/wp-content/uploads/2018/02/one-time-password-page_tcm42-55031-600x259.png 600w, https://www.memini.it/wp-content/uploads/2018/02/one-time-password-page_tcm42-55031-768x331.png 768w, https://www.memini.it/wp-content/uploads/2018/02/one-time-password-page_tcm42-55031.png 800w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>
<p>In questi giorni ho avuto la necessitÃ  di modificare il modulo di autenticazione mod_auth_form di apache per aggiungere il supporto dell&#8217;OTP come campo separato e non per forza accodato alla password (questo perchÃ¨ ho la necessitÃ  di salvare separatamente i due campi per successivi utilizzi in backend).</p>
<p>Con questa piccola patch si ottengono due nuovi parametri di configurazione inerenti a mod_auth_form, ovvero:</p>
<p>AuthFormOtp = Permette di impostare il nome del campo form che cotiene il campo OTP (come per AuthFormPassword) [default httpd_otp]<br />
AuthFormOtpReuse = se impostato ad On rimanda il token otp accodato alla password al provider di autenticazione scelto anche quando tutte le credenziali arrivano dalla sessione (cookie nel nostro caso) [default off]</p>
<p>La logica di funzionamento Ã¨ molto semplice; se nella POST il campo httpd_otp NON esiste il modulo funziona in maniera tradizionale, invece se questo campo Ã¨ presente allora la password e l&#8217;otp vengono uniti in una unica stringa ed inviati al sottostante provider autenticazione scelto.<br />
Il salvataggio dei dati nella sessione avviene mantendendo separati user password e otp.</p>
<p>Attenzione, l&#8217;otp e la password vengono uniti SOLO nel caso di una autenticazione proveniente da form (quindi una post http), se la ri-autenticazione sta avvenendo mediante la sessione (es: cookie) l&#8217;otp viene ignorato perchÃ¨, verosimilmente, sarÃ  scaduto&#8230; questo comportamento perÃ² modificabile tramite l&#8217;apposita riga di configurazione AuthFormOtpReuse.</p>
<p>Ecco la patch:</p>
<pre>--- mod_auth_form.c.orig	2014-06-03 14:14:22.000000000 +0200
+++ mod_auth_form.c	2018-02-09 10:11:56.274877918 +0100
@@ -40,6 +40,8 @@
 #define FORM_REDIRECT_HANDLER "form-redirect-handler"
 #define MOD_AUTH_FORM_HASH "site"
 
+#define MOD_SESSION_OTP "otp"
+
 static int (*ap_session_load_fn) (request_rec * r, session_rec ** z) = NULL;
 static apr_status_t (*ap_session_get_fn)(request_rec * r, session_rec * z,
         const char *key, const char **value) = NULL;
@@ -59,10 +61,14 @@
     int username_set;
     const char *password;
     int password_set;
+    const char *otp;
+    int otp_set;
     apr_size_t form_size;
     int form_size_set;
     int fakebasicauth;
     int fakebasicauth_set;
+    int otpreuse;
+    int otpreuse_set;
     const char *location;
     int location_set;
     const char *method;
@@ -95,6 +101,7 @@
     /* default form field names */
     conf-&gt;username = "httpd_username";
     conf-&gt;password = "httpd_password";
+    conf-&gt;otp = "httpd_otp";
     conf-&gt;location = "httpd_location";
     conf-&gt;method = "httpd_method";
     conf-&gt;mimetype = "httpd_mimetype";
@@ -118,12 +125,16 @@
     new-&gt;username_set = add-&gt;username_set || base-&gt;username_set;
     new-&gt;password = (add-&gt;password_set == 0) ? base-&gt;password : add-&gt;password;
     new-&gt;password_set = add-&gt;password_set || base-&gt;password_set;
+    new-&gt;otp = (add-&gt;otp_set == 0) ? base-&gt;otp : add-&gt;otp;
+    new-&gt;otp_set = add-&gt;otp_set || base-&gt;otp_set;
     new-&gt;location = (add-&gt;location_set == 0) ? base-&gt;location : add-&gt;location;
     new-&gt;location_set = add-&gt;location_set || base-&gt;location_set;
     new-&gt;form_size = (add-&gt;form_size_set == 0) ? base-&gt;form_size : add-&gt;form_size;
     new-&gt;form_size_set = add-&gt;form_size_set || base-&gt;form_size_set;
     new-&gt;fakebasicauth = (add-&gt;fakebasicauth_set == 0) ? base-&gt;fakebasicauth : add-&gt;fakebasicauth;
     new-&gt;fakebasicauth_set = add-&gt;fakebasicauth_set || base-&gt;fakebasicauth_set;
+    new-&gt;otpreuse = (add-&gt;otpreuse_set == 0) ? base-&gt;otpreuse : add-&gt;otpreuse;
+    new-&gt;otpreuse_set = add-&gt;otpreuse_set || base-&gt;otpreuse_set;
     new-&gt;method = (add-&gt;method_set == 0) ? base-&gt;method : add-&gt;method;
     new-&gt;method_set = add-&gt;method_set || base-&gt;method_set;
     new-&gt;mimetype = (add-&gt;mimetype_set == 0) ? base-&gt;mimetype : add-&gt;mimetype;
@@ -227,6 +238,14 @@
     return check_string(cmd, password);
 }
 
+static const char *set_cookie_form_otp(cmd_parms * cmd, void *config, const char *otp)
+{
+    auth_form_config_rec *conf = (auth_form_config_rec *) config;
+    conf-&gt;otp = otp;
+    conf-&gt;otp_set = 1;
+    return check_string(cmd, otp);
+}
+
 static const char *set_cookie_form_method(cmd_parms * cmd, void *config, const char *method)
 {
     auth_form_config_rec *conf = (auth_form_config_rec *) config;
@@ -342,6 +361,14 @@
     return NULL;
 }
 
+static const char *set_disable_otp_reuse(cmd_parms * cmd, void *config, int flag)
+{
+    auth_form_config_rec *conf = (auth_form_config_rec *) config;
+    conf-&gt;otpreuse = flag;
+    conf-&gt;otpreuse_set = 1;
+    return NULL;
+}
+
 static const char *set_disable_no_store(cmd_parms * cmd, void *config, int flag)
 {
     auth_form_config_rec *conf = (auth_form_config_rec *) config;
@@ -358,6 +385,8 @@
                   "The field of the login form carrying the username"),
     AP_INIT_TAKE1("AuthFormPassword", set_cookie_form_password, NULL, OR_AUTHCFG,
                   "The field of the login form carrying the password"),
+    AP_INIT_TAKE1("AuthFormOtp", set_cookie_form_otp, NULL, OR_AUTHCFG,
+                  "The field of the login form carrying the OTP"),
     AP_INIT_TAKE1("AuthFormLocation", set_cookie_form_location, NULL, OR_AUTHCFG,
                   "The field of the login form carrying the URL to redirect on "
                   "successful login."),
@@ -396,6 +425,10 @@
                  NULL, OR_AUTHCFG,
                  "Set to 'On' to pass through authentication to the rest of the "
                  "server as a basic authentication header."),
+    AP_INIT_FLAG("AuthFormOtpReuse", set_disable_otp_reuse,
+                 NULL, OR_AUTHCFG,
+                 "Set to 'On' for reuse OTP number from cookie and send'it to "
+                 "to authentication provider."),
     AP_INIT_FLAG("AuthFormDisableNoStore", set_disable_no_store,
                  NULL, OR_AUTHCFG,
                  "Set to 'on' to stop the sending of a Cache-Control no-store header with "
@@ -432,7 +465,7 @@
  * notes table.
  */
 static void set_notes_auth(request_rec * r,
-                                const char *user, const char *pw,
+                                const char *user, const char *pw, const char *otp,
                                 const char *method, const char *mimetype)
 {
     apr_table_t *notes = NULL;
@@ -456,6 +489,9 @@
     if (pw) {
         apr_table_setn(notes, apr_pstrcat(r-&gt;pool, authname, "-pw", NULL), pw);
     }
+    if (otp) {
+        apr_table_setn(notes, apr_pstrcat(r-&gt;pool, authname, "-otp", NULL), otp);
+    }
     if (method) {
         apr_table_setn(notes, apr_pstrcat(r-&gt;pool, authname, "-method", NULL), method);
     }
@@ -471,7 +507,7 @@
  */
 static void get_notes_auth(request_rec *r,
                            const char **user, const char **pw,
-                           const char **method, const char **mimetype)
+                           const char **method, const char **mimetype, const char **otp)
 {
     const char *authname;
     request_rec *m = r;
@@ -493,6 +529,9 @@
     if (pw) {
         *pw = (char *) apr_table_get(m-&gt;notes, apr_pstrcat(m-&gt;pool, authname, "-pw", NULL));
     }
+    if (otp) {
+        *otp = (char *) apr_table_get(m-&gt;notes, apr_pstrcat(m-&gt;pool, authname, "-otp", NULL));
+    }
     if (method) {
         *method = (char *) apr_table_get(m-&gt;notes, apr_pstrcat(m-&gt;pool, authname, "-method", NULL));
     }
@@ -506,9 +545,9 @@
     }
 
     ap_log_rerror(APLOG_MARK, APLOG_TRACE1, 0, r,
-                  "from notes: user: %s, pw: %s, method: %s, mimetype: %s",
-                  user ? *user : "", pw ? *pw : "",
-                  method ? *method : "", mimetype ? *mimetype : "");
+                  "from notes: user: %s, pw: %s, method: %s, mimetype: %s, otp: %s",
+                  user ? *user : "", pw ? *pw : "", 
+                  method ? *method : "", mimetype ? *mimetype : "",otp ? *otp : "");
 
 }
 
@@ -519,7 +558,7 @@
  * and/or password will be removed from the session.
  */
 static apr_status_t set_session_auth(request_rec * r,
-                                     const char *user, const char *pw, const char *site)
+                                     const char *user, const char *pw, const char *site, const char *otp)
 {
     const char *hash = NULL;
     const char *authname = ap_auth_name(r);
@@ -533,6 +572,7 @@
     ap_session_load_fn(r, &amp;z);
     ap_session_set_fn(r, z, apr_pstrcat(r-&gt;pool, authname, "-" MOD_SESSION_USER, NULL), user);
     ap_session_set_fn(r, z, apr_pstrcat(r-&gt;pool, authname, "-" MOD_SESSION_PW, NULL), pw);
+    ap_session_set_fn(r, z, apr_pstrcat(r-&gt;pool, authname, "-" MOD_SESSION_OTP, NULL), otp);
     ap_session_set_fn(r, z, apr_pstrcat(r-&gt;pool, authname, "-" MOD_AUTH_FORM_HASH, NULL), hash);
 
     return APR_SUCCESS;
@@ -544,10 +584,12 @@
  * notes table, if present.
  */
 static apr_status_t get_session_auth(request_rec * r,
-                                     const char **user, const char **pw, const char **hash)
+                                     const char **user, const char **pw, const char **hash, const char **otp)
 {
     const char *authname = ap_auth_name(r);
     session_rec *z = NULL;
+    auth_form_config_rec *conf = ap_get_module_config(r-&gt;per_dir_config,
+                                                      &amp;auth_form_module);
 
     ap_session_load_fn(r, &amp;z);
 
@@ -557,6 +599,11 @@
     if (pw) {
         ap_session_get_fn(r, z, apr_pstrcat(r-&gt;pool, authname, "-" MOD_SESSION_PW, NULL), pw);
     }
+    if (conf-&gt;otpreuse) {
+	    if (otp) {
+	        ap_session_get_fn(r, z, apr_pstrcat(r-&gt;pool, authname, "-" MOD_SESSION_OTP, NULL), otp);
+	    }
+    }
     if (hash) {
         ap_session_get_fn(r, z, apr_pstrcat(r-&gt;pool, authname, "-" MOD_AUTH_FORM_HASH, NULL), hash);
     }
@@ -568,9 +615,10 @@
 
     ap_log_rerror(APLOG_MARK, APLOG_TRACE1, 0, r,
                   "from session: " MOD_SESSION_USER ": %s, " MOD_SESSION_PW
-                  ": %s, " MOD_AUTH_FORM_HASH ": %s",
+                  ": %s, " MOD_AUTH_FORM_HASH ": %s, " MOD_SESSION_OTP ": %s (reuse %s)" ,
                   user ? *user : "", pw ? *pw : "",
-                  hash ? *hash : "");
+                  hash ? *hash : "", otp ? *otp : "",
+                  conf-&gt;otpreuse ? "On" : "Off");
 
     return APR_SUCCESS;
 
@@ -590,12 +638,14 @@
 static int get_form_auth(request_rec * r,
                              const char *username,
                              const char *password,
+                             const char *otp,
                              const char *location,
                              const char *method,
                              const char *mimetype,
                              const char *body,
                              const char **sent_user,
                              const char **sent_pw,
+                             const char **sent_otp,
                              const char **sent_loc,
                              const char **sent_method,
                              const char **sent_mimetype,
@@ -612,7 +662,7 @@
     char *buffer;
 
     /* have we isolated the user and pw before? */
-    get_notes_auth(r, sent_user, sent_pw, sent_method, sent_mimetype);
+    get_notes_auth(r, sent_user, sent_pw, sent_method, sent_mimetype, sent_otp);
     if (*sent_user &amp;&amp; *sent_pw) {
         return OK;
     }
@@ -639,6 +689,14 @@
             buffer[len] = 0;
             *sent_pw = buffer;
         }
+        else if (otp &amp;&amp; !strcmp(pair-&gt;name, otp) &amp;&amp; sent_otp) {
+            apr_brigade_length(pair-&gt;value, 1, &amp;len);
+            size = (apr_size_t) len;
+            buffer = apr_palloc(r-&gt;pool, size + 1);
+            apr_brigade_flatten(pair-&gt;value, buffer, &amp;size);
+            buffer[len] = 0;
+            *sent_otp = buffer;
+        }
         else if (location &amp;&amp; !strcmp(pair-&gt;name, location) &amp;&amp; sent_loc) {
             apr_brigade_length(pair-&gt;value, 1, &amp;len);
             size = (apr_size_t) len;
@@ -669,11 +727,12 @@
     }
 
     ap_log_rerror(APLOG_MARK, APLOG_TRACE1, 0, r,
-                  "from form: user: %s, pw: %s, method: %s, mimetype: %s, location: %s",
+                  "from form: user: %s, pw: %s, method: %s, mimetype: %s, location: %s, otp: %s",
                   sent_user ? *sent_user : "", sent_pw ? *sent_pw : "",
                   sent_method ? *sent_method : "",
                   sent_mimetype ? *sent_mimetype : "",
-                  sent_loc ? *sent_loc : "");
+                  sent_loc ? *sent_loc : "",
+		  sent_otp ? *sent_otp : "");
 
     /* set the user, even though the user is unauthenticated at this point */
     if (sent_user &amp;&amp; *sent_user) {
@@ -702,7 +761,7 @@
      * save away the username, password, mimetype and method, so that they
      * are available should the auth need to be run again.
      */
-    set_notes_auth(r, *sent_user, *sent_pw, sent_method ? *sent_method : NULL,
+    set_notes_auth(r, *sent_user, *sent_pw, *sent_otp ? *sent_otp : NULL, sent_method ? *sent_method : NULL,
                    sent_mimetype ? *sent_mimetype : NULL);
 
     return OK;
@@ -756,12 +815,20 @@
  *
  * Return an HTTP code.
  */
-static int check_authn(request_rec * r, const char *sent_user, const char *sent_pw)
+static int check_authn(request_rec * r, const char *sent_user, const char *sent_pw, const char *sent_otp)
 {
     authn_status auth_result;
     authn_provider_list *current_provider;
     auth_form_config_rec *conf = ap_get_module_config(r-&gt;per_dir_config,
                                                       &amp;auth_form_module);
+    char *sent_secret = NULL;
+
+    // -lm
+    if (sent_otp) {
+	sent_secret = apr_pstrcat(r-&gt;pool, sent_pw, sent_otp, NULL);
+    } else {
+	sent_secret = apr_pstrcat(r-&gt;pool, sent_pw, NULL);
+    }
 
     current_provider = conf-&gt;providers;
     do {
@@ -794,7 +861,12 @@
             break;
         }
 
-        auth_result = provider-&gt;check_password(r, sent_user, sent_pw);
+	ap_log_rerror(APLOG_MARK, APLOG_TRACE1, 0, r,
+                  "provider-&gt;check_password - sent_user : %s, sent_secret: %s (pw: %s - otp: %s)", 
+		  sent_user, sent_secret, sent_pw, sent_otp);
+
+        auth_result = provider-&gt;check_password(r, sent_user, sent_secret);
+        //auth_result = provider-&gt;check_password(r, sent_user, sent_pw);
 
         apr_table_unset(r-&gt;notes, AUTHN_PROVIDER_NAME_NOTE);
 
@@ -883,7 +955,7 @@
 {
     auth_form_config_rec *conf = ap_get_module_config(r-&gt;per_dir_config,
                                                       &amp;auth_form_module);
-    const char *sent_user = NULL, *sent_pw = NULL, *sent_hash = NULL;
+    const char *sent_user = NULL, *sent_pw = NULL, *sent_hash = NULL, *sent_otp = NULL;
     const char *sent_loc = NULL, *sent_method = "GET", *sent_mimetype = NULL;
     const char *current_auth = NULL;
     const char *err;
@@ -919,11 +991,11 @@
     r-&gt;ap_auth_type = (char *) current_auth;
 
     /* try get the username and password from the notes, if present */
-    get_notes_auth(r, &amp;sent_user, &amp;sent_pw, &amp;sent_method, &amp;sent_mimetype);
+    get_notes_auth(r, &amp;sent_user, &amp;sent_pw, &amp;sent_method, &amp;sent_mimetype, &amp;sent_otp);
     if (!sent_user || !sent_pw || !*sent_user || !*sent_pw) {
 
         /* otherwise try get the username and password from a session, if present */
-        res = get_session_auth(r, &amp;sent_user, &amp;sent_pw, &amp;sent_hash);
+        res = get_session_auth(r, &amp;sent_user, &amp;sent_pw, &amp;sent_hash, &amp;sent_otp);
 
     }
     else {
@@ -941,7 +1013,7 @@
 
     /* otherwise test for a normal password match */
     if (APR_SUCCESS == res &amp;&amp; sent_user &amp;&amp; sent_pw) {
-        rv = check_authn(r, sent_user, sent_pw);
+        rv = check_authn(r, sent_user, sent_pw, sent_otp);
         if (OK == rv) {
             fake_basic_authentication(r, conf, sent_user, sent_pw);
             return OK;
@@ -990,9 +1062,9 @@
         ap_run_insert_filter(rr);
 
         /* parse the form by reading the subrequest */
-        rv = get_form_auth(rr, conf-&gt;username, conf-&gt;password, conf-&gt;location,
+        rv = get_form_auth(rr, conf-&gt;username, conf-&gt;password, conf-&gt;otp, conf-&gt;location,
                            conf-&gt;method, conf-&gt;mimetype, conf-&gt;body,
-                           &amp;sent_user, &amp;sent_pw, &amp;sent_loc, &amp;sent_method,
+                           &amp;sent_user, &amp;sent_pw, &amp;sent_otp, &amp;sent_loc, &amp;sent_method,
                            &amp;sent_mimetype, &amp;sent_body, conf);
 
         /* make sure any user detected within the subrequest is saved back to
@@ -1028,10 +1100,10 @@
 
         /* check the authn in the main request, based on the username found */
         if (OK == rv) {
-            rv = check_authn(r, sent_user, sent_pw);
+            rv = check_authn(r, sent_user, sent_pw, sent_otp);
             if (OK == rv) {
                 fake_basic_authentication(r, conf, sent_user, sent_pw);
-                set_session_auth(r, sent_user, sent_pw, conf-&gt;site);
+                set_session_auth(r, sent_user, sent_pw, conf-&gt;site, sent_otp);
                 if (sent_loc) {
                     apr_table_set(r-&gt;headers_out, "Location", sent_loc);
                     return HTTP_MOVED_TEMPORARILY;
@@ -1115,7 +1187,7 @@
     auth_form_config_rec *conf;
     const char *err;
 
-    const char *sent_user = NULL, *sent_pw = NULL, *sent_loc = NULL;
+    const char *sent_user = NULL, *sent_pw = NULL, *sent_otp = NULL, *sent_loc = NULL;
     int rv;
 
     if (strcmp(r-&gt;handler, FORM_LOGIN_HANDLER)) {
@@ -1131,14 +1203,14 @@
 
     conf = ap_get_module_config(r-&gt;per_dir_config, &amp;auth_form_module);
 
-    rv = get_form_auth(r, conf-&gt;username, conf-&gt;password, conf-&gt;location,
+    rv = get_form_auth(r, conf-&gt;username, conf-&gt;password, conf-&gt;otp, conf-&gt;location,
                        NULL, NULL, NULL,
-                       &amp;sent_user, &amp;sent_pw, &amp;sent_loc,
+                       &amp;sent_user, &amp;sent_pw, &amp;sent_otp, &amp;sent_loc,
                        NULL, NULL, NULL, conf);
     if (OK == rv) {
-        rv = check_authn(r, sent_user, sent_pw);
+        rv = check_authn(r, sent_user, sent_pw, sent_otp);
         if (OK == rv) {
-            set_session_auth(r, sent_user, sent_pw, conf-&gt;site);
+            set_session_auth(r, sent_user, sent_pw, conf-&gt;site, sent_otp);
             if (sent_loc) {
                 apr_table_set(r-&gt;headers_out, "Location", sent_loc);
                 return HTTP_MOVED_TEMPORARILY;
@@ -1202,7 +1274,7 @@
     conf = ap_get_module_config(r-&gt;per_dir_config, &amp;auth_form_module);
 
     /* remove the username and password, effectively logging the user out */
-    set_session_auth(r, NULL, NULL, NULL);
+    set_session_auth(r, NULL, NULL, NULL, NULL);
 
     /*
      * make sure the logout page is never cached - otherwise the logout won't
@@ -1249,7 +1321,7 @@
     }
 
     /* get the method and mimetype from the notes */
-    get_notes_auth(r, NULL, NULL, &amp;sent_method, &amp;sent_mimetype);
+    get_notes_auth(r, NULL, NULL, &amp;sent_method, &amp;sent_mimetype, NULL);
 
     if (r-&gt;kept_body &amp;&amp; sent_method &amp;&amp; sent_mimetype) {</pre><p>The post <a href="https://www.memini.it/apache-mod-auth-form-with-otp-support-as-separated-field/">Apache mod auth form with OTP support as separated field</a> first appeared on <a href="https://www.memini.it">Memini.it</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.memini.it/apache-mod-auth-form-with-otp-support-as-separated-field/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Apache2 mod_session + mod_proxy e SessionHeader &#8211; Qualcosa non funziona?</title>
		<link>https://www.memini.it/apache2-mod_session-mod_proxy-e-sessionheader-qualcosa-non-funziona/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=apache2-mod_session-mod_proxy-e-sessionheader-qualcosa-non-funziona</link>
					<comments>https://www.memini.it/apache2-mod_session-mod_proxy-e-sessionheader-qualcosa-non-funziona/#respond</comments>
		
		<dc:creator><![CDATA[luca]]></dc:creator>
		<pubDate>Mon, 05 Feb 2018 14:43:47 +0000</pubDate>
				<category><![CDATA[nerd]]></category>
		<guid isPermaLink="false">http://www.memini.it/?p=3174</guid>

					<description><![CDATA[<p>Qualche giorno addietro mi si Ã¨ presentata la necessitÃ  di inviare, a valle di un reverse proxy, il contenuto di</p>
<p>The post <a href="https://www.memini.it/apache2-mod_session-mod_proxy-e-sessionheader-qualcosa-non-funziona/">Apache2 mod_session + mod_proxy e SessionHeader – Qualcosa non funziona?</a> first appeared on <a href="https://www.memini.it">Memini.it</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><a href="https://www.memini.it/wp-content/uploads/2018/02/0_0_480_1_70__News_bug_shutterstock_7001383.jpg"><img decoding="async" class="aligncenter size-full wp-image-3175" src="https://www.memini.it/wp-content/uploads/2018/02/0_0_480_1_70__News_bug_shutterstock_7001383.jpg" alt="" width="480" height="392"/></a></p>
<p>Qualche giorno addietro mi si Ã¨ presentata la necessitÃ  di inviare, a valle di un reverse proxy, il contenuto di un cookie cifrato.</p>
<p>Apache2 implementa (almeno in teoria) questa funzionalitÃ  e si chiama SessionHeader (potete vedere <a href="https://httpd.apache.org/docs/2.4/mod/mod_session.html" target="_blank" rel="noopener">qui</a> le specifiche in &#8220;Integrating Sessions with External Applications&#8221;).</p>
<p>Tutto molto figo pensavo&#8230; peccato non funziona nulla!</p>
<p>La cosa mi ha lasciato abbastanza perplesso e dopo una serie di ricerche ha trovato la segnalazione di un bug di un utente che, come me, si era scontrato con la medesima problematica&#8230; bug segnalato sul Bugzilla di apache (Bug n. <a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=56495" target="_blank" rel="noopener">56495</a>) in data 2014-05-06 19:19 UTC by&nbsp;<span class="vcard"><span class="fn">David Goldfarb.</span></span></p>
<p>Figo ho pensato&#8230; quelli di apache se ne sono largamente sbattuti della problematica!</p>
<p>Per fortuna l&#8217;utente proponeva una piccola patch a mod_session.c per risolvere la problematica (che Ã¨ palesemente una dimenticanza nel codice), la patch perÃ² risulta instabile per cui ho apportato qualche piccola modifica per evitare il segfault di apache, ecco il diff:</p>
<pre class="bz_comment_text">--- httpd-2.4.9.orig/modules/session/mod_session.c   2014-01-24 07:02:42.000000000 -0600
+++ httpd-2.4.9/modules/session/mod_session.c   2014-05-06 13:59:09.084183389 -0500
@@ -385,6 +385,13 @@

     /* decode what we have */
     encoded = apr_pstrdup(r-&gt;pool, z-&gt;encoded);
+
+    /* Add the Decoded session info into the Input Headers
+     *  for the application to find */
+    session_dir_conf *conf = ap_get_module_config(r-&gt;per_dir_config,
+                                                  &amp;session_module);
+    if (conf-&gt;header) {  
+         apr_table_set(r-&gt;headers_in, conf-&gt;header, encoded);
+    }  
+
     pair = apr_strtok(encoded, sep, &amp;last);
     while (pair &amp;&amp; pair[0]) {
         char *plast = NULL;</pre>
<p>&nbsp;</p><p>The post <a href="https://www.memini.it/apache2-mod_session-mod_proxy-e-sessionheader-qualcosa-non-funziona/">Apache2 mod_session + mod_proxy e SessionHeader – Qualcosa non funziona?</a> first appeared on <a href="https://www.memini.it">Memini.it</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.memini.it/apache2-mod_session-mod_proxy-e-sessionheader-qualcosa-non-funziona/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>La teoria della montagna di merda</title>
		<link>https://www.memini.it/la-teoria-della-montagna-di-merda/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=la-teoria-della-montagna-di-merda</link>
					<comments>https://www.memini.it/la-teoria-della-montagna-di-merda/#respond</comments>
		
		<dc:creator><![CDATA[luca]]></dc:creator>
		<pubDate>Tue, 04 Jul 2017 12:15:10 +0000</pubDate>
				<category><![CDATA[me?!]]></category>
		<category><![CDATA[nerd]]></category>
		<guid isPermaLink="false">http://www.memini.it/?p=3008</guid>

					<description><![CDATA[<p>Niente in questi giorni ho riletto questo articolo di samuele dal suo blog, sostanzialmente una rielaborazione del pensiero che deriva</p>
<p>The post <a href="https://www.memini.it/la-teoria-della-montagna-di-merda/">La teoria della montagna di merda</a> first appeared on <a href="https://www.memini.it">Memini.it</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><a href="https://www.memini.it/wp-content/uploads/2017/07/timc4.gif"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3009" src="https://www.memini.it/wp-content/uploads/2017/07/timc4.gif" alt="" width="300" height="240"/></a></p>
<p>Niente in questi giorni ho riletto questo <a href="http://www.blogzero.it/2014/11/10/la-teoria-della-montagna-di-merda/" target="_blank" rel="noopener">articolo</a> di samuele dal suo blog, sostanzialmente una rielaborazione del pensiero che deriva dalla teorema della scimmia instancabile (<a href="https://it.wikipedia.org/wiki/Teorema_della_scimmia_instancabile" target="_blank" rel="noopener">qui</a>).</p>
<p>Grazie per la riflessione, ora ho capito che &#8220;L&#8217;internet&#8221; non Ã¨ altro che il bar dello sport a livello globale, grazie umanitÃ .</p>
<p>&nbsp;</p><p>The post <a href="https://www.memini.it/la-teoria-della-montagna-di-merda/">La teoria della montagna di merda</a> first appeared on <a href="https://www.memini.it">Memini.it</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.memini.it/la-teoria-della-montagna-di-merda/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Malware: comunicazione verso un C&#038;C che non esiste ma che funziona!</title>
		<link>https://www.memini.it/malware-comunicazione-verso-un-cc-che-non-esiste-ma-che-funziona/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=malware-comunicazione-verso-un-cc-che-non-esiste-ma-che-funziona</link>
					<comments>https://www.memini.it/malware-comunicazione-verso-un-cc-che-non-esiste-ma-che-funziona/#respond</comments>
		
		<dc:creator><![CDATA[luca]]></dc:creator>
		<pubDate>Tue, 09 Feb 2016 13:57:07 +0000</pubDate>
				<category><![CDATA[nerd]]></category>
		<category><![CDATA[attack]]></category>
		<category><![CDATA[c&c]]></category>
		<category><![CDATA[cookie]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[malware]]></category>
		<category><![CDATA[spam]]></category>
		<guid isPermaLink="false">http://www.memini.it/?p=2851</guid>

					<description><![CDATA[<p>Ok, il titolo di questo post Ã¨ complicato ed Ã¨ per addetti ai lavori, ovviamente non scendo troppo in tecnicismi&#8230;</p>
<p>The post <a href="https://www.memini.it/malware-comunicazione-verso-un-cc-che-non-esiste-ma-che-funziona/">Malware: comunicazione verso un C&C che non esiste ma che funziona!</a> first appeared on <a href="https://www.memini.it">Memini.it</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Ok, il titolo di questo post Ã¨ complicato ed Ã¨ per addetti ai lavori, ovviamente non scendo troppo in tecnicismi&#8230; magari anche l&#8217;utente comune capisce che cosa sto raccontando.</p>
<p>Durante l&#8217;analisi di malware giunto alla mia casella e-mail personale ho scoperto una nuova tecnica di comunicazione di malware con il proprio centro di controllo, nonostante l&#8217;indirizzo HTTP di questo centro di controllo ritorni un <a href="https://en.wikipedia.org/wiki/List_of_HTTP_status_codes" target="_blank">HTTP Status</a> 404; vediamola nel dettaglio.</p>
<ul>
<li><strong>STAGE 1</strong></li>
</ul>
<p>Lo stage 1 si presenta come mail innoqua che mi spinge a cliccare sul finto file excel allegato, facendomi credere si tratti di una fattura a me intestata.<br />
Ovviamente non si tratta di un file excel ma di un file eseguibile:</p>
<blockquote><p><em>dreams@ai:~/Desktop/Malware/malware$ file Fat._febbraio_2016\ xls_.XLS.exe</em><br />
<em>Fat._febbraio_2016 xls_.XLS.exe: PE32 executable (GUI) Intel 80386, for MS Windows</em></p></blockquote>
<p>Per ora ignoriamo i dettagli di funzionamento di questo specifico malware sapendo che il suo obbiettivo Ã¨ solo quello di scaricare lo stage 2 una volta avviato, download che avviene dall&#8217;indirizzo hxxp[:]//www.tajjquartet.com/ff/serif/payload.exe.<br />
Difatto lo stage 1 si caratterizza per un attacco di phishing verso l&#8217;utente con l&#8217;incoulazione di un trojan-downloader.</p>
<ul>
<li><strong>STAGE 2</strong></li>
</ul>
<p>A questo punto inizia la vera e propria infezione della macchina, payload.exe oltre ad effettuare alcune verifiche tecniche (ad es: se sta girando su un ambiente virtuale, se si tratta di una sandbox etc etc) si preoccupa di disattivare il firewall di windows e altre feature di sicurezza e successivamente rilascia (drop) un ulteriore eseguibile contenuto al suo interno, lo avvia e gli garantisce la persistenza al riavvio (crea la chiave di registro per l&#8217;autostart), il file droppato si chiama winhelp.exe posizionato nella home directory dell&#8217;utente.<br />
Lo stage 2 si caratterizza per l&#8217;esecuzione di un trojan-dropper e la modifica della politica di sicurezza della macchina (all&#8217;insaputa dell&#8217;utente).</p>
<ul>
<li><strong>STAGE 3<br />
</strong></li>
</ul>
<p>A questo punto la macchina risulta compromessa, ad ogni avvio viene avviato winhelp.exe ipotizzo che il suo compitoa principale sia quello di mantenere attiva la comunicazione con il C&amp;C, ok in che modo??<br />
Dall&#8217;analisi delle stringhe in memoria non si trova nessun riferimento a URL in particolare, perÃ² mi ha colpito immediatamente la presenza di header HTTP e di un base64</p>
<blockquote><p>dreams@ai:~/Desktop/Malware/malware$ strings winhelp.exe.txt | grep &#8220;=&#8221;<br />
=uhj<br />
=hH8A<br />
hh=A<br />
exec=1&amp;task_id=%S<br />
cmd=1&amp;uid=%s&amp;os=%s&amp;av=%s&amp;version=%s&amp;quality=%i<br />
fail=1&amp;task_id=%S<br />
OPEN=%s<br />
action=Run<br />
<strong>aHR0cDovL2NvbnNpbGRlcnR1ZnVuLnh5ei9jc3MvYWpheC5waHA= </strong><span style="color: #ff0000;">&lt;<strong>&#8212;- BASE64</strong></span><br />
auth=1<br />
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 <span style="color: #ff0000;">&lt;<strong>&#8212;- header</strong></span><br />
Accept-Language: en-us,en;q=0.5<br />
[&#8230;]</p></blockquote>
<p>A questo punto passo la stringa base64 al motore di decodifica e vediamo che accade:</p>
<blockquote><p><em>dreams@ai:~/Desktop/Malware/malware$ decode aHR0cDovL2NvbnNpbGRlcnR1ZnVuLnh5ei9jc3MvYWpheC5waHA=</em><br />
<em>Decoding base64</em><br />
<em>hxxp[:]//consildertufun.xyz/css/ajax.php</em></p></blockquote>
<p>&#8220;bingo!&#8221; mi viene da affermare anche perchÃ¨ dal resto dell&#8217;analisi non emerge alcun altro URL ne, tanto meno, altri metodi di comunicazione verso l&#8217;esterno, quindi non puÃ² essere che questo il mio c&amp;c.<br />
Purtroppo qualcosa non torna, difatto facendo una prova per vedere se effettivamente il C&amp;C fosse ancora attivo ottengo come risultato un bel 404 file not found.</p>
<p>A questo punto un analista normalmente penserebbe che il C&amp;C non Ã¨ piÃ¹ attivo e quindi l&#8217;analisi finisce qui&#8230; eppure il giorno successivo accade un altro fatto, ricevo una nuova mail contenente un nuovo stage 1, nome diverso, mittente diverso allegato diverso ma l&#8217;analisi di questo emerge che punta al medesimo stage 2, ovvero payload.exe.</p>
<p>PerchÃ¨ continua la distrubuzione di un malware verso un C&amp;C che non funziona?<br />
Probabilmente sono stato troppo frettoloso nel classificare il centro di controllo come morto.. inizio a vagliare le possibilitÃ , magari il C&amp;C viene attivato solo in determinati orari o in determinati giorni&#8230; o forse&#8230; forse c&#8217;Ã¨ dell&#8217;altro..Â  cosÃ¬ ricontrollo meglio le stringhe di winhelp.exe e noto una caratterista che pensavo fosse semplicemente un camuffamento per far sembrare la sessione http in uscita piÃ¹ uamana.</p>
<blockquote><p>dreams@ai:~/Desktop/Malware/malware$ strings winhelp.exe.txt | grep cooki -i<br />
document.cookie=<br />
Cookie: %s<br />
Cookie: authkeys=21232f297a57a5a743894a0e4a801fc3<br />
Cookie: authkeys=21232f297a57a5a743894a0e4a801fc3<br />
Cookie: authkeys=21232f297a57a5a743894a0e4a801fc3<br />
Cookie: authkeys=21232f297a57a5a743894a0e4a801fc3</p></blockquote>
<p>PerchÃ¨ utilizzare veramente un cookie?<br />
Incuriosito da questo dettaglio passo a fare una analisi del malware in contesto reale, con una reale connessione ad internet. Dopo qualche tempo recupero il file pcap generato con tutte le connessioni di rete e noto che effettivamente i post avvengono verso il sito, ed il sito risponde 404, ma qualcosa cambiava:</p>
<blockquote><p>
<a href="https://www.memini.it/wp-content/uploads/2016/02/wireshark.jpg"><img loading="lazy" decoding="async" class="aligncenter wp-image-2853 size-medium" src="https://www.memini.it/wp-content/uploads/2016/02/wireshark-400x88.jpg" alt="wireshark" width="400" height="88" srcset="https://www.memini.it/wp-content/uploads/2016/02/wireshark-400x88.jpg 400w, https://www.memini.it/wp-content/uploads/2016/02/wireshark-768x169.jpg 768w, https://www.memini.it/wp-content/uploads/2016/02/wireshark-1024x225.jpg 1024w, https://www.memini.it/wp-content/uploads/2016/02/wireshark.jpg 1060w" sizes="auto, (max-width: 400px) 100vw, 400px" /></a></p></blockquote>
<p>La dimensione (Length) della sessione variava, e anche di tanto&#8230; come era possibile? cosa stava facendo realmente questo malware?<br />
Approfondisco l&#8217;analisi di una specifica sessione HTTP (la prima, tanto per iniziare), ed ecco l&#8217;estratto:</p>
<blockquote><p><a href="https://www.memini.it/wp-content/uploads/2016/02/POST.jpg"><img loading="lazy" decoding="async" class="aligncenter wp-image-2856 size-medium" src="https://www.memini.it/wp-content/uploads/2016/02/POST-400x312.jpg" alt="POST" width="400" height="312" srcset="https://www.memini.it/wp-content/uploads/2016/02/POST-400x312.jpg 400w, https://www.memini.it/wp-content/uploads/2016/02/POST.jpg 753w" sizes="auto, (max-width: 400px) 100vw, 400px" /></a></p></blockquote>
<p>Per chi Ã¨ abituato a vedere codice HTML noterÃ  subito il commento appeso a fine pagina tra le righe chiamate DEBUG, anche in questo caso abbiamo un bel base64 che passato subito al motore di decodifica ci mostra quanto segue:</p>
<blockquote><p><em>dreams@ai:~/Desktop/Malware/malware$ decode cG9uZw==</em><br />
<em>Decoding base64</em><br />
<em>pong</em></p></blockquote>
<p>PONG? ebbene si&#8230; il c&amp;c Ã¨ vivo e risponde correttamente&#8230;<br />
Ovviamente l&#8217;analisi poi Ã¨ continuata, il malware ha scaricato ulteriori stage per effettuare altre attivitÃ  che ora ometto.<br />
Nella mia piccola carriera di analisi malware e di attacchi informatici non ero mai capitato in una casisitica come questa.<br />
Mi ha colpito la semplice genialitÃ  dell&#8217;utilizzare una stato HTTP permesso e &#8220;valido&#8221; ma per abitudine considerato &#8220;non valido&#8221; per ingannare tutte le potenziali analisi.</p>
<p>Ne vedremo delle belle&#8230;</p><p>The post <a href="https://www.memini.it/malware-comunicazione-verso-un-cc-che-non-esiste-ma-che-funziona/">Malware: comunicazione verso un C&C che non esiste ma che funziona!</a> first appeared on <a href="https://www.memini.it">Memini.it</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.memini.it/malware-comunicazione-verso-un-cc-che-non-esiste-ma-che-funziona/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Il futuro della sicurezza informatica?</title>
		<link>https://www.memini.it/il-futuro-della-sicurezza-informatica/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=il-futuro-della-sicurezza-informatica</link>
					<comments>https://www.memini.it/il-futuro-della-sicurezza-informatica/#respond</comments>
		
		<dc:creator><![CDATA[luca]]></dc:creator>
		<pubDate>Tue, 11 Aug 2015 08:22:54 +0000</pubDate>
				<category><![CDATA[Lavoratore]]></category>
		<category><![CDATA[nerd]]></category>
		<category><![CDATA[cybersec]]></category>
		<category><![CDATA[informatica]]></category>
		<category><![CDATA[pensieri]]></category>
		<category><![CDATA[sicurezza]]></category>
		<guid isPermaLink="false">http://www.memini.it/?p=2830</guid>

					<description><![CDATA[<p>&#160; In questi giorni mi domando quale sarÃ  il futuro del campo in cui lavoro, ovvero la sicurezza informatica, fino</p>
<p>The post <a href="https://www.memini.it/il-futuro-della-sicurezza-informatica/">Il futuro della sicurezza informatica?</a> first appeared on <a href="https://www.memini.it">Memini.it</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-2831" src="https://www.memini.it/wp-content/uploads/2015/08/sicurezza_informatica__quale_futuro__6380-400x225.jpg" alt="sicurezza_informatica__quale_futuro__6380" width="400" height="225" srcset="https://www.memini.it/wp-content/uploads/2015/08/sicurezza_informatica__quale_futuro__6380-400x225.jpg 400w, https://www.memini.it/wp-content/uploads/2015/08/sicurezza_informatica__quale_futuro__6380.jpg 599w" sizes="auto, (max-width: 400px) 100vw, 400px" /></p>
<p>&nbsp;</p>
<p>In questi giorni mi domando quale sarÃ  il futuro del campo in cui lavoro, ovvero la sicurezza informatica, fino a non poco tempo fa si diceva che la cyberwar non esisteva o che l&#8217;<a href="https://en.wikipedia.org/wiki/Advanced_persistent_threat" target="_blank">APT</a> fosse inventato invece ora questa attivitÃ , reali, sembrano giÃ  vecchie.<br />
Personalmente credo che il mercato della sicurezza si dovrÃ  ampliare mostrusamente visto ormai come l&#8217;informatica venga applicata anche a realtÃ  che &#8220;informatiche&#8221; non erano; pensiamo allo scandalo della <a href="https://www.google.com/search?q=sicurezza+jeep+si+guida+da+remoto&amp;ie=utf-8&amp;oe=utf-8#safe=off&amp;q=sicurezza+informatica+jeep+cherokee+" target="_blank">jeep cherokee</a> uscito in questi giorni.<br />
In particolare quello che mi affascina di piÃ¹ sono tutte le future applicazioni nel campo della domatica; stiamo andando verso la casa iper-connessa ma con una livello di sicurezza non adeguato (almeno a mio parere) sopratutto visto quanto sarÃ  calata nella riservatezza o alla privacy tutta domestica.</p>
<p>Che sia ora di mandare il CV a BTicino? :-)</p><p>The post <a href="https://www.memini.it/il-futuro-della-sicurezza-informatica/">Il futuro della sicurezza informatica?</a> first appeared on <a href="https://www.memini.it">Memini.it</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.memini.it/il-futuro-della-sicurezza-informatica/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Generazione senza identitÃ ?</title>
		<link>https://www.memini.it/generazione-senza-identita/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=generazione-senza-identita</link>
					<comments>https://www.memini.it/generazione-senza-identita/#respond</comments>
		
		<dc:creator><![CDATA[luca]]></dc:creator>
		<pubDate>Sun, 14 Dec 2014 18:53:27 +0000</pubDate>
				<category><![CDATA[Lavoratore]]></category>
		<category><![CDATA[nerd]]></category>
		<guid isPermaLink="false">http://www.memini.it/?p=2695</guid>

					<description><![CDATA[<p>Siamo la generazione della guerra digitale.</p>
<p>The post <a href="https://www.memini.it/generazione-senza-identita/">Generazione senza identitÃ ?</a> first appeared on <a href="https://www.memini.it">Memini.it</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Siamo la generazione della guerra digitale.</p><p>The post <a href="https://www.memini.it/generazione-senza-identita/">Generazione senza identitÃ ?</a> first appeared on <a href="https://www.memini.it">Memini.it</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.memini.it/generazione-senza-identita/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Guerra senza limiti</title>
		<link>https://www.memini.it/guerra-senza-limiti/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=guerra-senza-limiti</link>
					<comments>https://www.memini.it/guerra-senza-limiti/#respond</comments>
		
		<dc:creator><![CDATA[luca]]></dc:creator>
		<pubDate>Sat, 01 Feb 2014 13:11:43 +0000</pubDate>
				<category><![CDATA[me?!]]></category>
		<category><![CDATA[nerd]]></category>
		<guid isPermaLink="false">http://www.memini.it/?p=2675</guid>

					<description><![CDATA[<p>[&#8230;] L&#8217;epoca dei &#8220;soldati forti e coraggiosi, eroici difensori della patria&#8221; Ã¨ tramontata. In un mondo in cui persino l&#8217;espressione</p>
<p>The post <a href="https://www.memini.it/guerra-senza-limiti/">Guerra senza limiti</a> first appeared on <a href="https://www.memini.it">Memini.it</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><figure id="attachment_2676" aria-describedby="caption-attachment-2676" style="width: 200px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="size-full wp-image-2676" title="Guerra senza limiti" alt="Guerra senza limiti" src="https://www.memini.it/wp-content/uploads/2014/02/apicella_051123.jpg" width="200" height="300" /><figcaption id="caption-attachment-2676" class="wp-caption-text">Guerra senza limiti. L&#8217;arte della guerra asimmetrica fra terrorismo e globalizzazione<br />Qiao Liang; Wang Xiangsui</figcaption></figure></p>
<blockquote><p>[&#8230;]<br />
L&#8217;epoca dei &#8220;soldati forti e coraggiosi, eroici difensori della patria&#8221; Ã¨ tramontata. In un mondo in cui persino l&#8217;espressione &#8220;guerra nucleare&#8221; diverrÃ  forse gergo militare obsoleto, Ã¨ probabile che un pallido, occhialuto studioso sia piÃ¹ adatto a diventare un soldato moderno rispetto ad un giovane muscoloso senza grosse pretese intelletuali. La miglior dimostrazione di questo Ã¨ forse una storia, che circola negli ambienti militari occidendali, di un tenente che ha utilizzato un modem per mettere in ginocchio una divisione navale.<br />
[&#8230;]<br />
Nel 1994 in tema di sicurezza vi sono state 230.000 intrusioni nelle reti della difesa americana. Quante di queste erano atti distruttivi organizzati da combattenti non professionisti?<br />
[&#8230;]<br />
Proprio come la tecnologia moderna sta modificando le armi e il campo di battaglia, nello stesso tempo sta offuscando il concetto di partecipanti alla guerra. D&#8217;ora in poi, i soldati non avranno piÃ¹ il monopolio della guerra.<br />
[&#8230;]<br />
(&#8220;<em>chi combatte</em>&#8221; &#8211; Guerra senza limiti)</p></blockquote><p>The post <a href="https://www.memini.it/guerra-senza-limiti/">Guerra senza limiti</a> first appeared on <a href="https://www.memini.it">Memini.it</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.memini.it/guerra-senza-limiti/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
