Estrarre dati da dischi NTFS danneggiati

Questo post è una traduzione del mio articolo Extracting data from damaged NTFS drives pubblicato originariamente il 9 marzo 2017 sul blog di eForensics Magazine. Il testo descrive in modo dettagliato il mio lavoro di tesi magistrale sulla ricostruzione forense di file system NTFS con metadati danneggiati e il funzionamento di RecuperaBit.

L’articolo è fruibile liberamente e il software è open source, nonché estendibile tramite plug-in (c’è un esempio nell’ultima parte del post). Se avete bisogno di consulenza sul recupero dati o l’analisi forense di file system potete contattarmi tramite il modulo di richiesta per i miei servizi professionali.


Introduzione

L’analisi dei file system è una parte molto importante dell’attività di digital forensics. Molte indagini riguardano dischi rigidi il cui contenuto deve essere analizzato. In alcuni casi, anche i file eliminati potrebbero dover essere recuperati. Ci sono diversi tipi di file system e NTFS è attualmente uno dei più popolari.

La corruzione del file system può verificarsi per diversi motivi e può compromettere la possibilità di aprire e recuperare i file. Perciò, gli i tool forensi devono comprendere la struttura di un file system e devono essere in grado di estrarre il maggior numero possibile di dati, anche in condizioni difficili. Il file carving è una tecnica popolare per estrarre i file dai media danneggiati, tuttavia i file estratti in questo modo generalmente perdono i metadati e la struttura delle directory della partizione non può essere recuperata. È necessario un approccio migliore perché i nomi, i percorsi e i timestamp dei file sono informazioni molto importanti.

In questo articolo imparerete come la struttura delle directory di un’unità NTFS può essere ricostruita anche se alcune porzioni dei metadati sono parziali, corrotte o completamente assenti. Tutte le fasi del processo verranno spiegate. L’algoritmo presentato porta ad un’interpretazione del file system che consente il recupero di nomi, percorsi, timestamp e contenuto dei file (inclusi quelli frammentati). Infine, imparerete come utilizzare e personalizzare uno strumento open source che implementa queste tecniche.

Come funziona la ricostruzione di NTFS?

Prima di approfondire le tecniche che possono essere utilizzate per ricostruire una partizione NTFS, è necessario introdurre alcuni concetti. NTFS è un file system proprietario sviluppato da Microsoft e utilizzato per impostazione predefinita in Windows a partire da Windows 2000. È anche presente nei dischi rigidi esterni ad alta capacità, in quanto pure Linux e macOS lo supportano.

Funzionamento interno di NTFS

Il concetto principale di NTFS è che tutto è un file, vale a dire che anche i metadati necessari per funzionare sono memorizzati in diversi file. Il più importante è la MFT (Master File Table) che include almeno un file record (chiamato MFT entry) per ogni file o directory allocato/a. Ogni entry contiene diversi attributi. Per questo motivo, un file potrebbe avere più di una entry se i suoi attributi non possono essere inseriti tutti in una.

Questi sono gli attributi più importanti:

  • $STANDARD_INFORMATION (id 0x10 = 16) memorizza i MAC time (Modifica, Accesso e Creazione) nel formato più assurdo di sempre: il numero di cento nanosecondi dal 1° gennaio 1601 UTC
  • $ATTRIBUTE_LIST (id 0x20 = 32) include i riferimenti alle non-base MFT entry che contengono altri attributi dello stesso file (se presenti)
  • $FILE_NAME (id 0x30 = 48) memorizza più nomi di file: generalmente il nome del file DOS 8.3 e quello lungo utilizzato dalle versioni recenti di Windows, a meno che i due non siano uguali
  • $DATA (id 0x80 = 128) include l’intero file se è inferiore a circa 700 byte, altrimenti dobbiamo fare riferimento alla runlist (un elenco che indica la posizione e la dimensione di ciascun frammento sul disco)
  • $INDEX_ROOT (id 0x90 = 144, solo per le directory) contiene gli attributi $FILE_NAME di (alcuni) elementi figli
  • $INDEX_ALLOCATION (id 0xA0 = 160, solo per le directory) si riferisce agli index record esterni memorizzati sul disco che registrano i riferimenti ai restanti elementi figli

I file record sono di dimensioni pari a 1 KB e possono essere riconosciuti perché iniziano con la firma FILE, o BAAD se il record è contrassegnato come danneggiato dal sistema operativo. Gli index record sono di 4 KB e la loro firma è INDX.

Infine, i primi e gli ultimi settori di una partizione NTFS sono due copie del boot record, che contiene questi parametri importanti:

  • Settori per cluster (SPC), necessario perché gli indirizzi in NTFS sono espressi in cluster (gruppi di settori) e devono essere tradotti durante il ripristino di file o metadati
  • Indirizzo di partenza della MFT, relativo al primo settore della partizione (a cui ci riferiamo con la dicitura Cluster Base o CB)
  • Dimensione del file system, espressa in settori e cluster

Per una discussione dettagliata su come funziona NTFS, fate riferimento alla documentazione del progetto Linux-NTFS. Raccomando vivamente di leggere anche l’eccellente libro File System Forensic Analysis di Brian Carrier.

Fare il carving dei metadati

Normalmente, un sistema operativo inizia dal boot record, quindi salta alla MFT e inizia a leggere i file record e gli index record quando esplora l’intera struttura delle directory. Tuttavia, per eseguire una ricostruzione NTFS efficace, dobbiamo tenere presente che i metadati potrebbero essere parzialmente danneggiati:

  • La tabella delle partizioni potrebbe essere sbagliata
  • Potremmo non avere il boot record né il suo backup
  • Alcune MFT entry e/o index record potrebbero non essere leggibili
overwritten_entries.png
Alcune MFT entry potrebbero essere perse a causa di un nuovo file system che ne copre parzialmente uno cancellato

Per questi motivi, un approccio più sicuro a questo problema è supporre lo scenario peggiore. Invece di affidarsi alla tabella delle partizioni o al boot record di una partizione, il processo corretto è quello di scansionare l’intera unità cercando tracce dei boot record, dei file record e degli index record. Ciò consente di trovare anche le MFT entry di file cancellati recentemente.

Fondamentalmente, invece di fare carving dei file, lo effettuiamo sui metadati, raccogliendo i settori interessanti in tre liste.

Ciò fornisce un elenco di settori in cui i ci sono i potenziali file record, ma possono appartenere a partizioni diverse. Quindi, l’ultimo passo di questa fase è farne il clustering. Non possiamo contare sulla loro posizione perché la nostra ipotesi è che non sappiamo ancora dove si trovavano le partizioni (o le loro MFT), inoltre una partizione potrebbe essere stata parzialmente sovrascritta da un’altra.

Possiamo tuttavia sfruttare il fatto che ogni file record contiene il proprio identificatore e che la MFT è generalmente contigua. Attraverso una semplice formula lineare, possiamo calcolare la posizione del corrispondente file record #0 per ogni file record che stiamo considerando:

p = y – 2x

Dove y è la posizione del record sul disco (in settori) e x è il record number. Possiamo quindi dividere i file record in base al loro valore p.

clustering
Una rappresentazione visiva del processo di clustering dei file record

Ricostruzione bottom-up dell’albero

A questo punto abbiamo alcune “partizioni” che sono solo liste di file record. Non c’è ancora una struttura ad albero delle directory. Non possiamo leggere la struttura del file system dall’alto verso il basso, perché se mancasse un directory record, tutti i file sotto di esso sarebbero inaccessibili.

Al contrario, possiamo sfruttare il fatto che le MFT entry contengono anche l’identificatore della directory genitore. Inoltre, sappiamo che la directory principale in NTFS è sempre la #5. Possiamo procedere a ricostruire l’albero delle directory in modo bottom-up utilizzando un processo semplice.

