Archivi tag: RaspberryPi

Realizzare un phone number blocker con RaspberryPi

Sono stanco di ricevere chiamate da parte dei call center alle ore meno opportune. Sebbene il mio numero sia iscritto al registro delle opposizioni, quest’ultimo si dimostra essere poco efficiente o a dirla tutta, non funzionante. Per evitare di ricadere nel populismo spicciolo del tipico italiano medio, mi limito semplicemente a dire che la maggior parte dei call center italiani lavora scorrettamente, violando i registri ed ignorando le reiterate richieste di rimozione del proprio numero dagli elenchi.

Stando alle ultime stime, persino le segnalazioni via FAX al garante della privacy o alle opportune sezioni di competenza (AGCOM, Corecom, etc) non sono servite a nulla. I controlli non esistono e le sanzioni, in misura quasi inesistente, non impattano per nulla sul business dell’azienda. Si continua a disturbare, nonostante le ammonizioni del garante.

Vediamo quindi come porre fine a questa storia costruendo un nostro personalissimo phone number blocker con l’ausilio di un RaspberryPi e di un banale modem 56K con particolari requisiti.

Lista della spesa:

  • Raspberry Pi
  • SD Card da almeno 2GB (per Raspberry)
  • Modem 56K USB
Raspberry Pi
Raspberry Pi

 

Zoom 3095
Zoom 3095

 

Il modello del Pi è indifferente, va bene sia il model A che il model B della versione 1 o 2; anche il nuovo RPi2 va benissimo. Per quanto riguarda il modem 56K, è opportuno che quest’ultimo sia in grado di interpretare il CallerID e, per funzioni più avanzate, che abbia le funzioni minime della telefonia. Il CallerID è un requisito fondamentale in quanto consente di rilevare il numero di telefono di chi ci sta telefonando.

Per quanto concerne la scelta del Modem 56K, vi consiglio di orientarvi verso il modello Zoom 3095, che è stato utilizzato nella guida corrente e che si presta ad essere fully-compatible con tutto ciò che andremo a fare.

  1. Scaricare l’ultima versione di Raspbian dal sito ufficiale della community di Raspberry e preparare la SD Card da almeno 2GB montando il file .img con un tool, Win32DiskImager.
  2. Completata la preparazione della SDCard, inserirla nel Raspberry, collegare il modem e accenderlo.
  3. Dopo aver effettuato il login digitiamo nel terminale la seguente istruzione
    lsusb

    Assicuriamoci quindi che il nostro dispositivo sia presente e che quindi sia stato riconosciuto dal sistema operativo
    ncidd_1

  4. Adesso dobbiamo installare le librerie per risolvere alcune dipendenze di compilazione per quanto riguarda il software che andremo ad utilizzare. Stiamo parlando di NCID
    Digitiamo quindi nel terminale

    sudo apt-get install libpcap0.8*

    E confermiamo l’installazione

  5. Terminato questo passaggio, scarichiamo l’ultima versione disponibile di NCID a questo indirizzo digitando
    wget http://heanet.dl.sourceforge.net/project/ncid/ncid/1.3/ncid-1.3-src.tar.gz

    ed eseguiamone l’estrazione del pacchetto con tar

    tar -zxvf ncid-1.3-src.tar.gz

    Ed entriamo nella directory digitando

    cd ncid
  6. Compiliamo il sorgente appena scaricato digitando
    sudo make local

    e al termine della avvenuta compilazione procediamo all’installazione con

    sudo make install
  7. Avviamo in prima battuta ncid in modalità verbose, per analizzare il report iniziale e localizzare i files di configurazione
    ncid_2
    Il file ncidd.conf è quello che si occupa di definire tutte le variabili d’ambiente del software
    Il file ncidd.alias ci consente di associare un alias ad una lista di numeri telefonici, non è rilevante ai fini di questa trattazione
    Il file ncidd.blacklist ci permette di definire una lista di numeri e/o nomi (definiti nell’alias) che dovranno essere ignorati e opportunamente gestiti dal software
    Il file ncidd.whitelist si comporta contrariamente a quanto detto per quanto riguarda la blacklistAccingiamoci quindi a configurare in maniera appropriata il file ncidd.conf,

    sudo nano /usr/local/etc/ncid/ncidd.conf

    se lo riteniamo necessario possiamo spostare le posizioni dei file di alias, blacklist e whitelist, questi step non sono rilevanti alla riuscita della procedura.
    E’ di vitale importanza impostare la modalità di hangup: in questa trattazione ho scelto di selezionare la modalità 3, che consente di riprodurre un suono audio a tutti i numeri di telefono che sono presenti nella blacklist. In alternativa, scegliendo la modalità 1, le chiamate provenienti dai numeri di telefono presenti in blacklist verranno semplicemente rifiutate. Ci sono diverse modalità di configurazione, tutte ben dettagliate nei commenti.

    set hangup = 3

    Nel caso in cui dovessimo decidere di utilizzare la modalità 3, è necessario impostare un suono di announce, il suono che verrà riprodotto a coloro che ci telefoneranno con un numero presente in blacklist. Sono già presenti dei suoni standard, ma possiamo anche impostarne dei nostri. Ho trovato persino un messaggio in italiano qui.

    set announce = /usr/local/share/ncid/recordings/NumberDisconnected.rmd

    Per ultimo, impostiamo la porta di comunicazione con il nostro modem, che su Raspbian per default è sull’indirizzo /dev/ttyACM0

    set ttyport = /dev/ttyACM0

    Adesso procediamo a modificare il file ncidd.blacklist

    sudo nano /usr/local/etc/ncid/ncidd.blacklist

    ed inseriamo nella parte finale del file

    ^0000000000

    oppure

    "Anonymous"

    che consente di rifiutare tutte le chiamate anonime
    e a seguire tutti i numeri di telefono dei call center noti in espressione regolare, oppure definendo un alias nel rispettivo file

    ^1234567890
  8. Fatto questo, la configurazione è completata, e possiamo avviare NCID digitando
    sudo ncidd

ncid_3

In questo modo tutte le chiamate che riceveremo da ora in poi verranno automaticamente gestite da NCID. E’ bene ricordare due cose:

  • Il primo squillo telefonico passerà sempre, questo perché l’informazione relativa al CallerID viaggia tra il primo e il secondo squillo
  • Nel caso in cui decidessimo di programmare un demone che permetta l’auto-avvio di NCID all’avvio del Raspberry, dobbiamo assicurarci che lo script venga eseguito solo dopo aver caricato tutti i componenti. Vi confermo che adoperando la registrazione con relativo file nella directory
    /etc/init.d/

    il programma non funziona, in quanto il driver del modem viene caricato a posteriori e quindi la configurazione non avviene con successo.