Nicholas Giordano

Cloud Arch. & Full Stack Developer

Redirect ad un sito mobile con javascript

Redirect ad un sito mobile? Se ci accorgiamo che il visitatore si trova a visitare una nostra pagina da dei particolari dispositivi possiamo farlo

Ci troviamo ormai in una delicata situazione di passaggio, la maggior parte dei siti web vengono ormai visitati da dispositivi mobili: telefoni, tablet; ed una delle prime caratteristiche che ormai un qualsiasi sito web moderno deve avere essere la grafica “responsive”, quella che si adatta in automatico in base alle dimensioni dello schermo sul quale viene visualizzata.

Bene direte voi, riprogettiamo tutto, rendiamo tutto responsive. Questa sarebbe un’idea magnifica, spesso però non è sempre e subito rapidamente fattibile. Cosa fare allora? Perdere i visitatori che arrivano da mobile o rendergli particolarmente complicata la navigazione tra i nostri contenuti?

 

La risposta è chiaramente NO!

 

Per questo javascript ci viene in grande aiuto: vediamo oggi un semplice script che verifica se il nostro visitatore si trova a navigare da un dispositivo mobile e in caso di risposta affermativa effettua in automatico il redirect ad una qualsiasi nostra pagina. Certo, questo non risolve il problema alla base, ma almeno, progettando l’adeguamento del nostro sito e dei nostri contenuti possiamo nel frattempo creare delle pagine ad hoc per i nostri contenuti più importanti.

Di seguito lo script:

<script>
if( 
 navigator.userAgent.match(/Android/i) || 
 navigator.userAgent.match(/webOS/i) || 
 navigator.userAgent.match(/iPhone/i) || 
 navigator.userAgent.match(/iPod/i) || 
 navigator.userAgent.match(/BlackBerry/i)
){
location.href="http://sitomobile.it";
}</script>

DataToR: script di conversione

DataToR è uno script utilizzabile per convertire valori di analisi realizzati con Data Studio in forme vettoriali utilizzabili in input per R Statistics.

Scritto in python 3 è distribuito sotto licenza GPL v3.0.

GitHub:  https://github.com/nicholas0g/dataToR/

Utilizzo:

Installare l’interprete python3 sul proprio sistema ed eseguire lo script, il file da analizzare deve trovarsi nella stessa cartella d’esecuzione dello script

UPDATE: Presto sarà disponibile una build .exe

Configurazione di base di un web server linux: Apache, PHP e Mysql

Mai avuto necessità o curiosità di installare / configurare un web server linux?

Ci sono tanti modi di mettere online un sito web, possiamo utilizzare uno dei tanti piani di hosting messi a disposizioni da uno dei tantissimi provider, oppure possiamo aver bisogno di una soluzione più personalizzabile, più potente o magari necessitiamo di funzioni che il semplice piano di hosting, con tutte le sue “limitazioni” non ci permette di implementare. In questa breve e semplice guida vedremo come installare e configurare un server LAMP (Linux-Apache-Mysql-PHP) sulla nostra macchina linux o il nostro ipotetico server remoto (VPS o dedicato che sia).

Vedremo passo passo come installare i componenti e i servizi che permettono ad una macchina connessa in rete di diventare un vero e proprio erogatore di servizi online. La seguente guida può essere utile per tutti coloro che per la prima volta passano da un piano hosting (dalla pappa pronta insomma), ad una soluzione molto più personale e per certi versi affidabili. Non vedremo come trasformare il nostro computer di casa in un server (ci sarebbero troppe questioni su DNS, NameServer e IP statici da analizzare, cosa che farò in un altra guida).

Passo 1: Connessione alla macchina remota

Passaggio fondamentale è collegarsi tramite SSH (secure shell), alla macchina remota (VPS o server dedicato) che dobbiamo andare a configurare, volendo possiamo anche creare un web server locale (e questa cosa possiamo farla anche con il nostro computer di casa o dell’ufficio, con un raspberry o una qualsiasi board computer), ma in questo caso non sarà necessario effettuare nessun collegamento ssh bensì semplicemente basterà aprire un terminale.

Apriamo un qualsiasi terminale UNIX e digitiamo:

1
ssh root@ip_macchina

dove andremo a sostituire con ip_macchina l’indirizzo IP della macchina alla quale vogliamo collegarci.

Se la connessione andrà a buon fine ci verrà chiesto di memorizzare una chiave e di inserire una password (quella dell’utente root della macchina remota alla quale ci stiamo connettendo), ed una volta fatto ciò ci si aprirà all’interno del terminale la shell della macchina remota, proprio come se stessimo eseguendo un terminale su quella macchina.

Se avete un sistema Windows e volete collegarvi tramite SSH potete utilizzare il programma Putty.