Per ogni file:

  • Se abbiamo trovato il record del suo genitore, colleghiamo il file al genitore
  • Se conosciamo l’id del genitore ma non c’era un file record, creiamo un file record finto chiamato Dir_[number] e colleghiamo ad esso il file
  • Se non conosciamo il genitore, colleghiamo il file a una directory LostFiles
  • Se il file record è 5, consideriamo questa la radice del file system
bottom_up
Accesso al file system dall’alto verso il basso (a sinistra) rispetto alla ricostruzione dell’albero dal basso verso l’alto (a destra)

Come si può vedere, questo semplice processo non dipende dal tipo di file system e potrebbe essere applicato facilmente ad altri file system fintantoché i file record hanno un id e un puntatore al record genitore. Se manca il record di una directory, non è un grosso problema perché gliene creiamo uno che includa tutti i suoi figli. La directory mancante viene quindi inserita tra i file persi.

reconstruction_result
Esempio di ricostruzione bottom-up

Fino ad ora non abbiamo considerato alcun index record. Ciò significa che l’approccio funzionerebbe anche se tutti gli index record non fossero disponibili. Tuttavia, l’albero risultante può essere completato con ulteriori informazioni su quelli che possiamo chiamare “file fantasma”. Questi sono file i cui record non sono stati trovati, ma la loro esistenza potrebbe essere determinata indirettamente da entry trovate negli index record.

I file fantasma non possono essere recuperati, ma il fatto che esistessero in passato potrebbe essere rilevante in un’indagine.

Individuare la geometria delle partizioni

Abbiamo visto come l’albero delle directory (o parti di esso) può essere ricostruito utilizzando i file record e gli index record. Ciò fornisce una rappresentazione accurata del file system, inclusi i nomi dei file, i timestamp e altri metadati rilevanti.

Questo è un ottimo risultato, tuttavia manca ancora un minuscolo dettaglio: il contenuto dei file.

I metadati sono sicuramente importanti, ma altrettanto lo sono i dati. Tutti i puntatori ei riferimenti in NTFS sono espressi in cluster e si riferiscono all’inizio della partizione. Dobbiamo trovare questi due parametri se vogliamo accedere ai file:

  • Settori per cluster (SPC)
  • Cluster base (CB)

Se abbiamo trovato un boot record che può essere collegato alle MFT entry che abbiamo, allora fila tutto liscio. Il parametro SPC viene scritto nel boot sector e il valore CB si ricava dalla sua posizione, o quella meno la dimensione della partizione se stavamo leggendo il boot record di backup.

Purtroppo, non possiamo fare affidamento sulla presenza del boot sector quando si tratta di hard disk danneggiati. Abbiamo bisogno di un modo per recuperare entrambi i parametri anche quando abbiamo solo file record e index record.

Possiamo sfruttare le informazioni contenute all’interno dei index record. Come abbiamo visto prima, gli index record contengono un elenco di attributi $FILE_NAME. Tra gli altri dati, questi contengono anche un riferimento alla directory genitore. Pertanto, per ogni index record possiamo stimare la directory a appartiene solo guardando le sue entry.

Ripetendo questo processo per tutti i record, possiamo trasformare il disco rigido in un “testo” in cui ogni lettera corrisponde ad un settore. Ogni settore ha uno spazio vuoto, ad eccezione di quelli che contengono un index record. In tal caso, lo spazio è riempito con l’id del suo proprietario.

Successivamente, consideriamo tutte le MFT entry delle directory che hanno almeno un attributo $INDEX_ALLOCATION. Dagli attributi, possiamo vedere in quale posizione (in cluster) dovrebbe essere un corrispondente index record. Se lo facciamo per tutte le MFT entry, abbiamo una “parola” le cui lettere corrispondono a cluster e contengono uno spazio vuoto o l’identificatore di una directory.

Quello che ancora non sappiamo è quanti ci settori sono in un cluster (SPC), ma possiamo tentare di indovinarlo. I valori validi sono piccole potenze di due, come 1, 2, 4, 8, 16, 32, 64 e 128. I più comuni in realtà sono 1 e 8.

Il nostro obiettivo è trovare il valore corretto di SPC, enumerando CB. Per ogni possibile valore di CB il processo consiste in:

  • Convertire la “parola” da cluster a settori usando l’attuale valore di CB. Ad esempio, [_, 6, 9, _, 2, 11] con SPC = 2 diventa [_, _, 6, _, 9, _, _, _, 2, _, 11, _].
  • Fare matching della “parola” sul “testo” dato dagli index record trovati sul drive. Possiamo utilizzare una versione ottimizzata dell’algoritmo Baeza-Yates–Perleberg per lo string matching approssimato al fine di calcolare la posizione che fornisce la corrispondenza più accurata.

Questo fornisce un valore di CB per ogni possibile SPC. Il valore con la massima precisione calcolata durante il processo di matching vince. Se recuperiamo la geometria della partizione, possiamo estrarre tutti i file leggendo le loro MFT entry.

Inoltre, a questo punto possiamo verificare se alcune partizioni sono in realtà due parti della stessa partizione (che può succedere se la MFT è stata frammentata). In tal caso, le due parti possono essere fuse.

Gli algoritmi descritti qui sono discussi in dettaglio nel Capitolo 6 della mia tesi RecuperaBit: Forensic File System Reconstruction Given Partially Corrupted Metadata. Sono stati implementati con successo in uno strumento open source.

Ecco a voi RecuperaBit

RecuperaBit è un programma a riga di comando che ho sviluppato utilizzando tutte le tecniche descritte in precedenza. È un software libero e open source scritto in Python, pertanto è possibile studiarne il codice, estenderlo e personalizzarlo a seconda delle necessità.

Attualmente supporta solo NTFS, ma la sua architettura consente di aggiungere nuovi plug-in in futuro. Il programma tenta di ricostruire l’albero delle directory indipendentemente da:

  • tabella delle partizioni mancante
  • confini delle partizioni sconosciuti
  • metadati parzialmente sovrascritti
  • formattazione veloce

Installare il software

RecuperaBit può essere eseguito su Linux, Windows e macOS a condizione che Python 2.7 sia disponibile sul sistema. Durante l’ultimo hack camp ESC2016 a Venezia, è stato anche mostrato in esecuzione su un tablet Android rootato. L’installazione è molto semplice perché lo strumento è autonomo. Dovete solo scaricare l’archivio da GitHub e decomprimerlo, quindi invocare il file main.py.

Per ottenere la comodità di richiamare recuperabit dalla linea di comando è necessario un semplice collegamento simbolico. Su un sistema Linux, l’installazione può essere tanto facile quanto eseguire i seguenti comandi come root:

cd /opt
git clone https://github.com/Lazza/RecuperaBit.git
ln -s /opt/RecuperaBit/main.py /usr/local/bin/recuperabit

Ora è possibile visualizzare le istruzioni di utilizzo con:

recuperabit -h

Questo partirà con l’implementazione cPython predefinita. Per ottenere prestazioni più veloci, potete installare PyPy e modificare la shebang di main.py (che è la prima riga del file) in modo che faccia riferimento a /usr/bin/pypy.

recuperabit_CAINE
RecuperaBit nel menu applicazioni di CAINE 8

Se state utilizzando il fantastico sistema Linux per l’informatica forense CAINE 8, sappiate che RecuperaBit è già incluso tra gli strumenti forniti nell’installazione predefinita, tuttavia non è facilmente disponibile dalla riga di comando a causa di un piccolo bug. Anche se su CAINE non è necessario scaricare RecuperaBit, potreste volerne creare un collegamento simbolico con il seguente comando:

ln -s /usr/share/caine/pacchetti/RecuperaBit/main.py /usr/local/bin/recuperabit

Tuttavia, tenere presente che alcune correzioni di bug per RecuperaBit sono state rilasciate dopo l’uscita di CAINE 8. Per questo motivo, suggerisco di installare l’ultima versione come descritto in precedenza, per evitare crash su file system particolarmente danneggiati.

Un esempio concreto

È possibile testare lo strumento su qualsiasi immagine di un disco rigido che contenga una partizione NTFS o alcune tracce di essa. Potreste perfino eseguirlo sul dump di una singola MFT entry e avreste comunque alcune informazioni di base, come il nome del file o l’id del file record.

