Disclaimer per i contenuti del Blog


DISCLAIMER:Questo blog non rappresenta una testata giornalistica in quanto viene aggiornato senza alcuna periodicità . Non può pertanto considerarsi un prodotto editoriale ai sensi della legge n° 62 del 7.03.2001.
L'autore non è responsabile per quanto pubblicato dai lettori nei commenti ad ogni post. Verranno cancellati i commenti ritenuti offensivi o lesivi dell’immagine o dell’onorabilità di terzi, di genere spam, razzisti o che contengano dati personali non conformi al rispetto delle norme sulla Privacy. Alcuni testi o immagini inserite in questo blog sono tratte da internet e, pertanto, considerate di pubblico dominio; qualora la loro pubblicazione violasse eventuali diritti d'autore, vogliate comunicarlo via email. Saranno immediatamente rimossi. L'autore del blog non è responsabile dei siti collegati tramite link, del loro contenuto che può essere soggetto a variazioni nel tempo ne degli eventuali danni derivanti dall'utilizzo proprio od improprio delle informazioni presenti nei post.

mercoledì 5 novembre 2014

MacOS X - Installare Yosemite e salvare il file di installazione

OS X Yosemite è purtroppo disponibile in download solo tramite AppStore ed essendo abbastanza corposo, più di 5GB, nel caso di strutture con molti computer da aggiornare, questo potrebbe comportare lunghe attese e/o internet congestionata per lungo tempo.

Il modo migliore per ovviare a questo problema è quello di salvare il file di installazione immediatamente dopo il termine del download e prima di iniziare la procedura di installazione. Ovviamente almeno uno dei Mac andrà aggiornato con la procedura standard così da ottenere il file.

Al termine del download il file in questione ("Installazione di OS X Yosemite") sarà disponibile nella cartella applicazioni e, per copiarlo, sarà sufficiente trascinarlo, ad esempio, sulla scrivania o su una pennetta USB avendo cura di tenere premuto il tasto ALT durante l'operazione di Drag&Drop così da copiare il file e non spostarlo (in realtà la pressione del tasto ALT è obbligatoria solo nel caso in cui la cartella di destinazione sia posizionata nello stesso disco di quella di partenza, quindi nel caso di destinazione su pennetta USB non serve).


A questo punto il file si può tranquillamente trasferire su un altro Mac per eseguire l'aggiornamento.

lunedì 29 settembre 2014

Bash Bug - Ma le patch sono effettivamente risolutive?

A giudicare dagli approfondimenti presenti in Internet sembrerebbe proprio di no, dal momento che la parte di codice interessata al problema è quella che effettua il parsing automatico delle variabili d'ambiente: una variabile d'ambiente contenente una funzione scatenerebbe l'esecuzione automatica del codice!!!

Una completa correzione della vulnerabilità, ad esempio l'eliminazione dal parser della possibilità di utilizzare funzioni nelle variabili d'ambiente,  potrebbe comportare seri problemi di retro-compatibilità con i software esistenti e l'impatto credo sia difficilmente valutabile dal momento che andrebbero ricontrollati tutti i software che in maniera più o meno esplicita utilizzano questa caratteristica.

Ecco una nota del Team di Redhat a riguardo con una breve elenco dei componenti che potrebbero essere interessati a questo problema: https://securityblog.redhat.com/2014/09/24/bash-specially-crafted-environment-variables-code-injection-attack/


Bash Bug - E se non esistono aggiornamenti???

Ho provato ad aggiornare bash di Fedora 9 ma il Team ha pronti gli update solo per le versioni 19, 20 e 21.