Passaggio 2: Installazione di Apache

Andiamo ora ad installare il cuore del nostro web server, Apache2, che sarà la piattaforma per il nostro web server. Ci sono anche altri programmi come Apache, ad esempio ngix, ed in seguito vedremo come e quando utilizzarne uno o l’altro.

Da terminale digitiamo:

1
sudo apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert

Ad installazione conclusa dobbiamo ora attivare Apache2 (che  è un servizio), per attivarlo/disattivarlo/riavviarlo basterà digitare da terminale

4
5
6
7
sudo service apache2 start //per avviarlo
sudo service apache2 stop //per fermarlo
sudo service apache2 reload //per applicare modifiche alle impostazioni
sudo service apache2 restart //per riavviarlo

Ora navigando verso l’indirizzo IP della nostra macchina, o andando su localhost (se siamo in locale digitate semplicemente localhost nell’indirizzo del browser oppure il vostro IP locale 127.0.0.1), dovremmo vedere una schermata del genere:

schermata-da-2016-09-20-08-43-59

Se ciò accade significa che abbiamo fatto tutto correttamente e che Apache è stato correttamente installato. A questo punto possiamo già mettere online un sito web in HTML, senza utilizzare PHP o un database, ma raramente i siti web moderni vengono realizzati senza questi due elementi.

Passaggio 3: Installazione di PHP

Installando questo applicativo andremo a rendere compatibile il nostro web server con tutto ciò che utilizza PHP per funzionare.

Da terminale digitiamo:

sudo apt-get install libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-idn php-pear php5-recode php5-snmp php5-sqlite php5-xmlrpc php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-ps php5-pspell

Php però non è solo questo, ci sono moltissimi altri pacchetti che contengono ulteriori altre funzioni di compressione o interpretazione, spesso capita che installando sul nostro web server un servizio che utilizza php, come un qualsiasi CMS, ci venga chiesto di installare un determinato componente php, in questo caso sarà molto semplice “individuare” il nome del componente tra quelli installabili sul nostro sistema, digitiamo da terminale

 apt-cache search php5

Questo comando mostra tutti i pacchetti nominati php5, da questi possiamo individuare ciò che ci serve e installarlo con il classico apt-get 😉

Passaggio 3: installazione di mysql

Da terminale digitiamo

sudo apt-get install mysql-server mysql-client

ATTENZIONE: L’installazione di mysql necessita di maggiori attenzioni rispetto a quelle fatte fino ad ora, ci sarà infatti chiesta una password dell’utente “root”, questa password e questo utente non hanno nulla a che vedere con il vostro sistema o con l’utente root con il quale siete autenticati, corrisponde bensì all’utente con diritti massimi su tutti i database che andrete a creare, è buona norma inserire una password complessa e ben diversa dal quella del superuser di sistema. E’ inoltre buona norma non utilizzare mai l’utente root per la gestione tramite codice di un database, è consigliabile creare un utente singolo con password propria e privilegi su un singolo database per ogni progetto che utilizza mysql che andremo a realizzare od implementare, ma a questa cosa sarà dedicata una guida intera 😀

Così come per apache, anche mysql è un servizio, da terminale digitiamo quindi

sudo service mysql start //per avviarlo
sudo service mysql stop //per bloccarlo

 

Una volta fatto ciò il nostro sistema LAMP è pronto!

In una prossima guida vedremo come andare a configurare in modo personale PHP, Come creare Host virtuali (più siti su un solo server) e come andare ad aumentare la sicurezza della nostra installazione di mysql. Per ora andiamo a capire come modificare il “nostro” sito web attuale, ossia la pagina di default di apache che abbiamo visto in precedenza.

Basterà semplicemente andare a modificare o sostituire o cancellare il file index (index.html) nella cartella di dafault di Apache2 situata in /var/www/html

Una volta giunti in questa cartella ci comporteremo come se fossimo su un normalissimo hosting!

Attenzione: Bisogna prestare particolare attenzione ai permessi che vengono utilizzati sui file presenti all’interno della cartella pubblica HTML (quella di cui parlavamo sopra), possono infatti verificarsi errori 503 o peggio, possiamo dare accesso non volendo alla modifica di file ed esecuzione di script a personaggi che non dovrebbero. Per stare tranquilli possiamo utilizzare un gruppo utente con i permessi “perfetti” o quasi per il web, il gruppo in questione è www-data, con il relativo utente www-data (valido per debian e derivate).

Digitiamo da terminale

sudo chown -R www-data:www-data /var/www/html