Per questo articolo, useremo un esempio appositamente predisposto che è possibile scaricare qui. L’archivio compresso contiene un’immagine disco da 1 GB con un file system NTFS da qualche parte nel mezzo, utilizzando un insolito valore SPC di 16. Nessuna tabella delle partizioni è disponibile e i boot sector sono stati cancellati. Inoltre, anche le prime quattro voci della MFT e il relativo backup (che costituiscono la cosiddetta “MFT mirror”) sono andati perduti.

La directory principale conteneva i seguenti elementi:

  • Una directory chiamata other con due sottodirectory: libraries e executables contenenti un gruppo di file estratti da un’installazione di Ubuntu
  • Una directory chiamata pictures, con inclusi dei file JPG e PNG
  • Una directory denominata texts con più file di testo

Complessivamente, c’erano circa 500 file.

Supponendo che stiate lavorando nella directory in cui è stato salvato il file di immagine, è possibile passare il nome del file a RecuperaBit come argomento. È inoltre necessario specificare una directory di output e un nome di file per memorizzare l’elenco dei settori interessanti:

recuperabit borderless_1GB_v6.img -o recovered -s borderless.save

Il programma stamperà un breve riepilogo di cosa andrà a fare e attenderà fino a quando non premerete Enter. Procederà quindi alla scansione dell’unità e stamperà un registro dettagliato delle operazioni in corso. Alla fine, otterrete una primitiva linea di comando che potete utilizzare per analizzare ed estrarre le partizioni che sono state trovate.

prompt_actions
RecuperaBit dopo la fase di elaborazione iniziale

Si può vedere che RecuperaBit ha cercato di determinare la geometria della partizione anche se i boot record non erano disponibili, trovando una corrispondenza:

INFO:root:Finding partition geometry
DEBUG:root:Found MATCH in positions set([768640]) with weight 16 (100.0%)

Se digitate recoverable al prompt, vedrete che sono state rilevate le informazioni di base sul file system danneggiato e che i file possono essere recuperati:

Partition #0 -> Partition (NTFS, ??? b, 517 files, Recoverable, Offset: 223232, Offset (b): 114294784, Sec/Clus: 16, MFT offset: 223264, MFT mirror offset: None)

A questo punto, potete estrarre ricorsivamente i file. La directory principale in NTFS ha l’identificatore 5 e la partizione che desiderate è la #0. Di conseguenza, potete eseguire:

restore 0 5

Questo comando estrarrà i file allocati e cancellati. Inoltre, creerà dei segnaposti vuoti per i file fantasma, se presenti. L’output sembra promettente:

INFO:root:Restoring #5 Root
INFO:root:Restoring #64 Root/other
INFO:root:Restoring #65 Root/other/executables
INFO:root:Restoring #166 Root/other/executables/ping6
INFO:root:Restoring #167 Root/other/executables/plymouth
INFO:root:Restoring #168 Root/other/executables/plymouth-upstart-bridge
INFO:root:Restoring #146 Root/other/executables/networkctl
INFO:root:Restoring #169 Root/other/executables/ps
INFO:root:Restoring #170 Root/other/executables/pwd
INFO:root:Restoring #171 Root/other/executables/rbash
INFO:root:Restoring #172 Root/other/executables/readlink
[... snip ...]

In alcuni casi, i file finiranno nella directory dei file persi, alla quale viene dato un id convenzionale pari a -1. In questo caso, potete eseguire anche restore 0 -1. Ora è il momento di guardare dentro la cartella recovered e verificare che cosa ha estratto RecuperaBit!

recovered_files
Alcuni dei file recuperati

Con RecuperaBit potete ottenere anche:

  • Una rappresentazione ad albero dei file (non fatelo su dischi grandi!), ad esempio: tree 0
  • Un elenco CSV dei file, ad esempio: csv 0 contents.csv
  • Un body file che elenca tutti i file, ad esempio: bodyfile 0 contents.body

Aggiungere un plug-in per un altro file system

Al momento, solo le partizioni NTFS possono essere scansionate utilizzando RecuperaBit. Tuttavia, è possibile scrivere nuovi plug-in per altri file system. Discutere il funzionamento interno di un file system come FAT o HFS+ sarebbe un compito molto difficile e non rientra nell’ambito di questo articolo. Tuttavia, descriverò brevemente ciò di cui avete bisogno per iniziare a scrivere un plug-in per RecuperaBit.

Il programma funziona dando in pasto ogni settore del disco a un insieme di scanner (ognuno dei quali è per un diverso tipo di file system). Uno scanner deve ereditare la classe DiskScanner e implementare due metodi: feed (che prende un settore e la sua posizione come input) e get_partitions (che fornisce un array associativo di partizioni rilevate).

RecuperaBit utilizza un semplice file system astratto con due classi: File e Partition. Possono essere utilizzati direttamente, ma nella maggior parte dei casi questo non è sufficiente. Dovrebbero essere estesi per aggiungere attributi specifici del file system. Dovreste prestare particolare attenzione al metodo get_content, che può restituire i byte grezzi oppure un iteratore. Se il file è grande, è raccomandato un iteratore.

Il seguente file è una bozza di implementazione completa di uno scanner che rileva i settori con la parola chiave Ubuntu, suddividendoli in due “partizioni” (pari e dispari):

"""Ubuntu plug-in.

Un plug-in piuttosto inutile che rileva i settori con la parola 'Ubuntu'."""

from core_types import File, Partition, DiskScanner
from ..utils import sectors

class UbuntuFile(File):
    """Ubuntu File."""

    def __init__(self, offset):
          name = "Sector " + str(offset)
          size = 0
          is_dir = False
          is_del = False
          is_ghost = False
          File.__init__(self, offset, name, size, is_dir, is_del, is_ghost)
          self.set_parent("fakeID")
          self.set_offset(offset)

    def get_content(self, partition):
        """Estrai solo il settore, a scopo dimostrativo."""
        image = DiskScanner.get_image(partition.scanner)
        dump = sectors(image, File.get_offset(self), 1)
        return str(dump)

class UbuntuPartition(Partition):
    """Partizione per tutti i fan di Ubuntu."""
    def __init__(self, scanner, position=None):
        Partition.__init__(self, 'Ubuntu', 10, scanner)
        self.set_recoverable(True)

    def additional_repr(self):
        """Restituisci valori addizionali da mostrare nella rappresentazione in stringa."""
        return [
            ('Ubuntu version', '16.04')
        ]

class UbuntuScanner(DiskScanner):
    """Ubuntu Scanner."""
    def __init__(self, pointer):
        DiskScanner.__init__(self, pointer)
        self.found_ubuntu = set()

    def feed(self, index, sector):
        """Leggi un nuovo settore."""
        # controlla il settore
        if 'Ubuntu' in sector:
            self.found_ubuntu.add(index)
            return 'Ubuntu sector'

    def get_partitions(self):
        """Ottieni una lista di partizioni trovate."""
        partitioned_files = {
               'pari': UbuntuPartition(self),
               'dispari': UbuntuPartition(self)
        }

        for offset in self.found_ubuntu:
               if offset % 2 == 0:
                    partitioned_files['pari'].add_file(UbuntuFile(offset))
               else:
                    partitioned_files['dispari'].add_file(UbuntuFile(offset))

        return partitioned_files

Salvate il file come ubuntu.py nella directory recuperabit/fs/. Aprite quindi il file main.py e aggiungete questa istruzione all’inizio:

from recuperabit.fs.ubuntu import UbuntuScanner

Infine, aggiornate l’elenco degli scanner:

plugins = (
    NTFSScanner,
    UbuntuScanner
)

Eseguite nuovamente il programma e questa volta dovreste vedere tre partizioni:

> recoverable
Partition #0 -> Partition (NTFS, ??? b, 517 files, Recoverable, Offset: 223232, Offset (b): 114294784, Sec/Clus: 16, MFT offset: 223264, MFT mirror offset: None)
Partition #1 -> Partition (Ubuntu, ??? b, 10 files, Recoverable, Offset: None, Offset (b): None, Ubuntu version: 16.04)
Partition #2 -> Partition (Ubuntu, ??? b, 14 files, Recoverable, Offset: None, Offset (b): None, Ubuntu version: 16.04)

Ora potete digitare tree 1 e controllare la struttura delle directory:

> tree 1
Rebuilding partition...
Done
----------
Root/ (Id: 10, Offset: None, Offset bytes: None)  [GHOST]
LostFiles/ (Id: -1, Offset: None, Offset bytes: None)  [GHOST]
  Dir_fakeID/ (Id: fakeID, Offset: None, Offset bytes: None)  [GHOST]
    Sector 1251888 (Id: 1251888, Offset: 1251888, Offset bytes: 640966656, Size: 0.00 B)
    Sector 834514 (Id: 834514, Offset: 834514, Offset bytes: 427271168, Size: 0.00 B)
    Sector 978102 (Id: 978102, Offset: 978102, Offset bytes: 500788224, Size: 0.00 B)
    Sector 224418 (Id: 224418, Offset: 224418, Offset bytes: 114902016, Size: 0.00 B)
    Sector 224420 (Id: 224420, Offset: 224420, Offset bytes: 114903040, Size: 0.00 B)
    Sector 1433746 (Id: 1433746, Offset: 1433746, Offset bytes: 734077952, Size: 0.00 B)
    Sector 1631030 (Id: 1631030, Offset: 1631030, Offset bytes: 835087360, Size: 0.00 B)
    Sector 1697158 (Id: 1697158, Offset: 1697158, Offset bytes: 868944896, Size: 0.00 B)
    Sector 510918 (Id: 510918, Offset: 510918, Offset bytes: 261590016, Size: 0.00 B)
    Sector 1492998 (Id: 1492998, Offset: 1492998, Offset bytes: 764414976, Size: 0.00 B)
----------

Notate come RecuperaBit ha ricostruito la struttura delle directory da solo, rilevando le tracce di una directory identificata da fakeID. I plug-in non hanno bisogno di implementare la ricostruzione dell’albero delle directory, in quanto è incorporata.

L’esempio fornito simula il contenuto dei file estraendo singoli settori, quindi potete testare anche il comando restore.

In futuro

L’analisi di NTFS è un’applicazione utile, tuttavia esistono anche altri tipi di file system molto comuni. Sarebbe interessante estendere il programma al fine di farlo funzionare anche per quelli.

Inoltre, la versione a riga di comando funziona bene per lo scripting e il testing, ma non tanto bene per opzioni avanzate (come scegliere quali file ripristinare). Ho in mente di lavorare a una GUI che renderà l’uso di RecuperaBit molto più facile. In futuro, potrebbe essere interessante considerare di pacchettizzare il programma per i sistemi operativi più comuni.

Fortunatamente, la natura open source di RecuperaBit consente a chiunque sia interessato di contribuire allo sviluppo o suggerire patch. Se state lavorando ad un’indagine e dovete cercare uno specifico tipo di dati, potete semplicemente modificare uno scanner o scriverne uno vostro!

Leggere giornali e riviste gratis legalmente

Con l’avvento del web e delle nuove tecnologie i quotidiani hanno avuto la necessità di adattare il proprio format, reinventarsi e competere con altre forme di comunicazione come i video e i post sui social network. Nonostante questo, la carta stampata (vera o digitale) è ancora un mezzo utile per rimanere aggiornati sugli ultimi avvenimenti.

Quando si trovano in giro articoli o guide che parlano di leggere giornali e riviste gratis, purtroppo si va a parare molto spesso su siti di dubbia origine, dove si trovano copie pirata in PDF (o addirittura scansioni) delle varie testate. Se vi aspettate un articolo simile, rimarrete delusi.

In questo post desidero parlarvi di un metodo assolutamente legale, senza scaricare “a sbafo”, per leggere quotidiani e settimanali in modo gratuito e lecito. La soluzione a questo desiderio si trova in una risorsa che praticamente tutti noi abbiamo a disposizione anche se a volte non ci pensiamo: la biblioteca cittadina.

Ottenere una o più tessere

La prima cosa da fare per leggere i giornali in modo gratuito è l’unico passaggio di questa guida che richiede di recarsi fisicamente da qualche parte (solo una volta). Se non possedete già la tessera della biblioteca a voi più vicina, andateci e richiedetela.

Non dimenticate anche di informarvi sull’eventuale rete di biblioteche di cui fa parte la vostra. Il trucco per massimizzare i giornali che si possono leggere gratis è quello di avere accesso a più reti diverse.

Domandate anche come avere accesso alla risorse digitali.

Facendo un esempio pratico, io abito al confine tra la provincia di Vicenza e quella di Treviso. Entrambi i territori usano una rete provinciale, questo significa che bastano le tessere di due comuni per accedere rispettivamente a:

Ho deciso di registrarmi in una biblioteca per ciascuna provincia, perché tutte e due forniscono l’accesso a giornali e riviste differenti. Inoltre consentono di prendere in prestito gli e-book (ma non parlerò di questo).

Voi potete registrarvi alla biblioteca del comune dove vivete o lavorate… e se studiate all’università in una grande città (magari in una provincia diversa) conviene avere una tessera anche lì.

Se ne avete la possibilità, vi consiglio calorosamente di tesserarvi presso una tra le biblioteche che aderiscono alla piattaforma MediaLibrary Online di cui parlerò anche di seguito.

Accedere a giornali e riviste

L’accesso alle risorse digitali può variare leggermente a seconda della biblioteca, ma generalmente si tratta solo di visitare il sito web e fare il login con i propri dati d’accesso. Quindi cercate la sezione chiamata “edicola” o quella con un nome simile. 🙂

Per esempio, su TVB – Biblioteche Trevigiane la voce che vi interessa è sulla barra laterale a sinistra:

treviso_biblio_01.png
Accesso all’edicola digitale sul portale TVB

Una volta all’interno, potete vedere che ci sono “solo” tre quotidiani gratis:

treviso_biblio_02.png
Titoli disponibili per la lettura

Non sono tanti, però si tratta pur sempre di un bel risparmio se considerate che un singolo quotidiano può costare facilmente anche 200€ all’anno.

Cliccando sopra a una testata si apre la visualizzazione completa delle pagine e poi è possibile passare anche al testo degli articoli mostrato come se fosse un blog. Nelle figure seguenti trovate un esempio di entrambe le viste.

Bene, già così potete leggere tre quotidiani in modo completamente gratuito. Tuttavia potrete veramente leggere a più non posso utilizzando il portale di un ente che ha una convenzione con MediaLibrary Online, come ad esempio Biblioinrete.

Per farvi un esempio, se utilizzate la convenzione tra le biblioteche vicentine e MediaLibrary Online vi basta effettuare l’accesso da questo portale dedicato. Una volta all’interno, filtrate le risorse per tipologia e vedrete un catalogo molto ricco:

mlol_biblio_001.jpg
Oltre 6600 risorse da tutto il mondo

Aprendo la scheda di un quotidiano potete notare che questa immensa disponibilità di titoli deriva dal fatto che MLOL è a sua volta arricchito da una partnership con PressReader, portale che fornisce giornali e riviste da moltissimi paesi:

mlol_biblio_002.png
Scheda di un quotidiano su MediaLibrary Online

Vi basta quindi premere il pulsante Sfoglia per accedere alla piattaforma di PressReader. È possibile creare un account ma non è obbligatorio, l’accesso viene già effettuato al vostro posto e potete navigare tranquillamente tra gli oltre 140 titoli (tra giornali e settimanali) del nostro paese. Se preferite potete visionare anche le testate estere. 😀

Potete visualizzare diverse schermate di MLOL nella gallery:

Conclusione

Le biblioteche italiane svolgono un ruolo straordinario nella diffusione e la preservazione della cultura. Con i tempi che corrono è finalmente possibile fruire di numerosissime risorse digitali in modo gratuito e legale.