Facendo una ricerca su Google ho trovato questa pagina che mi ha permesso di aggiornare bash sul mio sistema di test (http://stevejenkins.com/blog/2014/09/how-to-manually-update-bash-to-patch-shellshock-bug-on-older-fedora-based-systems/) scaricando la versione 4 da ftp.gnu.org, applicando le 41 patch disponibili (sul sito trovate anche uno script che vi evita l'esecuzione manuale dei 41 aggiornamenti), compilandolo e sostituendolo a quello precedente.

Tutti gli step vanno eseguiti come utente normale tranne l'ultimo step (di copia) da eseguire con sudo (se siamo tra i sudoers) o direttamente come root. L'operazione richiede 10/15 minuti di lavoro.

Dovrebbe andare bene per tutti i sistemi per i quali non sono previsti aggiornamenti ufficiali (non mi assumo responsabilità!!!!)

 Fate comunque molta attenzione!!!!


Bash Bug - Shellshock

E' notizia di pochissimi giorni fa l'individuazione, da parte del Team di Red Hat, di una vulnerabilità nella shell Bash e sembra che questo problema sia presente da una ventina d'anni (!!!).
Credo che ormai tutte le distribuzioni di Linux abbiano disponibile un aggiornamento che invito caldamente ad installare.

Per le distribuzioni basate su Red Hat (es. RHEL, Fedora, CentOS):
      sudo yum update bash
Per le distribuzioni basate su Debian (es. Ubuntu):
      sudo apt-get update && sudo apt-get install --only-upgrade bash

E' possibile eseguire questo comando (https://www.digitalocean.com/community/tutorials/how-to-protect-your-server-against-the-shellshock-bash-vulnerability) per avere un'idea dello stato di vulnerabilità del proprio sistema Linux:
      env VAR='() { :;}; echo Bash VULNERABILE!' bash -c "echo Bash Test"
se nell'output del comando NON comparirà la scritta "Bash VULNERABILE" allora il sistema sarà al sicuro.

Ecco un esempio del comando eseguito su un server aggiornato (CentOS5):


ed uno eseguito su un server NON aggiornato e quindi vulnerabile (Fedora 9):


Ma Linux non gira solo su server e client, viene utilizzato sempre più frequentemente nell'Internet delle cose: 
  • Telecamere per videosorveglianza
  • NAS
  • SmartPhone Android (la versione ufficiale non include Bash ma eventuali ROM Custom potrebbero...)
  • Videoregistratori digitali
  • ...ed una infinità di altri oggetti.
Spero che i vari sviluppatori di questi software forniscano al più presto degli update dei firmware così da tappare eventuali falle.

venerdì 26 settembre 2014

iPhone 4S e iOS8

Dopo aver letto parecchi post relativi alla fattibilità di tale aggiornamento ed aver visto che gli esiti erano stati abbastanza diversi, ho voluto tentare comunque e alla fine il risultato è stato accettabile.
Ho voluto effettuare l'aggiornamento su telefono pulito, per evitare possibili problemi derivanti da possibili situazioni confuse, magari derivanti da precedenti aggiornamenti, operando in questo modo:

  1. Backup su iCloud
  2. Ripristino del telefono con azzermanento completo
  3. Riavvio dello telefono e configurazione minimale, configurato wifi, non eseguito restore dei dati e proceduto al download ed all'installazione di iOS8
  4. Ad installazione terminata ho eseguito un nuovo reset del telefono
  5. Al riavvio, quando richiesto, ho operato un ripristino da iCloud e quasi tutto è andato bene, l'unico problema riscontrato era la presenza di alcuni menù dell'Apple Store in inglese
  6. Ho atteso che terminasse l'installazione delle App ed ho riavviato il telefono
  7. Al riavvio tutto era tornato normale.
Cosa dire del nuovo sistema? Le prestazioni grafiche del telefono sono leggermente peggiorate, senza che però questo comporti grossi problemi in fase di utilizzo...
Altri inconvenienti per ora non ne ho trovati, questa mattina ho aggiornato alla v. 8.02. Restano da vedere eventuali problemi legati all'autonomia della batteria. Vi farò sapere tra qualche giorno.

mercoledì 27 agosto 2014

Errore 1359 durante l'installazione di java VM su Windows 7

Ieri mi sono trovato di fronte ad un problema particolarmente curioso durante l'installazione di Java VM su un computer con Windows 7 Pro: il setup terminava quasi immediatamente riportando un non meglio definito errore 1359.

Dopo una lunga verifica di eventuali problemi software, ho pensato bene di eseguire l'installazione del pacchetto abilitando il log prolisso (verbose) delle operazioni effettuate (se dovesse servire qualcuno la sintassi del comando è: [nome_eseguibile_java_vm] /LV* [path]\[nome_file_di_log]) e sono riuscito ad individuare quali operazioni avevano causato l'anonimo errore:




Mentre la ricerca di "1359" collegata a "JAVA" non mi aveva dato nessun risultato, utilizzando le frasi contenute nel log, in particolare "Failed to CreateContentHash of the file", sono riuscito a risalire ad una pagina che evidenziava, relativamente ad un altro contesto, come quell'errore fosse relativo all'installer e lo correlava ad un recente aggiornamento di Windows Update del 12/08/2014 e precisamente il KB2918614.

La rimozione di suddetto aggiornamento ha effettivamente risolto il problema permettendo l'installazione del software.

Una volta rimosso l'aggiornamento, ricordatevi di nasconderlo per evitare che venga reinstallato nuovamente al successivo riavvio del sistema!!!!


Nota del 28/08/2014
Anche su Technet se ne parla pur non facendo riferimento al numero di errore indicato nel titolo:
http://social.technet.microsoft.com/Forums/windows/en-US/78ac199b-316b-4fbc-8b2b-2c90e5425ff0/java-install-errors?forum=w7itproappcompat


Aggiornamento del 01/09/2014

Come impedire che un aggiornamento disinstallato si reinstalli al successivo riavvio

Aprire Pannello di Controllo/Windows Update e far eseguire una ricerca degli aggiornamenti da installare


una volta che l'elenco è completo, fare click sul link che comunica il numero di aggiornamenti disponibili (ci sono due link, uno per gli aggiornamenti importanti ed uno per i facoltativi: scegliere quello che contiene l'aggiornamento da bloccare)


scorrere la lista fino ad individuare l'aggiornamento che non si desidera venga automaticamente installato, fare click con il tasto destro e selezionare "Nascondi aggiornamento"


Tutto qui. L'eventuale ripristino degli aggiornamenti nascosti si può sempre eseguire dal pannello principale di Windows Update (Ripristina aggiornamenti nascosti).

venerdì 30 maggio 2014

Java - Security Exception: Missing required Permissions manifest attribute in main jar

Questo errore solitamente si presenta con applicazioni Java non recentissime eseguite utilizzando un runtime Java abbastanza recente (Version 7 update 55 nel mio caso).

Per aggirare il problema andare su Start/Pannello di controllo/Java, selezionare la tab Sicurezza, premere il pulsante Modifica lista siti... ed aggiungere all'elenco il dominio del sito dal quale viene prelevata l'applicazione che va in errore (vedi immagine seguente)


Confermare tutto con OK. Il problema dovrebbe essere risolto.

mercoledì 21 maggio 2014

Impostare la visualizzazione come "Posta Inviata" ad una cartella di Outlook 2007

In molte situazioni lavorative sorge spesso la necessità di conservare per diversi anni la posta inviata.

Utilizzare la cartella preposta a tale scopo (Posta Inviata) può diventare poco efficiente, specialmente se si gestiscono migliaia di mail/anno.

Una soluzione semplice ed efficace consiste nel creare delle sottocartelle di Posta Inviata nelle quali storicizzare, ad esempio per anno, i messaggi inviati.