In questo modo applicheremo questi “permessi” (o meglio ownershp) all’intera cartella pubblica html, è importante ricordare che ogni qualvolta creeremo una cartella all’interno di quella pubblica “html”, con un utente diverso da www-data, dovremmo riapplicare nuovamente l’ownership onde evitare problemi o errori.

Craccare una rete wifi

Con questo articolo vedremo come è possibile craccare una rete wifi in modo da potervi accedere. Inutile ricordarvi che questa guida è a semplice scopo informativo/educativo. Possiamo utilizzarla per testare la sicurezza del nostro router in modo da migliorarla ed evitare l’accesso a terzi non autorizzati.
Per effettuare questa operazione utilizzeremo una distribuzione linux molto conosciuta chiamata “kali”, che presenta al suo interno una serie di tool molto comodi per effettuare test di varia natura sulla sicurezza.

Possiamo installare questo sistema sul nostro compuuter, utilizzare una sua live o utilizzarlo da macchina virtuale, il risultato e i procedimenti da eseguire non cambieranno.

La prima operazione che dobbiamo eseguire è quella di aprire un terminale di root, possiamo farlo aprendo un qualsiasi terminale e scrivendo

1
su root

a questo punto ci verrà chiesta una password, la inseriamo e premiamo invio.
Se non dovessimo sapere quale sia la password di root e abbiamo un utente con privileggi di amministratore possiamo digitare

1
sudo passwd root

a questo punto ci sarà chiesto di inserire una nuova password per l’utente di root. Una volta modificata facciamo nuovamente “su root”, inseriamo la nuova password e dovremmo quindi trovarci una shcermata di terminale in cui compare la seguente cosa:

pic1digitiamo ora il comando “cd” (senza virgolette ovviamente) per evitare di trovarci nella cartella sbagliata e poi il comando “clear “per ripulire la scermata corrente.
Una vaolta fatto ciò possiamo iniziare il nostro attacco! 😀
L’attacco consiste nel monitorare tutti gli accessi e i pacchetti scambiati da dispisitivi che si connettono e disconnettono dalla rete alla quale vogliamo effettuare l’accesso. In questo articolo non mi dilungherò sui tecnicismi di questa operazione, sul procedimento dell’handshake e sul funzionamento dei router, ma mi limiterò ad elencare i procedimenti da affrontare. Il tutto per rendere questa guida leggibile anche per i meno esperti. Per chiunque volesse avere informazioni più dettagliate sarà possibile commentare questo articolo per aprire poi una discussione.

Passaggio uno: i dati della rete da attaccare

digiatiamo il seguente comando:

1
airmon-ng

Questo software ci permette di visualizzare tutte le schede di rete wireless che supportano la modalità monitor (se non otteniamo risultati dobbiamo procurarci una scheda che supporti la modalità monitor, un adattatore usb o via dicendo, ma in tutti i moderni laptop è presente questa modalità quindi difficilmente dovreste avere problemi)

pic2

Dobbiamo ora prestare molta attenzione al nome che la nostra inferfaccia ha, nel mio caso wlan0.
Una volta identificata l’interfaccia di rete possiamo attivare la modalità monitor sulla suddetta interfaccia che andrà ad analizzare tutte le reti wifi presenti nel suo raggio d’azione per carpirne i segnali e i dati. Per fare cio digitiamo:

1
airmon-ng start [nome dell'interfaccia]

che nel mio caso sarà:

1
airmon-ng start wlan0

Una volta fatto ciò ci troveremo di fronte ad una schermata di questo tipo

pic3E’ molto probabile che vi siano dei processi attivi che possono dare fastidio a questa modalità “monitor”, come ci suggerisce il programma stesso possiamo terminarli digitando:

1
airmon-ng check kill

Una volta fatto ciò possiamo nuovamente eseguire il comando:

1
airmon-ng start [nome interfaccia]

(nel mio caso wlan0)
ed otterremo una scermata del genere

pic4Nella foto precedente vedete  il “nuovo nome” associato all’interfaccia monitor appena abilitata, ricordiamocelo perchè a breve lo utilizzeremo, nel mio caso questo nome sarà wlan0mon.

Digitiamo ora:

1
airodump-ng [nome interfaccia monitor ]

che nel mio caso sarà:

1
airodump-ng wlan0mon

Una volta fatto ciò il programma inizierà ad elencare tutte le reti wifi presenti nel nostro raggio d’azione, una volta comparsa la rete che vogliamo attaccare possiamo premere CTRL+C per terminarne l’esecuzione.
Avremo dunque una schermata come questa

pic5Prendiamo ora nota del BSSID della rete da attaccare e del canale su cui trasmette, utilizzeremo queste informazioni nel passaggio successivo.

Passaggio 2: analisi della rete da attaccare

Una volta terminato il passaaggio 1 possiamo dedicarci all’analisi esclusiva della rete che desideriamo violare (sempre a scopi educativi ovviamnte <3). Sempre da terminale root andiamo a creare una cartella che ci servirà per contenere una serie di file di varia natura che serviranno al programma per proseguire nell’attacco, per creare questa cartella digitiamo il comando:

1
mkdir attacco_wifi

dove “attacco_wifi” sarà il nome della cartella che utilizzeremo a questo scopo.
Una volta fatto ciò possiamo digitare:

1
airodump-ng -c [canale] --bssid [bssid] -w /root/attacco_wifi/ [interfaccia monitor]

che nel mio caso sarà:

1
airodump-ng -c 6 --bssid AE:5F:3E:D4:94:8F  -w /root/attacco_wifi/ wlan0mon

Comparirà quindi la schermata d’analisi relativa alla rete che vogliamo attaccare

pic6Ora non dobbiamo far altro che aspettare che un dispositivo qualsiasi si connetta a questa rete, è una procedura che richiede un po di pazienza ma quando vià succede lo vedremo comparire in questo modo

pic7

Ovviamente questa opzione non è totalmente pratica, infatti potrebbe essere possibile che nessun nuovo dispositivo si connetta e disconnetta alla rete, cosa che a noi invece serve per proseguire nell’attacco.
Come fare allora? Semplice! Forziamo i dispositivi già connessi a disconnettersi per poi riconnettersi e captare un po’ dei dati che ci servono per procedere.
Per fare ciò utilizzamo un altro interessante programma che si chiama aireplay-ng che ci permetterà di inviare dei particolari pacchetti chiamati pacchetti di deauth e che forzeranno il o i dispositivi connessi a disconnettersi per ritentare la connessione.
Apriamo una nuova schermata di terminale assicurandoci che quella presente nella foto precedente resti attiva e digitiamo il seguente comando:

1
aireplay-ng –0 2 –a [router bssid] –c [client bssid] [nome interfaccia]

che nel mio caso sarà:

1
aireplay-ng –0 2 –a AE:5F:3E:D4:94:8F –c 00:F4:6F:42:2F:B1 wlan0mon

Una volta digitato questo comando nel secondo terminale dobbiamo attendere che nel primo terminale aperto e in cui è in esecuzione airodump-ng compaia “l‘handshake“.
Ovviamente i passaggi sopra elencati sono da ignorare se l’handshake fosse già comparso, la procedura di aireplay-ng va usata soltanto per forzare nuovi collegamenti fino a trovare l’handshake. (Nel mio caso ad esempio non è servito).
Una volta eseguito aireplay dobbiamo semplicemente attendere che l’hasndshake compaia nel terminale di airodump-ng. (Mi raccomando che questo HANDSHAKE ci serve!)

Passaggio 3: Cracckiamo la password!

Una volta ottenuto l’handshake segnamocelo e procediamo a chiudere tutti i terminali aperti assicurandoci prima di aver fatto CRTL+C su tutti loro per terminare anche gli eventuali programmi in esecuzione.
Apriamo ora un nuovo terminale (sempre root) ed iniziamo il passaggio finale della nostra guida.
Digitiamo il seguente comando:

1
aircrack-ng -a2 -b [bssid] -w /root/attacco_wifi/wpa.txt /root/attacco_wifi/*.cap

che nel mio casò sarà:

1
aircrack-ng -a2 -b AE:5F:3E:D4:94:8F -w /root/attacco_wifi/wpa.txt /root/attacco_wifi*.cap

(Notare che il file wpa.txt, che deve essere posizionato all’interno della cartella attacco_wifi, deve contenere una wordlist o dizionario di password! Per generare un dizionario possiamo utilizzare programmi come crunch di cui a breve sarà fatta una guida o possiamo reperirle online).

Una volta fatto ciò dobbiamo attendere…*sig*… può volerci anche molto e la cosa varia in base alla grandezza e precisione del dizionario che stiamo utilizzando, ma una volta completata la nostra operazione comparirà una schermata di questo genere che ci comunica che la password è stata trovata.

pic8Una volta ottenuta la password ricordiamoci di ripristinare correttamente i servizi di rete disattivando la modalità monitor con il seguente comando:

1
airmon-ng stop [nome interfaccia monitor]

che nel mio caso sarà:

1
airmon-ng stop wlan0mon

e riattivando i servizi di gestione della rete con il comando:

1
./etc/init.d/networking start

e poi con il comando:

1
./etc/init.d/network-manager start

Hello world!

Nasce oggi questo piccolo spazio, spero diventi un’area di divulgazione con tutorial e informazioni scoppiettanti ed interessanti, con un po’ di codice qua e la e qualche piccola recensione di servizi e spazi.