Se desiderate leggere quotidiani e riviste risparmiando centinaia di euro all’anno sugli abbonamenti, non è assolutamente necessario (e non sarebbe giusto) affidarsi a siti pirata per poi magari trovarsi delle scansioni di scarsa qualità. Risulta molto più pratico fruire delle opportunità offerte dalle biblioteche, che sono lecite e ci consentono di sfruttare questo appropriato uso dei soldi pubblici.

Buona lettura! 🙂

Il mio talk a DUCC-IT — Vicenza, 7 maggio 2017

Tra circa due settimane ci sarà un’importante occasione per riunirsi con molte persone appassionate di Linux e software libero, ovvero la DUCC-IT:

La Debian/Ubuntu Community Conference Italia 2017 (in breve DUCC-IT 2017) è la quinta edizione dell’evento annuale che riunisce le comunità italiane di Debian e Ubuntu ma anche e soprattutto tutte le realtà italiane attive nel Software Libero, allo scopo di scambiare conoscenze, discutere della situazione attuale e conoscere altri sviluppatori e membri della comunità.

L’evento si svolgerà il 6 e 7 maggio a Vicenza, precisamente a Villa Lattes. Personalmente mi fa molto piacere che una due giorni così interessante sia dalle mie parti e il programma è davvero ghiotto!

Io terrò un talk che farà da fanalino di coda alla domenica 😛 e tratterà della comunità di Ask Ubuntu, ovvero uno dei migliori luoghi virtuali dove parlare di Ubuntu e aiutarsi tra utilizzatori di questo ottimo sistema operativo:

Aiutare anche senza saper programmare

Ask Ubuntu è un sito Q&A (domanda e risposta) che raccoglie gli utenti di questa popolare distribuzione. Tramite un sistema collaborativo ed autogestito, tutti i partecipanti donano il proprio contributo per aiutarsi a vicenda e risolvere problemi o dubbi relativi all’uso di Ubuntu, portando beneficio a tutta la comunità.

Vi ricordo che l’evento è ad accesso libero e gratuito. Di seguito trovate alcune indicazioni utili, tra cui la pagina per prenotare il posto al ristorante (per chi vuole) entro il 28 aprile:

Presentazione del ciclo «Dieci volti dell’Informatica» a Bassano del Grappa (VI)

L’informatica è una scienza che troppo spesso viene fraintesa o male interpretata. Ci sono persone che usano e abusano il termine “informatica” o “informatico” per descrivere attività e professioni che poco hanno a che fare con questa disciplina. Il fatto che le cronache si riempiano di personaggi vari, presunti “esperti” di materie che non padroneggiano in modo approfondito, contribuisce a perpetrare questa scarsa consapevolezza di cosa sia davvero l’informatica.

Il problema più grosso, però, è che pochi parlano di informatica (intendo la scienza, quella vera) in modo divulgativo e dedicato ad un pubblico non esperto. Ci sono meravigliose trasmissioni televisive che parlano di fisica, chimica, biologia, geologia… ma manca sempre l’informatica.

Questo è il motivo che mi ha portato a organizzare, con l’associazione GrappaLUG, un itinerario culturale di dieci serate divulgative sull’informatica. Il mio obiettivo è quello di portare degli spunti, far conoscere al pubblico che cos’è questa scienza e magari scatenare la curiosità di qualcuno che potrebbe trovarla interessante. 🙂

Il percorso si intitola:

Dieci volti dell’Informatica
Itinerario culturale di introduzione alla scienza dell’informazione

Questo giovedì (9 marzo) alle 21.15 ci sarà un incontro introduttivo in cui presenterò il programma dettagliato degli incontri. Cito dal sito dell’associazione:

In tale occasione si parlerà dello scopo per cui è stato ideato questo itinerario culturale, gli argomenti che verranno trattati, nonché date e orari delle dieci serate. La sera stessa apriranno le iscrizioni e i presenti potranno prenotare in anteprima il proprio posto.

Questa serie di incontri è dedicata ad un pubblico non esperto e non richiede specifiche conoscenze pregresse.

Se volete iscrivervi gratuitamente in anteprima non mancate, perché sul sito si potrà fare solo in seguito! 😀

Fonte: Presentazione del ciclo «Dieci volti dell’Informatica» – GrappaLUG

Nuove pagine “Servizi” e “Contatti”

Ho appena terminato il restyling della pagina Contatti del blog che ora è divisa in sezioni per renderla (spero) più chiara, esaustiva ed efficace. 🙂 La pagina ora è suddivisa in base alle richieste più frequenti che mi vengono poste:

Inoltre, ho aggiunto la pagina dei Servizi dove descrivo brevemente il lavoro che svolgo.

Perché questo cambiamento

In breve, ho fatto queste modifiche al sito perché alcuni mi scambiano per Google. 😛

Scherzi a parte, ci sono due ragioni fondamentali.

La frequenza dei contatti

Il primo motivo è che tenere un blog per una decina d’anni mi ha consentito di interagire con un sacco di persone che mi hanno scritto per scambiare idee, consigli, suggerimenti o semplici chiacchierate. Mi fa sempre piacere conversare con i miei lettori e vedere che ci sono persone che seguono assiduamente il blog e apprezzano quello che scrivo. 🙂

Negli ultimi mesi però ho notato che l’interazione con i lettori è rimasta più o meno costante, mentre sono aumentati i messaggi da persone che:

  • capitano sul blog per caso tramite un motore di ricerca
  • leggono un post o due
  • qualche volta evitano lo sforzo di capirlo o provare le indicazioni date
  • aprono la pagina Contatti e mi scrivono un’email

Insomma, sta diventando troppo rapido il passaggio Lettore occasionale → Domande tramite email, questo anche se il quesito è relativa ad un articolo e quindi ovviamente potremmo discuterne nei commenti così tutti i visitatori possono beneficiare.

Ogni tanto capitano anche persone che mi scrivono domandando di qualsiasi cosa possa vagamente riguardare un computer, dai messaggi di errore su Windows fino a tutorial scritti da altri blogger. 😀 Oppure mi chiedono di sviluppare script o software appositamente per loro, o di sistemare dei problemi col PC.

Qui veniamo al punto: sviluppare software è il mio lavoro. Fare consulenza anche.

I problemi nascono quando il numero di sconosciuti che mi scrive per domandarmi favori diventa piuttosto rilevante. Se qualcuno mi scrive per pormi dei problemi che necessitano di ricerche approfondite, questo richiede del tempo. Se una persona vuole farsi il sito in autonomia ma poi chiede a me ogni volta che ha un problema, in pratica mi sta chiedendo di insegnargli il mestiere.

Se vi sembra strano immaginare di telefonare a un falegname per chiedere istruzioni dettagliate quando tentate di costruire una casetta sull’albero, potete comprendere la mia necessità di differenziare le normali conversazioni via email dall’attività di consulenza o sviluppo software.

Certo che posso insegnarvi a realizzare un sito, darvi consigli e chiarimenti o realizzarvi un software su misura. È il mio lavoro. 😉

La visibilità per i potenziali clienti

La seconda ragione per cui ho risistemato le pagine è che prima le informazioni erano poche e frammentate. Pur avendo iniziato l’attività da circa un anno, ho già un buon numero di clienti e progetti in corso. Tuttavia, il sito non dava sostanzialmente nessuna idea sulla mia professione o sui servizi che posso fornire a privati e aziende.

Insomma, era poco evidente che chi lo desidera può contattarmi per lavori di sviluppo software o consulenza né quali sono i servizi in cui sono specializzato. Ora la situazione dovrebbe essere migliorata.

Se avete dei suggerimenti sulle nuove pagine o ritenete che manchi qualche informazione, lasciate pure un commento qui sotto. Per ogni richiesta di tipo professionale usate la nuova pagina Contatti.

Bloccare le pubblicità sui dispositivi Android