L'effetto collaterale di questa operazione è una non corretta visualizzazione dell'elenco dei messaggi in quanto al posto della colonna del destinatario risulterà quella del mittente e questo può comportare ovvi svantaggi qualora si dovesse rendere necessario ricercare o raggruppare i stessi per destinatario.

In Outlook 2007 (e successivi ma per le altre versioni scriverò altri post quando ne avrò l'occasione)  è possibile modificare lo stile di visualizzazione dell'elenco dei messaggi, uniformandolo a quelli della cartella Posta Inviata, con pochi click del mouse:

Selezionare la cartella che si desidera impostare con la stessa visualizzazione di Posta Inviata (anche se nell'esempio qui sotto risulta selezionata la cartella Posta Inviata, non lo considerate) quindi dal menù Visualizza selezionare la riga Visualizzazione corrente/Definisci visualizzazioni...



dalla finestra che compare selezionare Inviato a quindi premere il tasto Applica visualizzazione.



lunedì 19 maggio 2014

Un server LAMP con il Raspberry PI - Step 2 - Il server MySQL

Questo secondo step ci guiderà nell'installazione del server MySQL, dei pacchetti necessari per il collegamento con gli altri moduli già installati (Apache e PHP) ed opzionalmente del più comodo front-end grafico esistente (phpMyAdmin) grazie al quale potremo operare su database e tabelle in maniera semplice e rapida utilizzando il nostro browser web.

La procedura è molto semplice, il tutto si riduce alla installazione del pacchetto relativo al server MySQL vero e proprio ed al modulo che permette di interfacciarlo con PHP (eventuali altre dipendenze verranno installate in caso di necessità):

   sudo apt-get install mysql-server php5-mysql

Durante l'installazione verrà richiesta la password da utilizzare per l'utente root di MySQL, è importante non dimenticarla in quanto, almeno in una prima fase, root sarà l'unico utente in grado di crearne di nuovi e di attribuire loro i permessi (Grant) sui vari oggetti.

Al termine dell'installazione di MySQL consiglio caldamente l'installazione del pacchetto phpMyAdmin, un front-end web-based molto comodo per gestire database e tabelle. Per installarlo:

   sudo apt-get install phpmyadmin

Per una guida completa all'installazione ed alla configurazione di phpMyAdmin consiglio la consultazione delle relative pagine.

giovedì 15 maggio 2014

Files di Windows Update corrotti in Windows 7 (e forse anche 8.x)

A volte i files scaricati da Windows Update possono danneggiarsi a seguito, ad esempio, di uno spengimento anomalo del sistema durante il download degli stessi.

Al riavvio del sistema può accadere che non sia più possibile installare uno o più aggiornamenti e che questi vengano riproposti ad ogni avvio/spengimento.

Esistono diverse soluzioni sul sito della Microsoft e almeno un paio di FixIt disponibili ma non sempre riescono a risolvere il problema. 

Se questo è la vostra situazione, vi propongo questa semplice procedura che nel mio caso ha sistemato il problema in maniera rapida ma il cui effetto collaterale è la perdita della cronologia degli aggiornamenti installati, quindi da usare come ultima spiaggia.

Aprire il prompt dei comandi come amministratore (click con il tasto dx sull'icona e quindi "Esegui come Amministratore") ed eseguire i seguenti comandi:

   net stop wuauserv
   move %systemroot%\SoftwareDistribution %systemroot%\SoftwareDistribution.old
   net start wuauserv
   exit

Riavviare il sistema, aprire Pannello di controllo/Windows Update, eseguire la ricerca nuovi aggiornamenti ed installarli.

Provato su Windows 7, da verificare il funzionamento su Windows 8...

mercoledì 30 aprile 2014

Un esperimento per ridurre il disturbo da "Referer Spam"

Qualunque utente della piattaforma Blogger (e probabilmente di altre) ha prima o poi avuto a che fare con il problema del "Referer Spam", siti che accedono al nostro blog, probabilmente a mezzo bot, falsando le statistiche di accesso e generando traffico inutile, tra questi posso citare vampirestats.com, 7secretsearch.com, www.adsensewatchdog.com, zombiestat.com e probabilmente molti altri.

La cosa in se non è particolarmente grave ma mi disturba avere improvvisi picchi di accessi (falsi) ogni volta che pubblico un nuovo post.

Per ovviare a questo "problema" ho realizzato un piccolo modulo JavaScript che, almeno apparentemente (è in linea da dicembre 2013), ha fatto si che il mio Blog sia diventato poco appetibile/interessante per i suddetti cialtroni.

La sua struttura è molto semplice:

//------------------------------------------------------------------
// Stop unwanted referer and redirect the browser to google
//------------------------------------------------------------------
var IncomingReferrer = document.referrer;
if (IncomingReferrer !=="") {
 var UnWanted = ["http://vampirestat.com", 
     "http://7secretsearch.com",
     "http://www.adsensewatchdog.com",
     "http://zombiestat.com"];
 for (var i = 0; i < UnWanted.length; i++) {
  if (IncomingReferrer.substr(0,UnWanted[i].length) == UnWanted[i]) {
   i=100000;
  }
 }
 if (i>100000) {
  document.write('<script type="text/undefined">')
  location.href = "http://www.google.com";
 }
}

Non faccio altro che verificare se il referrer è tra quelli presenti nella black-list "UnWanted" e se il test è positivo redirigo il browser vero un'altra URL, in questo caso google.com, di fatto interrompendo il caricamento della pagina del blog.

Lo script va posizionato immediatamente dopo il tag <HEAD>


e questo si può fare andando su Modello/Modifica HTML


Può darsi che il mio Blog non sia più stato visitato dai bot in quanto ritenuto poco interessante o può darsi che lo script abbia sortito il suo effetto, sta di fatto che se a qualcuno va di provare ad apportare la stessa modifica, sarò lieto di ricevere feedback a riguardo.

NOTA del 1/5/2014
Corretto errore di digitazione:  "if (i=100000) {" va modificato in " if (i>100000) {"


lunedì 28 aprile 2014

Internet Explorer: nuova vulnerabilità.

Sono trascorsi solo 18 giorni dal termine del supporto per Windows XP ed ecco che ci ritroviamo con la prima vulnerabilità che probabilmente non verrà mai corretta (almeno per IE8 e precedenti).

E' notizia dell'altro ieri: su Microsoft Security TechCenter è uscita una nota relativa ad una vulnerabilità di Internet Explorer (versioni 6, 7, 8, 9, 10 ed 11) che permetterebbe l'esecuzione di codice arbitrario qualora l'utente dovesse incappare in siti sviluppati per lo sfruttamento di tale falla (https://technet.microsoft.com/library/security/2963983).

Microsoft ha dichiarato di essere già al lavoro per la correzione della falla ma probabilmente tale correzione NON interesserà gli utenti di Windows XP che, di fatto, rimarranno esposti a tale tipo di attacco.

Iniziamo bene :(

lunedì 7 aprile 2014

Una gita su Monte Circeo

Oggi voglio sottoporre alla vostra attenzione una passeggiata, per alcuni brevi tratti mediamente impegnativa, in un luogo fantastico: il monte Circeo.

Riepilogo del percorso

Importante

Iniziamo con il dire che, a causa di alcuni tratti con sentiero stretto e pareti a strapiombo, sconsiglio caldamente l'escursione a chi soffre di vertigini ed ai bambini. Sono obbligatorie scarpe robuste ed adatte all'utilizzo su sterrati, consiglio di portare una buona riserva d'acqua da bere, i bastoncini sono stati più d'impaccio che d'aiuto, alcuni brevissimi passaggi in zone rocciose (solo un paio, per fortuna) sono stati percorsi a "4 zampe" (fortunatamente schiena allo strapiombo seguendo il senso da noi scelto).

Il percorso

Si parte da una piccola area di parcheggio vicina ad un ristorante (posizione 41.246837, 13.037103 o 41°14'48.6"N 13°02'13.6"E) . Tutto il sentiero è quasi sempre perfettamente indicato con segni rossi. Purtroppo non siamo riusciti a completare il giro pianificato a causa dell'eccessivo tempo impiegato per percorrere la parte più alta (sconsiglio caldamente il giro a tutti coloro che soffrono di vertigini dal momento che per diverse centinaia di metri il sentiero è abbastanza stretto con vista mozzafiato e lati a strapiombo).

La prima parte, quella più a nord, si svolge all'interno di un bosco rigoglioso ed ombreggiato; ciclamini e sugheri la fanno da padrone.

La prima parte del percorso, semplice e fresca.

Un esemplare giovane di Sughero
Un vecchio Sughero capitozzato


Ciclamini selvatici

Sembra un luogo fuori dal tempo...
Scendendo verso sud il panorama cambia abbastanza rapidamente, si esce dal bosco e la vegetazione diventa bassa e rada, tipica delle zone aride ed percorso resta comunque abbastanza agevole da percorrere. La parte a mio parere più impegnativa è quella che si incontra sulla cima ma ne vale sicuramente la pena.

Il golfo tra Circeo e Terracina

Il lago di Paola

Uno sguardo verso nord...
La discesa è stata leggermente impegnativa a causa del materiale incoerente presente lungo tutto il tratto, aggravata dal tramonto ormai iniziato da diverso tempo e dall'inclinazione del sentiero (date una occhiata al profilo altimetrico dell'ultimo tratto). L'ultima parte del percorso siamo stati costretti a percorrerla alla luce delle torce ma oramai eravamo quasi arrivati in pianura.

Risorse

Per chi volesse ripetere questa bellissima esperienza questo è il percorso su ViewRanger, qui su Google Maps ed il file GPX da scaricare sul proprio GPS.

venerdì 4 aprile 2014

Un server LAMP con il Raspberry PI - Step 1 - Il server Web

Anche sul piccolo Raspberry PI è possibile installare tutto il necessario affinché possa essere essere utilizzato come server LAMP.

I software che dovremo installare saranno Apache2, PHP5, MySQL e
VSFTP.

In questo primo post affronteremo l'installazione di Apache2 e del supporto al linguaggio PHP con un paio di step di verifica del funzionamento del software installato.



Iniziamo con Apache2:

   sudo apt-get install apache2

al termine dell'installazione andiamo a modificare i permessi della cartella nella quale andremo a mettere i nostri files html (in una situazione di produzione eviterei caldamente questa operazione che, di fatto, abbassa al minimo la sicurezza rendendo scrivibile per CHIUNQUE la cartella stessa):

   sudo chmod 777 /var/www
   sudo chmod 777 /var/www/index.html

Possiamo ora verificare il funzionamento del server Web (attenzione, faccio riferimento all'indirizzo del PI utilizzando rpi.local e non l'indirizzo IP in quanto ho precedentemente eseguito i step indicati in questo post):


A questo punto aggiungiamo PHP5 (step opzionale, se non useremo mai pagine in PHP è inutile installarlo):

   sudo apt-get install php5

al termine dell'installazione creiamo un piccolo script PHP per verificare il funzionamento del server:

   nano /var/www/phptest.php

e all'interno dell'editor inseriamo queste tre righe:

<?php
   phpinfo();
?>

CTRL+X / S / ENTER per salvare.


Anche PHP funziona :)

Accedere al Raspberry PI via rete senza utilizzare il suo IP

Per accedere via rete al PI dobbiamo sapere quale sia il suo indirizzo IP. Se abbiamo configurato l'adattatore per ricevere un indirizzo IP valido dal server DHCP, a meno di particolari configurazioni del server DHCP (solitamente integrato nel router), non avremo mai la certezza di quale indirizzo sia stato assegnato.

Un sistema abbastanza semplice per risolvere il problema è l'utilizzo sul PI di un servizio che pubblichi in rete le informazioni delle quali abbiamo bisogno, ad esempio l'hostname, così da accedere al PI utilizzando il suo nome invece del suo indirizzo.

Il servizio che permette di svolgere questa funzione (Multicast DNS Service Discovery) si chiama Avahi. I sistemi Apple (Mac, iPhone, iPad, iPod) lo utilizzano di default (per es. AirPrint sfrutta proprio questo protocollo per la ricerca delle stampanti presenti nella subnet), per i sistemi Windows ci sarà bisogno di installare un piccolo modulo (peraltro non necessario se sul nostro PC abbiamo già installato iTunes... mai sentito parlare del servizio Bonjour???).

Ma ritorniamo al PI. Prima di tutto andiamo ad impostare l'hostname del PI; il suo default è raspberrypi ma per pigrizia ho deciso di accorciarlo a rpi. Possiamo modificare l'hostname utilizzando

   sudo raspi-config

andando su Advanced Option/Hostname ed impostando quello che più ci aggrada avendo cura di fare reboot al termine

Ora che l'hostname è impostato verifichiamo se Avahi è già installato sul nostro PI (chi ha correttamente installato un dongle BT probabilmente ha già il servizio installato ed attivo):

   service avahi-daemon


in questo caso il servizio è già presente altrimenti avremmo ricevuto un messaggio di errore tipo:
avahi-daemon: unrecognized service.

Se Avahi non è installato possiamo procedere con:

   sudo apt-get update
   sudo apt-get upgrade
   sudo apt-get install avahi-daemon

Al termine dell'installazione

   sudo reboot

per far si che tutto parta automaticamente. A questo punto il PI è a posto e non sono necessarie ulteriori configurazioni.

Se abbiamo un Apple abbiamo finito, mentre se abbiamo un PC Windows (senza iTunes installato) dobbiamo provvedere al setup del servizio Bonjour; il pacchetto lo si può trovare su http://support.apple.com/kb/DL999?viewlocale=it_IT. Una volta installato il software il PI sarà finalmente accessibile:


Nell'esempio riportato l'errore "connessione rifiutata" dipende dal fatto che non c'e' un server FTP sul PI, infatti tentando di accedere ad un host inesistente il messaggio di errore è ben diverso...

Rete wireless per il Raspberry PI

Perchè non svincolare il nostro PI dal cavo ethernet e connetterlo ad internet utilizzando un dongle WiFi USB?

L'operazione è molto più semplice di quanto possa sembrare a patto che si rispettino un paio di regole legate all'hardware ed al software del nostro PI.

Dal momento che le porte USB del Raspberry PI non sono in grado di fornire più di 140mA, la prima regola da rispettare è di acquistare un HUB USB alimentato ed utilizzarlo per connettere il dongle WiFi o, in alternativa, utilizzare uno shield che fornisca porte USB aggiuntive in grado di fornire la corrente richiesta. Ho provato entrambe le soluzioni senza alcun problema. Qualora optaste per l'HUB USB alimentato potreste utilizzarlo anche per alimentare il PI.

La seconda regola da rispettare riguarda la scelta del dongle: per eseguire una configurazione hassle free è bene acquistare uno dei dongle presenti nella lista di compatibilità hardware relativa agli adattatori WiFi. Io ho scelto un dongle della TP-Link TL-WN727N, l'ho connesso all'HUB USB e il SO (Raspbian Wheezy aggiornato a marzo 2014) l'ha riconosciuto senza ulteriori interventi.


Passiamo ora alla configurazione del software, colleghiamoci al PI in modalità console, ed iniziamo ad editare il primo file, quello relativo all'elenco delle interfacce:

   sudo nano /etc/network/interfaces

dobbiamo completare le informazioni relative all'adattatore wlan0 in modo che il blocco relativo abbia i seguenti parametri:

   auto wlan0
   allow-hotplug wlan0
   iface wlan0 inet manual
   wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

CTRL+X / S / INVIO per salvare il file.

A questo punto dobbiamo fornire le informazioni di autenticazione per l'adattatore appena configurato:

   sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Il file dovrebbe già contenere le seguenti righe

   ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
   update_config=1

alle quali aggiungeremo

   network={
   ssid="<SSID>" 
   psk="<PASSWORD_WPA>"
   proto=WPA
   key_mgmt=WPA-PSK 
   pairwise=TKIP
   auth_alg=OPEN
   }

avendo cura di sostituire <SSID> con il vostro SSID e <PASSWORD_WPA> con la password di crittografia che avete impostato sul Vs. router/access point

CTRL+X / S / INVIO per salvare il file.

Riavviamo il PI con sudo reboot.

A questo punto, una volta individuato l'IP che il server DHCP ha attribuito all'adattatore WiFi, possiamo connetterci come al solito al nostro PI (un po di pazienza, la connessione wireless impiega qualche manciata di secondi in più di quella cablata per essere disponibile).


Un ultimo aspetto da prendere in considerazione è l'attribuzione di un indirizzo IP specifico al nostro PI. Abbiamo due possibilità:
  • indicare nel file /etc/network/interfaces un IP fisso (ma questo sistema non mi piace troppo) 
  • andare ad operare sul ns. router nella sezione riguardante il server DHCP per impostare una relazione tra il MAC ADDRESS del nostro adattatore WiFi ed uno degli indirizzi del pool del DHCP che sceglieremo ad hoc.
Ecco come farlo su un router TP-Link (io ho attribuito un IP fisso sia alla connessione wireless, sia a quella cablata):


In questo modo potremo accedere al PI senza preoccuparci ogni volta di cercare l'IP assegnato.

In un prossimo articolo vedremo come installare e configurare sul PI il servizio Avahi per poter accedere senza utilizzare l'IP ma semplicemente utilizzando un nome...

venerdì 28 marzo 2014

Per chi continuerà ad usare Windows XP dopo l'8 aprile 2014

Come ormai tutti sapranno, a partire dall'8 di aprile 2014 la Microsoft interromperà il supporto per l'ormai datato Windows XP interrompendo di fatto la ricerca/correzione di eventuali vulnerabilità ancora presenti che potrebbero essere utilizzate dai creatori di malware per causare danni più o meno gravi ai nostri computer.

E' notizia di qualche giorno fa la scoperta di una vulnerabilità di Microsoft Word che permetterebbe l'esecuzione di codice in modalità remota in certe condizioni operative e questa vulnerabilità affliggerebbe anche il buon vecchio Word 2003. Questo per dire che alcune vulnerabilità possono essere scoperte anche a distanza di diversi anni.


La scelta di mantenere o meno Windows XP la lascio a voi, ma per coloro che sceglieranno di rimanere con il mitico SO di Microsoft ho pensato di buttare giù un decalogo di norme da seguire per non avere problemi o, almeno, per essere in grado di correre ai ripari qualora si dovessero verificare.

Tenete a mente che il passaggio ad un sistema operativo superiore (Windows 7 o 8) potrebbe comportare la necessità di acquistare anche nuove licenze di software, es. Office, qualora le versioni correntemente utilizzate non fossero compatibili con il nuovo sistema operativo scelto.

Questo decalogo prende spunta dalla fine del supporto di Windows XP ma andrebbe comunque seguito da tutti gli utilizzatori di computer, indipendentemente dal SO utilizzato.

1 - Internet Explorer

Sarebbe ormai ora di smettere di usare questo browser di Microsoft (od una delle sue versioni precedenti) sia per motivi di sicurezza, sia per poter godere delle caratteristiche del Web 2.0 non completamente supportate. Alternative possibili sono Google Chrome, Firefox, Safari, Opera, tanto per citare quelli più famosi.

2 - Aggiornare con frequenza i software di terze parti

Qui mi riferisco in particolare a quei software di supporto (i più famosi e critici sono Java Virtual Machine e Adobe Flash Player) e/o plugin che possono essere utilizzati per scavalcare le protezioni di Windows permettendo ai malintenzionati di operare quasi indisturbati.

3 - Evitare come la peste le Toolbar

Oltre a ridurre lo spazio disponibile nella pagina di navigazione (ho avuto dei clienti con così tante toolbar installate da avere la metà dello schermo del browser occupata...), possono essere causa di pubblicità non richiesta e, in alcuni casi, mezzo per l'installazione di software più o meno dannosi che si spacciano per utility mentre nel migliore dei casi sono solo delle 'inutility'.

4 - Evitare di installare qualsiasi programma ci venga proposto

Prima di installare un software, specialmente se gratuito ed offerto durante la navigazione, verificare i seguenti punti:
  • mi serve?
  • proviene da una fonte attendibile?
  • se ne parla su internet e che reputazione ha?
Fare anche attenzione agli eventuali software aggiuntivi che ci vengono proposti durante l'installazione di programmi scaricati da internet, quasi sempre non servono e, se vengono proposti, ci sarà pure un motivo, no? Nessuno regala nulla...

5 - Utilizzare un buon software di antivirus  e mantenerlo aggiornato

L'antivirus può in molti casi evitare che virus, spyware e software non desiderati  (PUP, Potentially Unwanted Program) vengano installati sul nostro computer, magari anche a nostra insaputa. Esistono soluzioni gratuite abbastanza valide (quasi mai utilizzabili in ambiti lavorativi) ma conviene spesso affidarsi a soluzioni a pagamento facendo qualche ricerca e selezionandone uno non troppo avido di risorse.

6 - Backup dei dati.

Una copia completa dei dati, aggiornata frequentemente (la frequenza varia da caso a caso in relazione all'attività svolta) può essere l'ultima risorsa in casi di serio danneggiamento del sistema. Un sistema ancora più efficace può essere l'adozione di quei programmi (es. Acronis True Image) che permettono di salvare una copia speculare del nostro disco di sistema su un disco esterno permettendoci di ripristinare l'operatività del computer in una manciata di minuti.
L'ideale sarebbe l'esecuzione di una immagine del sistema in occasione dell'installazione di programmi ed un normale backup dei dati con frequenza settimanale. Esistono diversi software free per il backup dei dati, es. Uranium Backup.

7 - Evitare i software di File-Sharing

Oltre ad essere spesso e volentieri utilizzati per lo scambio di materiale protetto da copyright e quindi fuorilegge, possono essere utilizzati utilizzati come veicolo per la diffusione di malware (mai capitato a nessuno di scaricare un film e ritrovarsi invece tutt'altro???).

8 - Mantenere un profilo di navigazione 'safe'

Non tutti i siti internet sono affidabili e sicuri. Esistono lunghe listi di siti che sarebbe bene evitare. Spesso e volentieri questi siti offrono gratuitamente programmi commerciali e/o metodi per aggirare le protezioni utilizzate dai produttori di per evitare copie non autorizzate. Anche molti siti porno possono rappresentare un pericolo per la sicurezza del PC in quanto veicoli per l'installazione di malware (del resto chi denuncerebbe mai un sito porno od uno che propone dei crack???)

9 - Provvedere ad una periodica manutenzione del sistema

Mantenere il sistema pulito ed agile può servire ad evitare spiacevoli conseguenze, indipendentemente dal fatto che si utilizzi XP o qualsiasi altro sistema operativo.

10 -Incrociare le dita e sperare che non capiti nulla :)

Questo è l'augurio!!!!


mercoledì 26 marzo 2014

Simulare un popup con DIV in una pagina html


Realizzando pagine html può far comodo utilizzare dei popup per comunicare all'utente informazioni o per richiedere dati ulteriori. I normali popup a me non sono mai piaciuti, principalmente per diversi motivi:
  • possono nascondersi dietro alla pagina principale
  • possono non essere visualizzati se al browser è stato detto si evitarli
  • può essere complesso far interagire il codice del popup con l'html della pagina di partenza

E' pur vero che esistono decine di librerie Javascript che permettono di simulare i popup ma quella che propongo oggi è una soluzione, sebbene spartana, molto sintetica e semplice da implementare.

Ho utilizzato comunque jQuery per aumentare la leggibilità del codice ma questa dipendenza è facilmente evitabile modificando un paio di righe ed utilizzando JS puro.

Questa è la porzione HTML

<!DOCTYPE html>
<!--[if lt IE 9 ]> <html class="ie8-or-less"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html> <!--<![endif]-->
 <head>
  <meta charset="UTF-8">
  <title>POPUP</title>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
  <link rel="stylesheet" type="text/css" href="index.css">
 </head>
 <body>
  <div class="page-content">
  <h1>POPUP simulato con DIV</h1>
   Questo è il contenuto della pagina Web, 
   <a href = "javascript:void(0)" onclick = "$('#popup1, #overlay').css('display', 'block')">
    fai click qui per aprire il popup...
   </a>
  </div>

<!-- ***************** Porzione di HTML per la generazione del PopUp ***************** -->
  <!-- Overlay per l'oscuramento dello sfondo -->
  <div id="overlay" class="ovl">
  </div>

  <!-- E' possibile gestire più popup assegnando ad ognuno un diverso ID  -->
  <!-- ricordandosi di modificare i riferimenti nei due 'onclick', avendo -->
  <!-- cura di lasciare inalterato il riferimento all'ID 'overlay' e      -->
  <!-- modificando solamente il riferimento all'ID del popup desiderato   -->
  <div id="popup1" class="popup"> 
   <div class="title">
    <div class="title-row">
     <div class="title-description">
      Questo è il titolo della finestra...
     </div>
     <div class="title-close">
      <a href = "javascript:void(0)" onclick = "$('#popup1, #overlay').css('display', 'none')">
       <img src="close.png" border=0>
      </a>
     </div>
    </div>
   </div>
   Contenuto del popup
  </div>
<!-- ********************************************************************************** -->

 </body>
</html>

e questo il relativo CSS

 .ie8-or-less body{
 width: 100%;
 margin: 0px;   
}

.ie8-or-less .page-content {    
 width: 99%;
 margin: auto;
 padding: 5px;
}

.ovl{
 display: none;
 position: absolute;
 top: 0px;
 left: 0px;
 width: 100%;
 height: 100%;
 background-color: black;
 z-index: 1001;
 -moz-opacity: 0.7;
 opacity: .70;
 filter: alpha(opacity=70);
}

.popup {
 display: none;
 position: absolute; 
 top: 25%;
 left: 25%;
 width: 50%;
 height: 50%;
 padding: 4px 4px 4px 4px;
 border: 2px solid white;
 border-radius: 5px;
 -moz-border-radius: 5px;
 background-color: white;
 z-index: 1002;
 overflow: auto;
}

.title {
 display: table;
 background-color: blue;
 color: white;
 font-weight: bold;
 font-size: 150%;
 padding: 4px;
 margin: auto;
 width: 99%;
 border-radius: 5px;
 -moz-border-radius: 5px;
}

.title-row{
 display: table-row;
 width: 100%;
}

.ie8-or-less .title-description{
 display: block;
 float: left;
 width: auto;
}

.title-description{
 display: table-cell;
 float: left;
 width: auto;
}

.ie8-or-less .title-close{
 display: block;
 float: right;
 width: 16px;
}

.title-close{
 display: table-cell;
 width: 16px;
}

Come si può notare dalle prime righe di html, ho dovuto inserire un test del browser utilizzato per intercettare Internet Explorer 8 (bestia nera) in modo da poter adattare il css al suo comportamento non proprio standard. E' possibile vedere una demo funzionante o scaricare i files che compongono il progetto.

Il funzionamento del tutto è molto semplice, il primo <DIV> con id 'overlay' serve ad oscurare il contenuto della pagina web (nero con opacità al 70%) ed ha inizialmente impostato il parametro display a none; il secondo <DIV>, quello con id 'popup1' funge da contenitore del nostro popup, anche lui inizialmente ha il parametro display impostato a none. Facendo click sul link il parametro display dei due <DIV> viene impostato a block rendendoli visibili entrambi. Utilizzando uno z-index più alto mi assicuro che il <DIV> 'popup1' venga visualizzato al di sopra del resto.

Facendo click sull'immagine che simula il pulsante di chiusura riporto il valore del parametro display dei due <DIV> a none simulando la chiusura del popup.
Semplice ed efficace...

Lo script è stato testato con IE8 e con le ultime versioni di Chrome, Firefox, Safari per Windows/iOS ed Opera.

lunedì 24 marzo 2014

Remote Desktop Protocol per Raspberry PI

Sempre a proposito di Raspberry PI a volte può essere comodo utilizzare l'interfaccia grafica (io sono comunque un fautore della riga di comando) senza dover connettere il piccolino ad un monitor dedicato/televisore. Per poter far questo possiamo utilizzare il protocollo RDP (Remote Desktop Protocol).

Con

   sudo apt-get install xrdp 

possiamo installare il servizio che si occuperà della gestione del suddetto protocollo.

Una volta installato (non serve nessuna particolare configurazione), per accedere al PI potremo utilizzare il client di Windows "Remote Desktop Connection" presente sicuramente in tutte le versioni Pro di questo sistema operativo, almeno a partire da Windows XP (non ricordo se W2K aveva tale modulo built-in...).


Al termine dell'installazione eseguiamo il programma "Remote Desktop Connection" ed indichiamo l'IP del PI:



quindi premiamo "Connetti" per accedere alla prima schermata, quella di autenticazione:


inseriamo i soliti pi e raspberry...


ed ecco qui il nostro desktop!


Una tastiera Bluetooth per il Raspberry PI

Ho deciso di mettere in linea questa guida perché non sono riuscito a trovarne altre in italiano sull'argomento ed alcune in inglese non sembrano funzionare correttamente (almeno con il S.O. da me utilizzato) o lasciano a desiderare in quanto a chiarezza. 

Questo per dire che non mi sono inventato nulla di nuovo; ho semplicemente fatto delle ricerche su internet ed ho eseguito le operazioni trovate parallelamente alla stesura dell'articolo, così da verificare dal vivo la correttezza dei comandi.

Spero possa essere d'aiuto per altri...

Il modo migliore per utilizzare un Raspberry PI è collegarlo ad una tastiera Bluetooth. Io ho scelto un modello della iTek che dispone anche di un comodo Touchpad così da avere mouse e tastiera in un solo oggetto.

Come dongle BT ne ho acquistato uno piccolissimo della ADJ (AC240) che è stato riconosciuto immediatamente senza necessità di operazioni particolari.

Questa guida si basa sul S.O. Wheezy Raspbian, la versione è quella del 07/01/2014. Tutta l'installazione verrà eseguita in modalità console utilizzando Putty per connettersi al server SSH del PI. Ricordo che l'utente di default è pi e la sua password è raspberry. Ovviamente il PI dovrà essere connesso ad Internet...

Una volta connessi al PI via SSH ed eseguito il login, aggiorniamo i software installati alle ultime versioni:
   sudo apt-get update
quindi
   sudo apt-get upgrade

Inseriamo il dongle BT e verifichiamo che venga riconosciuto dal sistema:
   lsusb

se tutto è a posto dovremmo avere una risposta simile a questa (la riga evidenziata è quella relativa al dongle BT):



Passiamo ora all'installazione di tutto il software che il PI utilizzerà per gestire il BT:
   sudo apt-get install bluetooth bluez-utils blueman

Nel mio caso il sistema scaricherà 97 pacchetti (dipendenze incluse) per un totale di 34MB di download:


Rispondiamo S ed andiamo a prendere un caffè... Il download sarà abbastanza rapido, uno o due minuti, ma l'installazione richiederà un pochino di tempo in più.

Trascorsa una decina di minuti avremo di nuovo il controllo del nostro PI; a seguito dell'installazione di nuovi servizi ritengo opportuno riavviare il sistema:

   sudo reboot

Ricolleghiamoci al PI via SSH. Per verificare che il servizio bluetooth sia partito ed attivo utilizziamo il comando:

   /etc/init.d/bluetooth status


Ora che il servizio è partito possiamo interrogare BT per vedere quali periferiche siano raggiungibili. Il comando per effettuare questa operazione è

   hcitool scan 

bisogna ovviamente ricordarsi di mettere la tastiera in modalità accoppiamento altrimenti non vedremo nulla


il codice di 6 bytes è il MAC Address della nostra (anzi mia) tastiera; ovviamente sarà diverso per ognuno di voi. Passiamo ora al Pairing con il comando:

   sudo bluez-simple-agent hci0 DC:2C:26:A0:59:A2

avendo cura di sostituire l'indirizzo della mia tastiera con quello della vostra:


alla richiesta del PIN code digitare sulla tastiera della console SSH una sequenza numerica di almeno 4 caratteri seguita dal tasto INVIO ed immediatamente digitare la stessa sequenza sulla tastiera da accoppiare sempre seguita dal tasto INVIO. Se il pairing ha avuto successo dovreste vedere una schermata simile a quella riportata sopra.

L'ultima cosa che ci resta da fare è rendere permanente questo accoppiamento tra PI e tastiera. Il comando da utilizzare è:

   sudo bluez-test-device trusted DC:2C:26:A0:59:A2 yes

Se non abbiamo in risposta messaggi di errore significa che la procedura è andata a buon fine. D'ora in poi il PI connetterà automaticamente la tastiera BT quando la troverà nel suo raggio di azione (per esperienza la connessione può impiegare qualche secondo ed a volte i primi tasti non vengono 'sentiti')

Molto probabilmente il layout della tastiera italiana non sarà correttamente gestito dal PI, per risolvere questo problema:

   sudo nano /etc/default/keyboard

sostituire XKBLAYOUT=”gb” con XKBLAYOUT=”it”, premere CTRL+X, rispondere S per salvare quindi INVIO per confermare il nome del file, eseguire il reboot e tutto dovrebbe essere a posto.