Aggiornamento del 14 aprile 2017: Alternate DNS, uno strumento precedentemente consigliato in questo articolo, è diventato a pagamento. Ho sostituito le indicazioni con l’uso di Adguard DNS che è analogo.

Il web è un calderone di informazioni sconfinato, ma è anche un grandissimo contenitore di pubblicità. A volte troppa pubblicità. Ci sono siti di notizie dove le “notizie correlate” sono un miscuglio di notizie vere e link sponsorizzati a prodotti che promettono di far perdere peso, blog in cui prima di leggere un articolo bisogna chiudere finestre modali gigantesche e lampeggianti, e così via.

Ma un altro aspetto negativo, forse il più importante, è la costante profilazione degli utenti da parte delle agenzie pubblicitarie. Siamo arrivati ad una situazione in cui ci addentriamo nell’era della no-privacy su Internet, per citare un articolo di Pagina99.

La pubblicità è fastidiosa e su cellulare lo è ancor di più.

Perché gli utenti bloccano la pubblicità

Tune, un’agenzia di marketing che lavora nel settore del publishing online, ha pubblicato uno studio dedicato proprio ad analizzare le ragioni per cui le persone bloccano la pubblicità sui dispositivi mobili e quanto il fenomeno incida sulla popolazione.

tune_blocking_2016
1 persona su 4 ha installato una app per bloccare le pubblicità

Dalle interviste è risultato che il 25% delle persone ha installato un’applicazione per bloccare gli annunci sul proprio dispositivo mobile. Probabilmente le ragioni non sono uguali per ogni persona, ma a mio avviso ce ne sono diverse e sono piuttosto importanti.

Le motivazioni principali per bloccare le pubblicità possono essere:

  • Risparmio di tempo — Le pubblicità pesano, e anche parecchio. Forse non è un gran problema con una ADSL o la fibra ottica, ma può esserlo con una connessione 3G. Nel 2015 il New York Times ha effettuato un test e ha rilevato come una pagina impiegasse 33 secondi a caricarsi, ma solo 7 secondi col blocco attivato.
  • Risparmio di denaro — Siamo ancora lontani dal momento in cui avremo i “giga” infiniti nei nostri piani tariffari. Per ora dobbiamo accontentarci di avere una soglia dati ben definita, ma una buona fetta di byte viene sprecata in pubblicità. Nel test del New York Times, la pagina con pubblicità pesava 16.3 MB mentre si scendeva a 3.5 MB per la stessa pagina senza annunci. In sostanza, la pubblicità consumava il 79% del traffico.
  • Privacy — Il tracking effettuato dai circuiti pubblicitari raggiunge livelli molto elevati, a volte decisamente inaccettabili. Il problema della privacy non si risolve con stupide normative sui cookie (con banner lapalissiani che avvisano del tracking, senza sortire alcun effetto) ma si risolve bloccando i tracker in partenza.
  • Fastidio costante — Molti siti che usano la pubblicità lo fanno in modo sbagliato. Invece di cercare di interessare l’utente, provano a infastidirlo piazzando i banner in mezzo al testo, o addirittura sopra di esso. Specialmente sui cellulari, lo spazio è una risorsa preziosa e non si può sprecare la maggior parte dello schermo per mostrare pubblicità.
  • Rischio di malware — La pubblicizzazione di applicazioni indesiderate o pericolose è piuttosto frequente quando si naviga col cellulare. Nel 2014 la BBC ha riportato uno studio che definisce le pubblicità “il più grande rischio di mobile malware”.

Credo sia pacifico che i siti web non hanno alcun diritto di consumare oltre il 50% del nostro traffico di rete, per di più tracciando tutti i nostri comportamenti. Senza contare il fatto che dovremmo proteggere le persone meno avvezze alla tecnologia dal rischio di installare malware sui propri dispositivi.

Fino a quando non si diffonderanno dei metodi pubblicitari sensati, sicuri e ragionevoli, la soluzione più efficace per arginare il problema è bloccare direttamente gli annunci. Viste le possibili motivazioni, rimane da vedere come funzionano effettivamente questi blocchi e come si possono installare su Android.

Qui potete vedere alcuni esempi di “prima/dopo” con il risultato che vogliamo ottenere:

Come funzionano i blocchi

Esistono diverse tecniche di blocco, specialmente quando si parla di ad blocker per il browser. Se prendiamo come esempi la famosissima estensione Adblock Plus, o la meno diffusa (ma più precisa e leggera) uBlock Origin, possiamo verificare che questi strumenti applicano varie tecniche:

  • Blocco di indirizzi web dedicati esclusivamente alla pubblicità
  • Blocco di specifici tipi di risorse (per esempio elementi Flash o immagini)
  • Filtraggio cosmetico (cioè le pubblicità difficili da bloccare vengono solo rese invisibili)

Quando si parla di blocco sui dispositivi mobili, ci sono alcuni browser specifici che combinano questi approcci. Il problema è che funzionano solo per navigare, ma non bloccano i banner all’interno delle app. Tuttavia, è possibile ottenere ottimi risultati sfruttando solo la prima strategia (il blocco degli indirizzi) perché molti siti web usano network pubblicitari esterni e quindi facili da bloccare.

Tanto per fare un esempio pratico, configurando il vostro dispositivo per bloccare (o comunque rendere irraggiungibile) il dominio googlesyndacation.com impedirete il caricamento di qualsiasi banner di Google AdSense su qualsiasi sito web. 😉

Per ottenere questo risultato, bisogna intervenire sulla risoluzione dei nomi di dominio, ovvero quel processo per cui un dispositivo trasforma un nome come google.com in un indirizzo IP come 216.58.214.110. Si può procedere in due modi:

  • Usare un server DNS filtrato — Il server DNS è il computer a cui si collegano i nostri dispositivi (o il nostro router) per effettuare la risoluzione di un dominio. Se il DNS filtra determinati indirizzi di server pubblicitari, i banner non riescono a caricarsi. Vi consiglio Adguard DNS che è gratuito e molto efficace.
  • Usare un file di host sul dispositivo — Prima di usare un server DNS, il computer (o il cellulare) verifica se ha già “la risposta pronta” controllando delle liste di traduzione da dominio a IP. Se il dispositivo è configurato con delle apposite liste che rendono irraggiungibili i server pubblicitari, il risultato è analogo (e anche lievemente più rapido).

In rete ci sono diversi articoli che spiegano come bloccare la pubblicità su Android, ma molti di essi si basano sul fatto che gli utenti abbiano effettuato il rooting al telefono, oppure funzionano solo con versioni di Android dalla 5.0 in poi. In realtà è possibile applicare queste tecniche con qualsiasi versione di Android a partire dalla 4.0, anche senza permessi di root.

Le sezioni seguenti spiegano come fare nei vari casi. Scegliete quella più adatta alle vostre esigenze!

Dispositivi con i permessi di root (Android 4.1 e seguenti)

I permessi di root ci consentono di effettuare modifiche al sistema operativo, compresa la possibilità di installare dei file di host personalizzati per bloccare i server pubblicitari. AdAway è un’ottima app che automatizza il tutto.

Non si può installare tramite Play Store (dove le app di questo tipo sono vietate) ma la potete ottenere tramite lo store F-Droid che tra l’altro contiene solo software libero e open source. Procedete quindi all’installazione di F-Droid:

  • Attivate l’installazione di app da origini sconosciute nelle preferenze di sicurezza del vostro dispositivo
  • Scaricate e installate l’APK di F-Droid dal sito
  • Aprite F-Droid e premete la voce Aggiorna i repository nel menu
  • Cercate AdAway e installatelo

Le figure mostrano il processo passo per passo:

A questo punto potete aprire AdAway:

  • Date i permessi di root all’applicazione quando viene richiesto
  • Cliccate sul bottone per scaricare i filtri
  • Confermate di voler riavviare il telefono quando vi viene proposto

Da questo momento il filtro sarà sempre attivo, potreste persino disinstallare l’app… anche se vi consiglio di tenerla e di aggiornare periodicamente i filtri con lo stesso pulsante. 🙂

Dispositivi senza permessi di root (Android 5.0 e seguenti)

Se il telefono non è rootato, l’unico modo per filtrare le richieste a un server DNS e/o le connessioni a determinati server è l’attivazione di una VPN da parte di una app. Ho già parlato in passato di cosa sono le VPN e di quanto sia fondamentale usarle per proteggersi, perciò dovreste avere una vaga idea di cosa sto parlando.

La cosa interessante però è che andremo ad usare una app che crea una finta VPN, cioè non instrada il nostro traffico su server sicuri ma si limita a bloccare gli indirizzi dei server che forniscono le pubblicità. Chi usa Android 5.0 o versioni successive può usare DNS66, che si può installare sempre tramite F-Droid (consultate la sezione dedicata ad AdAway per maggiori dettagli).

DNS66 contiene dei file di host già configurati, pertanto basta poco per attivare i filtri:

  • Aprite DNS66
  • Premete il pulsante con la freccia circolare per aggiornare i file di host
  • Tenete premuto a lungo il grosso bottone di accensione
  • Android vi mostrerà una richiesta per consentire l’uso della VPN
  • Verificate che ci sia il simbolo della chiave in alto sullo schermo e che DNS66 sia nello stato Running

I filtri si possono disattivare a piacere usando il bottone nell’app. Nelle versioni recenti di Android la VPN dovrebbe ripartire automaticamente anche se riavviate il telefono.

Dispositivi senza permessi di root (Android 4.0 e seguenti)

NoRoot Data Firewall è una app gratuita che permette di bloccare il collegamento ad Internet di alcune applicazioni. Lo fa usando lo stesso trucco della finta VPN usato da DNS66 e la cosa interessante è che dà la possibilità di usare un server DNS personalizzato. Possiamo pertanto sfruttare questa app anche senza utilizzarne le funzioni di firewall, ma limitandoci a impostare un server DNS che blocchi i server pubblicitari.

Procedete come segue:

  • Installate NoRoot Data Firewall da Google Play Store (ha uno scudo blu come logo)
  • Aprite la app e consentite l’avvio della VPN, dichiarandola sempre attendibile
  • Osservate che le app hanno due colonne di simboli gialli (sono relativi al filtraggio)
  • Cliccate sul simbolo dell’antenna in cima alla prima colonna e selezionate Permetti tutte le connessioni
  • Ripetete la stessa operazione con la seconda colonna (a questo punto dovreste aver consentito l’uso di Internet a tutte le app)
  • Spostatevi sulla sezione Config e sui Permessi di default mettete Permetti connessione in entrambi i casi
  • Scorrete in basso, attivate Set DNS server e come indirizzo impostate quello di Adguard DNS: 176.103.130.130 (la figura mostra un IP diverso)
  • Riavviate il dispositivo

Alcune versioni vecchie di Android potrebbero chiedervi una conferma di connessione alla VPN ogni volta che accendete il telefono.

Cambio del DNS per chi usa già una VPN

Come avrete notato, le due soluzioni per dispositivi senza permessi di root richiedono l’attivazione di una (finta) VPN. Però, come dicevo prima, è importante utilizzare un vero servizio VPN per navigare in modo sicuro.

Pertanto, chi ha a cuore la propria sicurezza anche nelle reti wireless dei locali pubblici fa già uso di una app VPN e non ne può attivare due contemporaneamente. Mi trovo anche io in questa situazione.

Fortunatamente, in questo caso si può utilizzare comunque un server DNS personalizzato. Quasi tutte le app Android dei vari provider VPN infatti sono basate su OpenVPN e i client OpenVPN consentono di configurare il server DNS. Il come però dipende un po’ da quale provider utilizzate e dalla app con cui vi collegate.

Io utilizzo VPNSecure e la loro app ufficiale, perciò userò questa come esempio. Per cambiare il DNS ho proceduto nel modo seguente:

  • Ho aperto la app e sono andato su Settings
  • Alla voce Advanced config ho scritto questa riga per impostare il server di Adguard DNS:
    dhcp-option DNS 176.103.130.130
  • Ho premuto Add to config
  • Ho scollegato e ricollegato la VPN

Altre app simili potrebbero avere i parametri in un altra sezione, però la riga di configurazione OpenVPN da aggiungere è sempre quella.

Conclusione

In questo post abbiamo visto che ci sono diversi modi per bloccare la pubblicità su Android e si può fare anche senza permessi di root. Il blocco si configura una volta e non ci si pensa più, o al limite si può ricontrollare ogni tanto per vedere se si devono aggiornare i file di host.

Così facendo si può godere di una navigazione più veloce, che consuma meno giga e meno esposta al rischio di malware o banner fastidiosi. Naturalmente il filtro “perfetto” non esiste e qualcosina potrebbe passare lo stesso, ma la differenza la noterete subito. 😀

Guardare e registrare tutte le stagioni di Braccialetti Rossi da Rai Play

Aggiornamento 15 dicembre 2016: La versione iniziale di questo articolo era limitata all’ultima stagione, ovvero Braccialetti Rossi 3. È stato successivamente integrato con i riferimenti alle stagioni precedenti.

Braccialetti Rossi è una delle fiction Rai attualmente più apprezzate in assoluto e da poco è terminata la terza stagione. Come accaduto in passato per le precedenti stagioni (e anche per altre decine di serie TV andate in onda sulle reti Rai) tutti gli episodi erano stati resi disponibili su Rai Play. Come di consueto quindi, molte persone hanno potuto riguardare gli episodi e anche salvarli sul PC utilizzando il mio script per scaricare i video da Rai Play.

Ne so qualcosa visto che l’ultima puntata è stata trasmessa eccezionalmente di giovedì invece che di domenica, me ne sono completamente dimenticato e l’ho poi salvata dal sito della Rai.

Recentemente, in modo del tutto improvviso e senza alcuna comunicazione, sembra che la Rai abbia del tutto rimosso la sezione Episodi dalla pagina del programma:

Le motivazioni non sono state esplicitate, anche se una mezza idea ce la si può fare guardando gli ultimi post della pagina Facebook ufficiale del programma, ad esempio questo:

Sembra quindi che gli episodi non siano più visibili su Rai Replay. Ma è davvero così?

In realtà no, infatti la Rai (detenendo tutti i diritti necessari alla messa in onda della fiction) ha caricato online i video della serie Braccialetti Rossi sui propri server e questi continuano ad essere disponibili anche dopo che la pagina è stata nascosta.

Di seguito trovate i link diretti ai vari episodi.

Stagione 1:

Stagione 2:

Stagione 3:

Sono link diretti ai video in formato MP4, caricati sui server ufficiali Rai, come potete verificare dai rispettivi URL. Perciò sulla maggior parte dei moderni browser il comportamento è esattamente quello che vi aspettereste: se cliccate col tasto sinistro del mouse potete vedere l’episodio, mentre se cliccate col tasto destro e scegliete la voce Salva con nome (o simile) potete procedere al download.

I video sono a una risoluzione di 1024×576 pixel per le prime due stagioni (tranne l’episodio S2E1) e 928×546 pixel per la terza. La qualità è simile a quella DVD che raggiunge al massimo 720×576 pixel. Vi consiglio di procedere alla registrazione per evitare sorprese.

Buona visione!

Come risparmiare sugli acquisti Amazon

Molte persone attendono con ansia il Black Friday per fare acquisti su Amazon, con la speranza di ottenere i prodotti desiderati ad un prezzo scontato. L’ultimo Black Friday è passato da poco e le reazioni sono state variegate, con alcuni utenti che si sono dichiarati “delusi”.

Personalmente non avevo nulla da comprare quel giorno, ma ho controllato per curiosità due prodotti che avevo comprato durante il Prime Day: lo smartphone e la macchinetta del caffè. Durante il Black Friday il mio smartphone costava €299 (contro €215) e la macchinetta del caffè €38 (contro €34).

Da questo semplice test si può concludere che il Black Friday non è necessariamente il momento migliore per cercare il miglior prezzo e anzi, in realtà i prezzi su Amazon cambiano in continuazione.

Amazon infatti, come tutti gli e-commerce di grandi dimensioni, utilizza un meccanismo chiamato dynamic pricing: i prezzi dei prodotti vengono continuamente aggiustati (a volte perfino ogni giorno) in modo automatico tenendo in considerazione molti parametri.

Un esempio potrebbe essere il periodo dell’anno: pochi giorni prima di Natale difficilmente un negozio farebbe degli sconti sugli articoli da regalo. Dopo Natale invece è più probabile che succeda. Poi subentrano anche altre dinamiche complesse di cui probabilmente nessuno conosce tutti i dettagli, ma la sostanza è questa.

Ci sono essenzialmente due strategie che uso solitamente quando cerco un prodotto su Amazon: controllare i portali dei vari paesi e monitorare le variazioni di prezzo. Di seguito vi descriverò questi due aspetti facendo anche un esempio pratico relativo a un set di DVD che ho acquistato l’anno scorso.

Controllare le versioni europee del portale

Questo chiaramente dipende dall’articolo che si vuole acquistare, ma in genere tanti prodotti si possono trovare su più mercati. Ricordiamoci che non esiste solo Amazon Italia, ma questo colosso vende prodotti anche in Francia, Germania, Regno Unito e Spagna. Amazon Paesi Bassi invece vende solamente libri.

Per CD musicali e libri in inglese (anche usati!), DVD di film o serie TV e prodotti come borse e zaini di marchi famosi conviene sempre dare un’occhiata. Parlo per esperienza personale: nonostante la presenza delle spese di spedizione, mi è capitato più volte di risparmiare.

In alcuni casi vi ritroverete a controllare anche Amazon USA, ovviamente con spese di spedizione più elevate. Però per certi prodotti può valere la pena (per esempio i libri universitari in inglese: un usato può costare 20-25 euro con spedizione mentre nuovo costerebbe 60-80 euro).

Monitorare i prezzi con CamelCamelCamel

Come ho scritto più su, i prezzi su Amazon variano nel tempo. CamelCamelCamel è un portale dedicato proprio a verificare queste variazioni. Funziona in un modo molto semplice: voi indicate il codice prodotto (o l’URL) dell’articolo che vi interessa e il sito inizia a monitorarlo.

Se qualcuno aveva già manifestato interesse nello stesso articolo (succede spesso per i prodotti più richiesti) CamelCamelCamel vi mostra immediatamente la serie storica dei prezzi, in modo che possiate farvi un’idea di cosa potrebbe accadere in futuro.

Sono disponibili anche delle estensioni per Firefox e Chrome.

Vi avevo parlato di un esempio: un anno fa avevo intenzione di acquistare i DVD della serie completa di Veronica Mars, incluso il film realizzato 10 anni dopo la fine della serie. Vorrei spiegarvi nel dettaglio il procedimento che ho seguito per spendere il meno possibile.

In primo luogo ho controllato su Amazon Italia e mi sono reso conto che avrei potuto comprare i cofanetti separati delle varie stagioni, o addirittura singoli DVD con 4 episodi ciascuno e infine il film a parte.

Insomma, un sacco di soldi da spendere! Per di più, la terza stagione non è mai stata pubblicata in italiano in DVD, pertanto avrei dovuto prenderla in inglese. Sono quindi passato agli altri portali Amazon e ho scoperto un cofanetto definito La collezione completa (esattamente quello che mi serviva) su Amazon UK e Amazon Francia:

Entrambe le edizioni contengono esattamente gli stessi dischi (quindi le stagioni 1 e 2 e il film anche in italiano, mentre la terza stagione solo in inglese oppure lingue che non parlo) e cambiano solamente le scritte sul cartone esterno.

La figura mostra la schermata dell’estensione di CamelCamelCamel sul cofanetto in inglese con i prezzi dell’ultimo anno:

camel_dvd_inglese
Monitoraggio del prezzo di un prodotto con CamelCamelCamel

Le varie linee indicano diverse tipologie di prezzo e quella verde è il prezzo di Amazon. Come potete vedere, ci sono delle interessanti variazioni nel tempo.

La cosa più bella è che (dopo una registrazione gratuita) si possono indicare i prezzi desiderati e ricevere un avvertimento per email ogni volta che il prodotto scende sotto alla soglia specificata. Al momento della mia ricerca (dicembre 2015) erano più o meno allo stesso livello (convertendo le sterline in euro, €35 il cofanetto in inglese e €35,99 quello in francese).

Ho deciso di impostare una soglia di €30 per entrambi, fiducioso che il momento propizio sarebbe arrivato dopo Natale. Con la versione inglese non è andata molto bene, ma poco prima della fine del 2015 ho ricevuto un’email simile a questa:

email_camel
Email di notifica di CamelCamelCamel

Il prezzo indicato era comprensivo dell’IVA francese (al 20%) mentre quella italiana è al 22% ma la differenza è stata di pochi centesimi. Nonostante il costo di spedizione, ho potuto godere di un risparmio molto apprezzato.

ordine_amazon_fr
Ricevuta dell’ordine effettuato ad un prezzo conveniente

Conclusione

Riassumendo, per risparmiare sugli oggetti da acquistare tramite Amazon vi consiglio di:

  • verificare sugli store di diversi paesi
  • registrarvi a CamelCamelCamel e monitorare i prodotti che vi interessano
  • impostare le soglie di prezzo per le quali volete essere notificati
  • acquistare quando il prezzo è andato giù al punto giusto

Guardando il grafico sulla pagina di CamelCamelCamel, il tutto diventa più chiaro:

camelchart
Il momento in cui stavo monitorando il prezzo e quello in cui ho acquistato il prodotto

Come si creano le app Android — Linux Day 2016

Il 22 ottobre si è svolto il Linux Day 2016 in tutta Italia. Come ormai faccio da anni, ho partecipato all’organizzazione di quello di Bassano del Grappa (VI) assieme a GrappaLUG.

Il Linux Day è un evento fantastico per vari motivi: è gratuito, si trova in decine di città in tutto il paese, e consente alle persone di avvicinarsi a Linux e conoscere varie tematiche relative al mondo del software libero.

Quest’anno ho deciso di proporre un talk basato essenzialmente sul mio lavoro, parlando dello sviluppo di app per Android, il quale è un sistema operativo basato su Linux, perciò eravamo pienamente in tema. 🙂

Di seguito potete vedere la registrazione del talk e le slide su SlideShare. Se volete scaricarle, le trovate sul sito del GrappaLUG. Naturalmente fatemi sapere se avete qualche domanda o dubbio. Buona visione!

Ricostruzione forense di NTFS con metadati parzialmente danneggiati — Video e slide

Come vi avevo anticipato circa un mese fa:

Mi è stato proposto di partecipare all’ESC 2016 e di tenere un talk attinente al mio lavoro di tesi sul file system NTFS. ESC è un incontro di persone interessate al Software e Hardware Libero, all’Hacking, al DIY. Si tratta di un evento con contenuti in continua evoluzione, che vengono creati dai suoi partecipanti.

L’organizzazione di ESC ha fatto un ottimo lavoro in termini di video, infatti tutti gli interventi sono già disponibili sul loro canale YouTube. Ci sono moltissimi talk interessanti e naturalmente desidero segnalarvi anche il mio, intitolato Ricostruzione forense di NTFS con metadati parzialmente danneggiati.

Purtroppo c’è stato un piccolo problema tecnico: per motivi logistici non ho potuto presentare con il mio laptop ma ho dovuto usare il portatile che era presente (per di più, ehm… con Windows). Le scritte si sono un po’ sballate.

Il laboratorio non è stato filmato, ma in sostanza ho mostrato RecuperaBit in azione su alcuni casi di esempio che sono discussi anche nel talk.

Di seguito invece trovate le slide pubblicate su SlideShare (cliccate qui per il PDF):

Avete domande? Qualche parte non è chiara? Lasciate pure un commento qui sotto.