mainSlogopaceclick Blog  · informatica · elettronica · astronomia..

Connettersi ad un RaspberryPi tramite Remote Desktop Protocol (RDP) usando XRDP

Chi ha detto che per usare un RaspberryPi si debba per forza usare SSH o un monitor esterno con tastiera dedicata?

Un modo semplice per avere a disposizione il Desktop (o Scrivania) connettendosi comodamente dal proprio PC è tramite il Remote Desktop Protocol.

undefined

In questo modo il Raspberry potrà essere lasciato connesso solamente alla Ethernet, senza altri fastidiosi cavi.

1. Connettersi al Raspberry tramite SSH

Preparare il Raspberry con una distro Debian come Raspbian (o Kali Linux), e connettersi tramite SSH.
Per connettersi tramite SSH usare Putty (su Windows) o il comando (da Linux):

ssh pi@192.168.x.x

dove al posto di x dovrete inserire il vero ip del raspberry; la password di default di raspbian per l'utente 'pi' è 'raspberry'.

Una volta connessi, eseguite un update dei packages con

sudo su
apt-get update

2. Installare XRDP

apt-get install xrdp

3. Avviare il servizio

service xrdp start
service xrdp-sesman start

4. Impostare l'auto avvio del servizio all'accensione

update-rc.d xrdp enable

5. Connettersi tramite RDP

A questo punto il Raspberry è pronto, possiamo anche dimenticarci l'SSH.

Apriamo l'applicazione (client) desktop remoto che preferiamo, e connettiamoci in via remota.

undefined

Usare un RaspberryPi come server DNS locale per tradurre indirizzi locali in IP locali tramite DnsMasq

Il server DNS consente di convertire la stringa dell'URL cercato sul browser, nell'indirizzo IP del server remoto.

Di norma ogni ISP ha i propri server DNS autoritativi (che vengono interpellati per ogni richiesta dal router), molte volte tuttavia si opta per l'uso di quelli di Google o degli OpenDNS, andando a modificare manualmente il proprio Sistema Operativo o il router stesso.
E' infatti risaputo che i server DNS di Google siano molto più veloci nelle risposte, e abbiano molti più indirizzi in cache rispetto a quelli degli ISP sparsi per il mondo.

undefined

Un server DNS locale può servire a due utilizzi:

  1. velocizzare la navigazione, tenendo in cache gli indirizzi che vengono maggiormente richiesti dalla rete casalinga (o aziendale), e inoltrando la richiesta verso un server DNS esterno solo in caso di necessità (esempio un indirizzo non i cache)
  2. consentire la traduzione di DOMINI locali in IP locali, funzione interessantissima in ambito aziendale ma anche casalingo

Consideriamo per esempio l'uso di un NAS locale, sull'indirizzo 192.168.1.8:

ogni volta che ci dovremmo connettere, avremmo da inserire tale (scomodo) IP.

Avendo un server DNS autoritativo locale:

potremmo invece decidere di assegnare un NOME A DOMINIO a tale IP, come ad esempio nas.myhome, e fare si che venga risolto sull'indirizzo IP del NAS stesso.

In questo modo nel browser (quando siamo in rete locale, ma anche tramite VPN) non ci resterà che digitare nas.myhome, come se fosse un normalissimo sito web pubblico.

In aggiunta, usando questo metodo, sarà possibile anche incrementare la sicurezza, andando ad impostare una blacklist globale sui nomi a dominio che non vogliamo vengano risolti.

Ovviamente perché tutto funzioni dobbiamo fare in modo che TUTTE le richieste DNS locali vengano risolte dal nostro server DNS autoritativo locale, e che questo non vada mai offline, per evitare impossibilità di risolvere indirizzi.

Una comoda soluzione a basso costo può essere l'uso di un RaspberryPi, vediamo come configurarlo.

Mini guida per il setup di RaspberryPi

Preparare il Raspberry con una distro Debian come Raspbian, e connettersi tramite SSH (o aprire il terminale se connessi con tastiera e schermo).
Per connettersi tramite SSH usare Putty (su Windows) o il comando (da Linux):

ssh pi@192.168.x.x

dove al posto di x dovrete inserire il vero ip del raspberry; la password di default di raspbian per l'utente 'pi' è 'raspberry'.

Una volta connessi, eseguite un update dei packages con

sudo apt-get update

Adesso assegnate un IP statico al raspberry:

sudo nano /etc/network/interfaces

il file deve sembrare così

auto lo

iface lo inet loopback

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

auto wlan0
iface wlan0 inet static
address 192.168.1.190
gateway 192.168.1.1
netmask 255.255.255.0

auto eth0
iface eth0 inet static
address 192.168.1.190
gateway 192.168.1.1
netmask 255.255.255.0

(ovviamente al posto di .1.190 e .1.1 inserite gli indirizzi che vi competono)

salvare con Ctrl+X, e premendo Y, confermando con Invio, 
poi riavviare con

sudo reboot

e controllare che l'indirizzo sia corretto con il comando

ifconfig 

 

Configurare il server DNS Locale

Installare DNSMASQ:

sudo apt-get install -y dnsmasq

adesso il servizio DNS sarà già attivo, andiamo ad interromperlo per poterne modificare la configurazione

sudo service dnsmasq stop

configuriamo adesso il server DNS con il comando

sudo nano /etc/dnsmasq.conf

si aprirà l'editor di testo sul terminale, 
il file di configurazione mostrato sarà tutto commentato (con '#' all'inizio di ogni frase),
potete anche lasciare tutto intatto per consultazioni future, l'importante è inserire all'inizio le stringhe di configurazione che seguono:

# DOMAIN CONFIG
domain=raspberry.myhome
resolv-file=/etc/resolv.dnsmasq
min-port=4096

# FORWARDING DNS SERVERS
server=8.8.8.8
server=8.8.4.4
server=208.67.222.222
server=208.67.220.220

# LOCAL CACHE SIZE
cache-size=10000

# LOCAL ADDRESSLIST
address=/nas.myhome/192.168.1.8

# BLACKLIST
address=/double-click.net/127.0.0.1

# qui di seguito tutto il file originale..

NOTE

  • i 4 server di forwarding sono rispettivamente 2 Google e 2 OpenDns
  • il dominio .myhome può essere cambiato a piacere, ma NON deve essere un dominio usato pubblicamente (esempio .net), evitare anche il famoso .local
  • potete inserire nella Local-AddressList, tutti gli indirizzi locali che volete risolvere in IP (locali o anche pubblici)
    -ovviamente è anche possibile eseguire override di indirizzi comuni (DNS Spoofing)
    -nel mio caso ho inserito la risoluzione dell'IP del mio NAS su un dominio personalizzato (.myhome)
    -potete aggiungere una nuova riga per ogni altra mappatura
  • tutti i domini inseriti nella blacklist non risulteranno più raggiungibili dalla rete locale (perchè mappati sul loopback)

salvare con Ctrl+X, e premendo Y, confermando con Invio.

Riavviare il servizio dnsmasq

service dnsmasq start

NOTA: DnsMasq è in grado di fungere anche da server DHCP, ma nel nostro caso lo useremo solamente come server DNS.

Adesso il nostro server DNS locale è pronto per poter essere usato

Per poter usare il nostro server DNS locale, andiamo sul PC o sul router nella sezione di configurazione DNS, ed inseriamo come server DNS primario l'indirizzo IP statico precedentemente assegnato al nostro Raspberry.

E' buona norma inserire anche un server DNS secondario, usato in caso di malfunzionamento o irraggiungibilità del nostro server DNS locale, possiamo ad esempio inserire quello di Google (secondario: 8.8.4.4).

Facciamo un test da un computer in LAN con i comandi:

nslookup google.it
nslookup nas.myhome

la risposta sarà corretta se proveniente dal server DNS locale, ovvero del tipo:

Server: 192.168.1.190
Non-authoritative answer:
Name: google.it
Address: 216.58.205.67

oppure

Server: 192.168.1.190
Non-authoritative answer:
Name: nas.myhome
Address: 192.168.1.8

in ogni caso avendo impostato un DNS secondario, in caso di disconnessione del raspberry, sarà comunque possibile navigare tranquillamente.

Indirizzo IP pubblico: cosa è, come individuarlo da terminale o da prompt, e come funziona il DDNS per raggiungere un dispositivo dall'esterno

Un computer o un qualsiasi dispositivo, quando connesso ad una rete (LAN), viene identificato tramite un indirizzo IP assegnato dal router.

L'indirizzo, di solito nella forma 192.168.X.Y viene rilasciato dal DHCP del router per identificare i vari dispositivi ad esso connessi.

Tuttavia essendo il router stesso connesso alla rete internet (WAN), e fungendo da gateway per l'instradamento delle richieste locali verso l'esterno (NAT), anch'esso avrà un indirizzo IP rilasciato dal proprio gestore di telefonia (ISP).

undefined

Questo indirizzo IP viene comunemente chiamato IP Pubblico (o External IP), perché identifica il primo dispositivo connesso alla rete locale (quindi il primo da contattare per raggiungere la propria LAN dall'esterno).

A seconda dei gestori, tale IP può essere in forma statica o dinamica, ovvero può essere fisso ad ogni connessione del router, o cambiare.
In genere gli ISP rilasciano IP pubblici dinamici, per evitare identificazioni degli utenti che potrebbero portare ad attacchi.

In questo modo, ogni volta che accendiamo il router, esso richiederà un nuovo IP pubblico al gestore (che come detto sarà ogni volta diverso).

Come identificare facilmente l'IP pubblico?

1. tramite router, nella pagina di status principale vedremo tutte le impostazioni correnti, compreso l'IP pubblico del provider

2. tramite browser, attraverso uno dei tanti siti web appositi, come ad esempio: whatismyipaddress.com

3. tramite bash linux, con il comando:

 curl ifconfig.me

che mi sembra il più facile da ricordare, in alternativa comunque esistono anche altri (in ogni caso avremo bisogno di curl installato)

 curl ipecho.net/plain ; echo
 curl -s checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'

4. tramite prompt di windows, con il comando:

 nslookup myip.opendns.com. resolver1.opendns.com

oppure tramite powershell:

 Invoke-WebRequest ifconfig.me/ip


A cosa mi serve conoscere il mio IP pubblico

Può servire nei casi in cui abbiamo bisogno di raggiungere un dispositivo connesso alla nostra LAN (esempio: a casa) dall'esterno (esempio: da lavoro).

Per fare questo bisognerà impostare nel router un port-forwarding, ovvero 'aprire' una determinata porta sull'IP interno del dispositivo.

In tal modo basterà digitare (da qualsiasi parte del mondo), IPPubblico:PortaAperta per inoltrare la richiesta di connessione attraverso il nostro router, verso il dispositivo locale.

Dynamic DNS come funziona

Poichè come detto prima, l'IP pubblico nella quasi totalità delle volte cambia ad ogni accensione del router, come faccio a sapere ogni volta che IP è stato assegnato se sono fuori casa?

Esistono dei servizi di DDNS, ovvero dynamic DNS, che consentono di ovviare a tale problema.
Consentono inoltre di evitare di doversi ricordare l'indirizzo IP stesso (una scomoda sequenza di numeri), in favore di una parola a piacere.

Ce ne sono diversi, come ad esempio noip.com (che di solito è supportato dalla quasi totalità dei router; in ogni caso prima di scegliere un servizio in favore di un altro, verificate se supportato dal vostro router).
Dopo essersi registrati al sito, occorrerà scegliere un indirizzo DNS personalizzato (ovvero un nome a dominio usato per reindirizzarvi al vostro IP).
Esempio: provaaccesso.noip.com

A questo punto basterà configurare nella apposita sezione del router questo DDNS.
Il router stesso provvederà ad aggiornare il DDNS ad ogni cambio di IP Pubblico!

In questo modo, da qualsiasi parte del mondo voi siate, potrete accedere alla vostra rete domestica (LAN) semplicemente digitando:

provaaccesso.noip.com:PortaAperta

dove PortaAperta è la porta precedentemente aperta sul router, con destinazione l'IP del dispositivo che vogliamo raggiungere

 

ATTENZIONE ALLA SICUREZZA:

come tutti sappiamo esporre i dispositivi alla rete senza alcun firewall non è mai consigliabile.
I router di solito applicano il firewall di default proprio per evitare che qualcuno acceda ai vostri dispositivi locali dall'esterno.

Tuttavia molte, moltissime volte gli utenti non cambiano la password di accesso al router stesso, rendendo disponibile ad un eventuale attaccante l'accesso a tutte le impostazioni di rete dall'esterno.
Per questo motivo, se configurate un DDNS, assicuratevi che la vostra rete sia ben protetta (argomento per il quale non basterebbe un solo post per descrivere tutti i passaggi).

Assicuratevi che il router abbia una password sicura, che abbia il firewall attivo, e, magari, che sia bloccato l'accesso alle impostazioni di rete dall'esterno (dalla WAN).

 

Phishing portato a livelli estremi sfruttando Punycode: come funziona, come prevenire ed essere sicuri dei siti web aperti tramite SSL

Punycode è un sistema di codifica che serve a rappresentare una sequenza di caratteri unicode tramite una sequenza di caratteri ASCII, per rendere possibile l'uso di tali sequenze nei nomi di dominio, senza dover modificare infrastrutture e standard esistenti.

In questo modo si possono gestire nomi di dominio internazionalizzati (IDNA) aggiungendo all'inizio della stringa punycode i caratteri 'xn--'.

Ad esempio, inserendo come indirizzo xn--google.com, vedremo il browser mostrare la stringa convertita in caratteri cinesi:

undefined

La traduzione di sequenze Punycode nella codifica originaria è a carico dello user agent (applicazione installata sul computer dell'utente che si connette al server) nel browser .

Il problema è che come tutti i nomi a dominio internet registrati, è possibile creare delle sequenze punycode ad-hoc per mostrare all'utente una stringa convertita totalmente a piacere.

Ad esempio, se inseriamo nel browser la stringa (procedete solo a vostro rischio e pericolo) punycode "xn--80ak6aa92e.com", la vedremo istantaneamente venire convertita in "apple.com".

Ovviamente il sito aperto non sarà quello ufficiale Apple, ma in realtà sarà sempre il sito "xn--80ak6aa92e.com", solo che il nostro browser ci visualizzerà il testo transcodificato in ASCII.

In breve il browser viene tratto in inganno, e con lui l'utente, vediamo l'esempio:

se inseriamo:

undefined

e premiamo invio, avremo in risposta:

undefined

da notare la presenza di un certificato SSL (DV) sul sito fasullo, che crea un FALSO senso di sicurezza

 

LA DIFFERENZA CON QUELLO VERO

undefined

in questo caso il certificato SSL (OV o EV) certifica l'effettiva corrispondenza dell'azienda.

 

Il fenomeno del 'phishing' (tipo di truffa effettuata su internet, specialmente a mezzo e-mail) cerca sempre nuove strategie per trarre in inganno gli utenti, spingendoli a cliccare su link che SEMBRANO essere affidabili ma che in realtà REINDIRIZZANO verso pagine web spesso dannose.

Si tratta di attacchi di social-engineering nei quali un malintenzionato cerca di ingannare la vittima convincendola a fornire informazioni personali, dati finanziari o codici di accesso, fingendosi un ente affidabile in una comunicazione digitale.

PRIMA REGOLA: PREVENZIONE

Quando ricevete email di dubbia provenienza, diffidate dal cliccare sui link proposti, specialmente se legati in qualche modo ad istituti bancari o di credito.
Fare specialmente attenzione all'indirizzo di provenienza, e prima di cliccare su un link, controllare quale sia la sua effettiva destinazione.

Esempio:

un link visualizzato come "apple.com", potrebbe in realtà essere destinato al precedente "xn--80ak6aa92e.com" (questo potrebbe derivare da una formattazione HTML costruita apposta per l'occasione)

in questo caso tuttavia, basterà posizionarsi con il mouse sopra al link e controllare il vero collegamento leggendo il popup che appare (di solito) in basso a sinistra del programma di posta

 

SECONDA REGOLA: CONTROLLO

Una volta cliccato su un link, come fare a sapere che il sito aperto è effettivamente quello sicuro?

L'unica arma di difesa in questo caso è il certificato SSL, che può essere di 3 tipi:

  • DV Domain Validation: garantiscono una connessione cifrata con il server, ma non garantiscono sulla corrispondenza aziendale al nome visualizzato.
  • OV Organization Validation & EV Extended Validation: oltre alla cifratura con il server, garantiscono verifica sull'effettività dell'azienda.

 riguardando le immagini precedenti potrete notare la differenza.

 

Come visualizzare in chiaro le password immesse dai browser o nascoste da pallini o asterischi

Tutti i browser di ultima generazione consentono di memorizzare le password immesse dall'utente, in modo da auto inserirle nei moduli alla successiva visita del sito.

Lo faceva Internet Explorer, ma adesso anche Firefox, Edge, e Chrome.

undefined

Per IE ed Edge, le password sono cifrate nel Vault di Windows, per Firefox e Chrome invece no:
in quest'ultimo per esempio non è possibile impostare una 'master password' per cifrare i dati memorizzati.

Ma la questione è, serve veramente? No.

Perchè in ogni caso, il browser, quando andrà a riempire il modulo web, dovrà comunque inserire la password in chiaro, come se la stessimo inserendo noi da tastiera.

Quindi anche cifrando il database delle password salvate si potrebbe facilmente risalire alle originali usando un semplice browser.

Come risalire alla password immessa se compare come serie di pallini o asterischi?

Basta aprire il browser in cui abbiamo memorizzato la password, ed aprire il sito.

A questo punto lasciare auto completare i campi dal browser, la password apparirà come una serie di pallini:

undefined

Adesso, basta cliccare con il destro sul campo della password, e selezionare 'ispeziona elemento'.
NOTA: a seconda del browser in uso è possibile che non compaia tale voce, in ogni caso si può sempre aprire il pannello 'strumenti di sviluppo' con F12; da qui selezionare il pulsante che ha come icona un puntatore, ed in seguito andare a selezionare il campo della password.

Si aprirà il pannello con il codice DOM della pagina (in modo estremamente semplificato è il sorgente con anche le modifiche dell'utente) con già selezionata la riga del codice in cui viene immessa la password.

Avrà uno stile come questo:

undefined

 

Non dobbiamo fare altro che doppio clic sul parametro type="password" e modificarlo semplicemente in type="text" (premere poi il tasto Invio).

undefined

In questo modo vedremo istantaneamente nella pagina web i pallini scomparire e convertirsi in testo: la nostra password. 

Creare sparse files, con lunghezza a piacere in Windows e Linux

Un file sparso (dall'inglese sparse file), è un tipo di file per cui si cerca di occupare in maniera più efficiente lo spazio del file system nei casi in cui il file sia prevalentemente vuoto.

Il vantaggio dei file sparsi consiste nel fatto che lo spazio fisico nel file system viene allocato solo quando è effettivamente necessario: si risparmia spazio e si possono creare file di grandi dimensioni anche se lo spazio libero nel file system è insufficiente.

undefined

Tra gli svantaggi dell'uso di file sparsi:

Essi possono diventare frammentati, in quanto lo spazio nel file system viene allocato a mano a mano che le aree vuote sono riempite, e quindi non è necessariamente contiguo. Le informazioni sullo spazio libero nel file system possono essere fuorvianti se si considera la dimensione apparente dei file sparsi.

Uso

Un uso tipico dei file sparsi è per il testing delle connessioni di rete o per i benchmark degli hard disk: si creano file di grandi dimensioni con un semplice comando, che poi saranno utilizzati per capire la velocità di copia/trasferimento dei vari dispositivi.

Creazione su Windows

Da prompt dei comandi, dirigersi in una cartella

cd C:

eseguire il comando

fsutil file createnew <filename> <length>

la lunghezza deve essere inserita in Byte, esempio

fsutil file createnew myfile.txt 1000000000
(=1GB)

fsutil file createnew myfile.txt 2500000000
(=2.5 GB)

undefined

Creazione su Linux

dd if=$INPUT-FILE of=$OUTPUT-FILE bs=$BLOCK-SIZE count=$NUM-BLOCKS

Dove:

  $INPUT-FILE deve sempre essere /dev/zero per file di grandi dimensioni (vuoti).
  La dimensione totale del file sparso sarà $BLOCK-SIZE * $NUM-BLOCKS.
  Il nuovo file sarà chiamato come $OUTPUT-FILE.

Esempio:

dd if=/dev/zero of=file_sparso bs=1024 count=1

bs è la dimensione di uscita in Byte.

Installare e configurare Apache Web Server su Ubuntu o su Debian

Per creare un web server basato su Apache, appoggiandosi ad una comune macchina Ubuntu o Debian, procedere come segue.

undefined

1. Installare Apache

sudo apt-get update
sudo apt-get install apache2

Per verificare se correttamente installato, andare sul sito

localhost

dovreste trovare scritto 'It works!'

2. Configurare

Tutti i file di configurazione si trovano in

"/etc/apache2"

si può visualizzare tramite terminale con 

cd /etc/apache2
ls -F

apparirà

apache2.conf    envvars       magic             mods-enabled/     sites-available/
conf.d/ httpd.conf mods-available/ ports.conf sites-enabled/

tra i quali, i più importanti

apache2.conf: la configurazione del webserver
sites-available/: contiene i virtual host

3. Aggiungere i file del sito da esporre

Come includere i propri files php (o html) in modo da poterli esporre ad Apache, posizionarli nella cartella:

/var/www

Nota

La cartella necessita di permessi di root per essere modificata.
E' possibile (ma sconsigliato) modificare questi permessi con il comando:

sudo chown <user> /var/www

dove al posto di <user> dovrete inserire il vostro nome utente (questo comando va applicato anche a tutti i file predefiniti all'interno).
Si potrà in questo modo copiare direttamente da Nautilus.

Per copiare i file da terminale, senza modificare i permessi della suddetta cartella (consigliato per questioni di sicurezza), il comando è:

sudo cp <file da copiare> /var/www

Abilitare WebGL 2.0 sui principali browser

Per le canvas create in WebGL 1.0 non ci sono problemi, tutti i browser sono già automaticamente compatibili, tuttavia se visualizzate un immagine nera, senza possibilità di utilizzo, vuol dire che la canvas viene gestita da WebGL versione 2.0 o successiva.

Per abilitare WebGL 2.0 e le altre versioni sperimentali di WebGL sul proprio browser seguire queste istruzioni.

undefined

Chrome

Si può abilitare nella sola apertura corrente con:

--enable-unsafe-es3-apis

nella linea di comando dell'applicazione, esempio:

C:\Program Files (x86)\Google\Chrome\Application\chrome.exe --enable-unsafe-es3-apis

Altrimenti per una attivazione permanente, andare su

about:flags

ed attivare

"Estensioni bozza WebGL"
"Prototipo di WebGL 2.0"

Il contesto 2.0 può essere creato con l'ID “webgl2”.

Firefox

Andare su

about:config 

e creare una nuova preferenza booleana con il nome:

webgl.enable-prototype-webgl2

creare a questo punto un contesto compatibile

var gl = somecanvas.getContext("experimental-webgl2");

Edge

Si possono seguire le informazioni sulla documentazione ufficiale.

(fonte)

Come calcolare gli Hash MD5, SHA1, SHA-256, CRC32 in Windows, Linux, Mac e online

Cosa sono

Gli Hash sono usati in informatica per mappare una stringa (una sequenza di bit) di lunghezza arbitraria in una stringa di lunghezza predefinita.

E' una sorta di 'firma' di un documento elettronico. Per ogni stringa si può calcolare un hash, quindi ogni stringa diversa avrà hash diverso.
Tuttavia calcolando 2 volte l'hash di uno stesso file (stringa) si avrà come risultato lo stesso output.
Hash calcolati con algoritmi diversi, ovviamente daranno diverso risultato.

undefined

Vengono usate per verificare l'integrità dei file (usati per questo anche in informatica forense).
Per esempio quando scaricate una ISO di Windows, sotto il link per il download troverete la corrispondente chiave SHA1.

undefined

Ebbene, una volta scaricato sul PC, per verificare che il file sia integro (privo di errori di trasmissione o di manomissioni volontarie per via di attacchi MITM) basterà ricalcolare l'hash in locale e confrontarlo con la stringa fornita online.

Approfondimento sugli Hash, qui.

Windows 

E' possibile usare CertUtil:

CertUtil -hashfile c:\path\filename.ext <algoritmo>

al posto di <algoritmo> inserire uno tra questi: MD2, MD4, MD5, SHA1, SHA256, SHA384, SHA512.

In alternativa è possibile utilizzare l'utilità File Checksum Integrity Verifier (FCIV) per calcolare i valori hash crittografici MD5 o SHA-1 di un file.

FCIV -md5 -sha1 c:\path\filename.ext

Non è possibile generare CRC32, tuttavia per Windows esiste anche un utilissimo programma gratuito di Nirsoft,
HashMyFiles, prelevabile dal relativo sito, che permette il calcolo da GUI anche con tale algoritmo.

undefined

Linux

Per calcolarlo di una stringa:

$ echo abcdefg.. | md5sum
$ echo abcdefg.. | sha1sum

Per il calcolo CRC32 di un file:

$ cksum /path/filename.ext

Per il calcolo MD5 o SHA di un file:

$ md5sum /path/filename.ext
$ sha1sum /path/filename.ext
$ sha256 /path/filename.ext
$ sha512 /path/filename.ext

Per verificarlo:

$ sha256sum -c /path/filename-CHECKSUM

in questo caso, se il calcolo coincide, verrà dato un OK.

Mac OS

md5 /path/filename.ext
shasum -a 1 /path/filename.ext
shasum -a 256 /path/filename.ext
crc32 /path/filename.ext

Calcolo online

E' possibile anche usare dei tool online.
Uno di questi è sicuramente OnlineMD5.com, che ci permetterà di calcolare gli hash MD5 e SHA sia per file che per stringhe di testo direttamente da browser e senza caricare fisicamente il file.

Come visualizzare il product key di Windows 10 per una installazione pulita

undefined

1.

Aprire un prompt dei comandi come amministratore, lo trovate con un click destro sul logo del menu start.

2.

Digitare il seguente comando:

wmic path SoftwareLicensingService get OA3xOriginalProductKey

e premere invio.

Alternativa da PowerShell:

aprire una PowerShell come amministratore ed eseguire i comandi

Set-ExecutionPolicy RemoteSigned
.\GetProductKey.ps1


Il product key di Windows attualmente installato verrà visualizzato.

E' possibile utilizzare questo codice per una installazione pulita (es. da ISO).

Nota: Windows 10 utilizza un metodo di attivazione diverso dai precedenti, infatti viene generata una firma digitale del computer e viene salvata sui server Microsoft. In tal modo alla reinstallazione, in via teorica non ci sarà bisogno di alcun product key (viene riconosciuto lo 'stesso' computer).
Questo tuttavia succede per tutti quei PC che hanno ricevuto un aggiornamento da un vecchio sistema a Windows 10.
Per quanto riguarda i computer acquistati con già Windows 10 a bordo, questo è invece un buon modo per salvare il codice e poterlo rimettere uguale alla successiva installazione.

Cosa sono i link simbolici tra cartelle e come usarli per aumentare spazio sull'hard disk del sistema operativo

Quando installiamo un grosso programma su Windows, vengono creati dei link nel registro di sistema che gli fanno tenere traccia della posizione reale dei file eseguibili.

Per questo motivo, se spostiamo un programma in una partizione secondaria, smetterà di funzionare (i link si interrompono).

Come fare a garantire la continuità di questi collegamenti?
Con Giunzioni o Link Simbolici.

undefined

Il comando mklink fa credere a Windows che i file nella cartella siano tutti memorizzati nel percorso originario, quando in realtà sono stati spostati in una partizione esterna.

Come fare

1.

Selezionare la cartella contenente il software da spostare altrove e procedere a tale operazione.

2.

Creare un 'link simbolico' aprendo un prompt dei comandi con i diritti di amministratore.
Il comando mklink consente di fare in modo che le richieste di accesso per i file presenti nella directory che conteneva originariamente i file dell'applicazione vengano automaticamente reindirizzate verso la cartella di destinazione (quella in cui sono realmente).

3.

Eseguire il comando:

mklink /D "cartella di reindirizzamento" "cartella contenente realmente i file"

Esempio (dopo lo spostamento del programma pippo da C: a D:):

mklink /D "C:\Program files\pippo" "D:\App\pippo"

In questo modo:

  • Tutti i riferimenti alla vecchia cartella 'pippo' in C: rimarranno validi, i file saranno 'pescati' da D:, non saranno presenti realmente in C:
  • Tutte le operazioni di spostamento, copia, eliminazione, avranno effetto sulla directory reale (in D:).

Esempi

1.

Come vedere la cartella G:\Foto dentro la cartella Immagini in C:

cd %userprofile%\Pictures (per entrare nella cartella Immagini di Windows)
mklink /D Foto G:\Foto

2.

Come vedere la cartella Video che è su un'unità di rete nella cartella Video Pubblica in C:

cd C:\users\public\video
mklink /D NetworkVideo \\DiscoDiRete\Video

3.

Come creare una cartella sul Desktop e vederla su OneDrive

cd C:\users\<nome utente>\OneDrive
mklink /D CartellaSincronizzataDaDesktop C:\users\<nome utente>\Desktop\CartellaSincronizzata

Note

1.

dir /al

Con tale comando si potrà vedere la lista ti tutte le giunzioni o link eseguiti o presenti in una cartella. 
Prima di usarlo posizionarsi nella cartella da verificare.

In alternativa ci sono dei programmi come NTFSLinksView di NirSoft:

undefined

2.

mklink /J ...  genera una 'junction'

mklink /D ... genera un 'link simbolico'

La differenza sostanziale è che le junction possono essere create anche sui singoli file ma non supportano i percorsi relativi (i link simbolici solo su cartelle ma supportano anche percorsi relativi); in sostanza io preferisco e consiglio di usare link simbolici su cartelle.

3.

mklink ... funziona su Windows 7 - 8 - 10

linkd ... analogo per Windows XP - 2000

Allineamento delle partizioni da HDD verso SSD, come si verifica

Quando compriamo un nuovo SSD per installare da zero un sistema operativo, non ci sono problemi. 
Windows provvederà ad effettuare da subito il corretto allineamento.

undefined

Tuttavia se si esegue una migrazione di dati da un HDD verso un SSD, può capitare (anzi capita spesso) che la partizione non venga allineata come dovrebbe.

Questo perché negli HDD vengono lasciati liberi i primi 63 blocchi, negli SSD invece i primi 64 (prima dell'inizio della 1° partizione).

 

undefined

Gli SSD sono composti da 'pagine' e i dati vengono scritti in 'blocchi'; questi ultimi vengono suddivisi in settori, e dovrebbero essere scritti a partire dall'inizio di una pagina fisica.
Come analogia, sarebbe come iniziare ad incidere sul lato A di un nastro non all'inizio, così da dover finire gli ultimi minuti sul lato B: c'è uno spreco di spazio, ed una significativa perdita di prestazioni.
Il controller ogni volta deve leggere da 2 pagine differenti, anzichè da 1 (nell'esempio del nastro, la perdita di tempo sarebbe il 'girarlo').

Allineare l'SSD quindi porta ad un incremento notevole delle prestazioni R/W.

NOTA: l'allineamento deve essere fatto una sola volta, quando si passa da un HDD a un SSD tramite l'uso di programmi di clonazione.

1. Verificare se c'è bisogno di allineamento

Andiamo su un prompt dei comandi (click destro sul logo di windows del menu start), e digitiamo:

C:\Windows\System32> msinfo32
[premere invio]

Andiamo nella sezione

 Componenti > Archiviazione > Dischi

nella sezione di destra apparirà una lista di dati per ciascuna partizione,
a questo punto per la prima partizione (Disco #0, Partizione #0), leggete il valore in Byte chiamato

'Offset avvio partizione'

undefined

A questo punto aprite la calcolatrice di Windows e provate a dividere quel valore per 4096.

  • Se il numero è divisibile (il risultato è un numero intero qualsiasi, esempio 512), il disco è allineato.
  • Se il numero non è divisibile (il risultato è un decimale, esempio 284.65), il disco è da allineare.

2. Allineare l'SSD 

Non è necessario reinstallare tutto, si può optare per dei tool di partizionamento gratuiti come MiniTool Partition Wizard 

Nel tab di sinistra troverete il pulsante 'Align all partitions', in quello di destra selezionate il disco da allineare (il vostro SSD con il SO), e confermate con Apply in alto.

undefined

Il tool vi indicherà di riavviare poiché il disco è in uso e che eseguirà l'allineamento al riavvio.

Consigliamo come sempre di eseguire un backup dei vostri dati PRIMA di eseguire un'operazione come questa.

PC lento? Come controllare i processi che intasano l'interrupt di sistema e le richieste DPC

Se ci capita di vedere il PC lento e, aprendo Task Manager, se vediamo che l'interrupt di sistema consuma molta CPU, come possiamo stabilire quale è il driver da rimuovere?

Cosa è:

Infatti l'interrupt è una richiesta asincrona che esegue un componente hardware in seguito ad un suo evento sincrono (di esecuzione).
In caso di interrupt, la CPU sospende l'esecuzione in corso e si dedica a quella richiesta, per poi tornare alla precedente.

Se però da Task Manager vediamo che l'interrupt di sistema supera il 15-20-25% vuol dire che qualcosa non funziona, e la CPU riceverà inutili richieste che vanno poi ad inficiare le prestazioni.

Soprattutto in caso di richieste DPC (Deferred Procedure Call) sollevate da dispositivi ad alta priorità come mouse o schede audio (il mouse viene prima/ha maggiore priorità di altri programmi in background per esempio), in caso di malfunzionamento dei relativi driver si possono anche verificare blocchi del sistema.

In tal caso però è difficile individuare il driver specifico perché nel Task Manager vediamo solo una 'somma' del carico sulla CPU di tutte le richieste degli interrupt.

La soluzione:

Esiste un programma, LatencyMon (scaricabile qui), che ci consente di esplorare le varie richieste alla CPU sollevate dagli svariati drivers installati.

undefined

Come si usa:

Dopo aver aperto il software, cliccare sul pulsante Drivers ed ordinare la lista in base alla colonna DPC Count (cliccandoci sopra).
In questo modo avremo in alto i driver che sollevano più richieste di interrupt ('di attenzione') alla CPU.
In alternativa è possibile basarsi anche sull'ultima colonna, chiamata Highest Execution, che ci informa su 'quanto tempo' viene occupata la CPU dalle richieste del driver specifico.

Una volta individuato il driver incriminato, il consiglio è di provare ad aggiornarlo, di reinstallarlo o di passare ad una versione precedente dello stesso (da Gestione Dispositivi di Windows).

Come si crea una password sicura e facilmente ricordabile

Molto spesso ci viene detto che le password più usate sono sempre le stesse (esempio: 123456, password, qwerty, ecc..), o comunque riconducibili a date di nascita o momenti memorabili della propria vita.

undefined

Ebbene, usare personaggi pubblici o luoghi reali non è comunque una buona idea: esistono infatti dei software (come John the Ripper) che sono in grado di usare dei dizionari enormi, in grado quindi di eseguire un brute-force (vedi qui) e trovare anche password più complesse in pochi minuti.

Ad esempio: per scoprire 'login' o 'password' o 'america' ci vuole solo qualche secondo (!).

undefined

Navigando su internet abbiamo la necessità di creare decine di password (che sarebbe meglio avere tutte diverse tra loro!), e ci viene sempre consigliato di crearle con dei pattern abbastanza complessi.

Ad esempio
, dal pattern <maiuscola><minuscola><numero><carattere speciale>, possiamo creare Ab0', oppure se di 8 caratteri abaB00-?

Saprete bene che ricordarsi anche 5 di queste password è molto difficile (e portarsi dietro un foglietto NON è la soluzione giusta).

Come fare allora per ricordarsi una password molto complessa?

Se lo sono chiesti anche degli Hacker Etici (White Hat) della Red Team Security, azienda di sicurezza del Minnesota.

Il gruppo dice che per avere una password forte (che resiste ad attacchi brute force), tutto quello che dobbiamo fare è inventarci una frase di senso compiuto o comunque facile (per noi) da ricordare, e da questa, tenere SOLO le lettere iniziali.

Ad esempio: "A luglio sono stato 7 giorni al mare", diventerebbe "Alss7gam".
Oppure, sempre da quella frase, tenere le prime 2 lettere: "Alusost7gialma" (in tal caso solo noi sapremo di dover prendere n lettere).

Questo tipo di password sono praticamente imprevedibili, perchè non sono parole di senso compiuto, e per ciò non presenti anche in ipotetiche rainbow-table.

Avremo quindi una password abbastanza complessa da essere accettata da molti siti, abbastanza unica nel suo genere e quindi imprevedibile.

Inoltre abbiamo raggiunto il nostro scopo, ricordarcela!

:D

5 funzioni utili che può fare un Raspberry Pi in rete (FTP/TFTP/WEB/SAMBA/SYSLOG)

Vediamo come fare ad impostare un Raspberry Pi per poterlo usare come server nella rete locale.

Di seguito troverete una lista di comandi e azioni da eseguire passo passo per configurare il dispositivo.

undefined

[1] SERVER FTP

mkdir -p /home/pi/files/
chmod 777 /home/pi/files/
sudo bash

apt-get install pure-ftpd -y
pure-pw useradd pi -u pi -g pi -d /home/pi/files/

impostare come password: raspberry, poi

pure-pw mkdb
ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/60puredb
service pure-ftpd restart

 

[2] SERVER TFTP

wget http://downloads.sourceforge.net/project/tftp-server/tftp%20server%20single%20port/opentftpspV1.66.tar.gz
tar xvf opentftpspV1.66.tar.gz
cd opentftp/

g++ opentftpd.cpp -oopentftpd -lpthread
mkdir /home/pi/files
chmod 777 /home/pi/files/

sudo bash

cp opentftpd /usr/bin/
vi /etc/opentftp.ini

nel file dovrete verificare o aggiungere il seguente contenuto

[LISTEN-ON]

[HOME]
/home/pi/files

[TFTP-OPTIONS]
username=pi
ThreadPoolSize=10
Read=Y
Write=Y
Overwrite=Y
/usr/bin/opentftpd -i /etc/opentftp.ini

 

[3] WEB SERVER

mkdir -p /home/pi/files/
chmod 777 /home/pi/files/
sudo bash
apt-get install apache2 -y
rm -rf /var/www/html/
ln -s /home/pi/files/ /var/www/html

 

[4] SAMBA SERVER

mkdir -p /home/pi/files/
chmod 777 /home/pi/files/
sudo bash
apt-get update
apt-get install samba -y
rm /etc/samba/smb.conf
vi /etc/samba/smb.conf

nel file dovrete verificare o aggiungere il seguente contenuto

[global] netbios name = server server string = server workgroup = WORKGROUP security = user
[server] comment = server path = "/home/pi/files/" public = yes guest ok = yes read only = no
pdbedit -a -u pi

impostare come password: raspberry, poi

service smbd restart

 

[5] SYSLOG SERVER

mkdir -p /home/pi/files
chmod 777 /home/pi/files
sudo bash
apt-get install syslog-ng -y

modificare il file config che si trova in:

/etc/syslog-ng/syslog-ng.conf

cambiare le impostazioni di permessi del file config da 640 a 644:

options { chain_hostnames(off); flush_lines(0); use_dns(no); use_fqdn(no); owner("root"); group("adm"); perm(0644); stats_freq(0); bad_hostname("^gconfd$");
};

inserire nel file anche queste 3 linee di configurazione:

source s_net { udp(ip(0.0.0.0) port(514)); };
destination d_files { file("/home/pi/files/${YEAR}_${MONTH}_${DAY}__${HOST}"); };
log { source(s_net); destination(d_files); };

salvare il file modificato e riavviare il server:

service syslog-ng restart

 

[PLUS] RADIUS SERVER 

sudo bash
apt-get update
apt-get install freeradius -y

modificare (con vi <file>) il file config che si trova in:

/etc/freeradius/clients.conf

nel file dovrete verificare o aggiungere il seguente contenuto

client 0.0.0.0/0 {
 secret = {RADIUS server shared key}
 shortname = anyone
}

modificare (con vi <file>) il file config che si trova in:

/etc/freeradius/users

nel file dovrete verificare o aggiungere il seguente contenuto

testuser Cleartext-password := "password"


[PLUS] DHCP SERVER

sudo bash

impostare un IP statico nel file

/etc/dhcpcd.conf

inserire ad esempio

static value
interface eth0
static ip_address=192.168.0.1/24
static routers=192.168.0.254
static domain_name_servers=8.8.8.8

riavviare il raspberry

reboot

aggiornare

apt-get update
apt-get install isc-dhcp-server -y

modificare il file config per DHCP che si trova in

/etc/dhcp/dhcpd.conf

inserire ad esempio

subnet 192.168.0.0 netmask 255.255.255.0 {
 range 192.168.0.20 192.168.0.40;
 option routers 192.168.0.254;
 option domain-name-servers 8.8.8.8;
}

se volete anche inserire opzioni aggiuntive in base al vendor, aggiungete

option vendor-class-identifier "AppleInc";
option vendor-encapsulated-options "192.168.1.100";

avviare il server DHCP con il comando

dhcpd -cf /etc/dhcp/dhcpd.conf

Come ripristinare il visualizzatore Foto di Windows 7 in Windows 10

Con Windows 8 e 10 è arrivato anche un nuovo visualizzatore di Immagini, che porta anche funzioni di ritaglio e ritocchi di base.

undefined

Se tuttavia, come me, siete un po' nostalgici del vecchio, snello e collaudato Visualizzatore di foto di Windows 7, potete ripristinarlo con questa guida.

Nota: la guida è sicura, non andrà a sovrascrivere il nuovo viewer, renderà solamente disponibile il 'vecchio' nella tendina Apri con.. starà a voi poi selezionare quello che più preferite!

undefined

 Si devono apportare delle modifiche al registro (proseguite a vostro rischio e pericolo).

Poichè le modifiche al registro sono troppo lunghe per essere eseguite a mano, ho creato un file automatico (che potrete aprire con il blocco note, per essere sicuri di quello che andrà a fare).

  1 - Scaricatelo da qui.

  2 - Apritelo, e cliccate su conferma l'unione.

In questo modo, si abiliteranno al 'vecchio' visualizzatore, le seguenti estensioni:

  .JPEG
  .PNG
  .GIF
  .BMP

Per i .TIFF è già configurato, lo si può verificare da:
pannello di controllo > programmi predefiniti > imposta programmi predefiniti > visualizzatore foto di windows > scegli i valori predefiniti per questo programma

Si potrà adesso selezionare il visualizzatore desiderato, dal pannello apri con:

undefined

Come accedere alle cartelle condivise di VirtualBox da Ubuntu o in generale da Linux

Se Usate spesso VirtualBox, vi sarete trovati nella situazione di dover spostare dei file dalla macchina Host (il sistema principale) alla macchina Guest (il sistema emulato).

undefined

Per fare questo, nel caso si usasse Windows come Guest (nella VM), non ci sono problemi.
In tal caso basterà creare una cartella condivisa con auto-montaggio, e aver installato le VirtualBox Guest Additions.
In questo modo ad ogni avvio del Guest, si troverà la cartella montata 'in rete', che rimanda a quella del sistema fisico.

undefined

Nel caso si dovesse usare Linux come sistema Guest le cose si complicano, ed è necessario un passo aggiuntivo, vediamolo.

Passo 1 - Installare le Virtual Box Guest Additions

All'interno della macchina virtuale Linux (Ubuntu)

Aprire un terminale e Acquisire i diritti di root con:

sudo su

Aggiornare la lista dei packages

apt-get update

Installare le VirtualBox Guest Additions

apt-get install virtualbox-guest-dkms

Riavviare il sistema (la VM), e poi spegnerla per il prossimo passo.

Passo 2 - Creare la cartella condivisa

Da sistema Host, creiamo la cartella condivisa e selezioniamola dalle impostazioni della macchina virtuale:

undefined

 

Passo 3 - Diamo i permessi di accesso

Per poter aprire la cartella appena condivisa, dobbiamo dare il seguente comando (su Ubuntu, sistema emulato):

sudo adduser [username] vboxsf

In questo modo si danno privilegi di accesso all'utente corrente nel gruppo di virtualbox.
Ovviamente al posto di [username] si deve inserire il proprio user nel sistema:
se ad esempio alla sinistra del prompt nel terminale troviamo scritto leo@leo-VirtualBox:~$ , sarà leo.

Per verificare se si è stati aggiunti eseguire (solo per verifica, non necessario):

id [username]

nella lista che compare, dovrebbe esserci anche 999(vboxsf).

E' adesso possibile accedere alla cartella condivisa, nel sistema Guest, al percorso:

Home > Devices > Computer > Media

All'interno potrete trovare tutte le cartelle montate. Quelle di VirtualBox avranno il prefisso "sf_" prima del nome.

Questa procedura potrebbe anche permettere l'uso (sperimentale) del Drag and Drop Bidirezionale.

Inoltrare dati da seriale virtuale ad un indirizzo di rete tramite socket TCP

Vediamo come inoltrare dati da seriale virtuale verso un indirizzo di rete.

undefined

Passo 1 - Scegliere la seriale da utilizzare

E' possibile visualizzare la lista delle seriali virtuali disponibili nel sistema con il comando:

dmesg | grep tty


Passo 2 - Socat

Socat è un utilissimo strumento già presente in molte distro Linux, che consente di manipolare ed eseguire il forwarding di pacchetti di rete.

Aprire un terminale ed acquisire i privilegi di ROOT (importante).

Eseguire questo comando per inizializzare l'inoltro dei pacchetti in arrivo 
sulla seriale ttyS0, verso l'indirizzo IP di loopback, sulla porta 60001:

socat pty,link=/dev/ttyS0,raw tcp:127.0.0.1:60001&

Ovviamente basterà modificare il comando con la seriale e l'indirizzo IP:porta desiderati.

Un altro possibile uso è il binding (unione) di due differenti seriali:

socat PTY,link=/dev/ttyS10 PTY,link=/dev/ttyS11


Passo 3 - Invio/Ricezione con Python

3.1

Per poter ricevere i dati, dobbiamo predisporre un listener sull'indirizzo IP di destinazione (non trattato in dettaglio in questo articolo). Nel nostro caso usiamo semplicemente netcat, in ascolto sempre sulla porta 60001 (attenzione che la porta scelta non sia gìà in uso).
Diamo il comando (in un nuovo terminale con privilegi di ROOT):

nc -l 60001

oppure

nc -v localhost 60001

3.2

Prepariamo un semplice script per scrivere su seriale (utilizzando il Python) e salviamolo con il nome sender.py:

#START (serial forwarder)
import sys
import time
import os, pty, serial

#configure the serial connections
print "\nSTARTING SERIAL PRINT\n"

# open serial port
ser = serial.Serial('/dev/ttyS0', 9600, rtscts=True, dsrdtr=True)
print "SERIAL FORWARDER > (remind to use this as a root!)\n"

# write test string
ser.write("\n > serial test for an ALARM! \n go go ALARM! go :) ")

# close serial port
ser.close();
#END

eseguiamolo da un nuovo terminale (con privilegi di ROOT) con il comando seguente:

python sender.py

NOTA: installiamo pyserial se necessario (se andando ad eseguire il passo precedente riceviamo un errore):

sudo apt-get install python-serial

Potrete adesso vedere la connessione di socat, verso l'IP di destinazione. 

Ulteriori informazioni su socat, al sito ufficiale.

Connection strings per database, una pratica lista per categorie

Una pratica lista con le stringe di connessione più usate e divise per categorie:

 

Microsoft SQL Server 20xx

STANDARD SECURITY
Server=myServerAddress;Database=myDataBase;User Id=myUsername;
Password=myPassword;
TRUSTED CONNECTION
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;
CONNECTION TO AN INSTANCE
Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;
Password=myPassword;
CONNECTION VIA IP ADDRESS
Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;
Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;
ASYNCHRONOUS PROCESSING
Server=myServerAddress;Database=myDataBase;Integrated Security=True;
Asynchronous Processing=True;
WITH MARS (Multiple Access Result Set)
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;
MultipleActiveResultSets=true;

Access

STANDARD SECURITY
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb;
Persist Security Info=False;
WITH PASSWORD
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb;
Jet OLEDB:Database Password=MyDbPassword; 

Azure

STANDARD
Server=tcp:[serverName].database.windows.net;Database=myDataBase;
User ID=[LoginForDb]@[serverName];Password=myPassword;Trusted_Connection=False;
Encrypt=True;
WITH MARS (Multiple Active Result Set)
Server=tcp:[serverName].database.windows.net;Database=myDataBase;
User ID=[LoginForDb]@[serverName];Password=myPassword;Trusted_Connection=False;
Encrypt=True;MultipleActiveResultSets=True;

MySql

STANDARD
Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;
SPECIFIC TCP PORT
Server=myServerAddress;Port=1234;Database=myDataBase;Uid=myUsername;
Pwd=myPassword;
MULTIPLE SERVERS
Server=serverAddress1, serverAddress2, serverAddress3;Database=myDataBase;
Uid=myUsername;Pwd=myPassword;
USING ENCRYPTION
Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;
SslMode=Preferred; 

SQLite

BASIC
Data Source=c:\mydb.db;Version=3; 
WITH PASSWORD
Data Source=c:\mydb.db;Version=3;Password=myPassword;

Oracle

STANDARD
Data Source=MyOracleDB;Integrated Security=yes; 
AUTHENTICATION
Data Source=MyOracleDB;User Id=myUsername;Password=myPassword;
Integrated Security=no; 
PROXY
Data Source=myOracleDB;User Id=myUsername;Password=myPassword;
Proxy User Id=pUserId;Proxy Password=pPassword;

IBM

DB2 STANDARD
Server=myAddress:myPortNumber;Database=myDataBase;UID=myUsername;PWD=myPassword;
INFORMIX STANDARD
Database=myDataBase;Host=192.168.10.10;Server=db_engine_tcp;Service=1492;
Protocol=onsoctcp;UID=myUsername;Password=myPassword;

 

Il database completo lo potete trovare su connectionstrings.com

Come verificare se un indirizzo email esiste ed è raggiungibile

A quasi tutti sarà capitato di ricevere almeno una volta una email di rifiuto dal Message Delivery Status (o Subsystem), a seguito di un invio verso un indirizzo con problemi o non esistente.
 

Quindi per verificare se effettivamente un indirizzo 'riceve' si potrebbe semplicemente inviargli una email (con attivo il flag 'notifica di recapito') ed aspettare la consegna.

Tuttavia come fare per verificarlo SENZA inviare alcuna mail?

 undefined

Ci viene in aiuto il client Telnet di Windows, vediamo come fare:

Passo 1

Innanzitutto abilitiamo Telnet (di default disattivato), andando su pannello di controllo, programmi e funzionalità, Attivazione o disattivazione delle funzionalità di Windows (in alto a sinistra).

Nella finestra che apparirà dovremo semplicemente abilitare la spunta su 'Client Telnet' e confermare con ok.

Passo 2

Apriamo un prompt dei comandi (su Windows 8.1 e 10, cliccando con il tasto destro sul logo del menu start).

Digitiamo nel prompt il comando

nslookup -q=mx <dominio da testare>

esempio, per verificare un indirizzo @gmail:

nslookup -q=mx gmail.com

premiamo Invio

In questo modo otterremo una lista dei server MX (Mail eXchanger) per tale dominio.
Questi dati vengono forniti da sistema DNS (vedere il post dedicato per capire come funziona) e rappresentano le macchine addette allo scambio e gestione della posta. 

undefined

Copiare in un file esterno di appoggio il vero nome del server MX,
che potrete trovare dopo la dicitura 'mail exchanger' (ad es: mx.gmail.com).

Passo 3

Sempre sul prompt digitare SENZA fare errori (perchè usando Telnet non si può cancellare!) il comando:

telnet <dominio salvato> 25

esempio:

telnet mx.google.com 25

 premere invio per avviare la sessione Telnet.

Passo 4

Adesso siamo 'connessi con il server' e possiamo interagirci tramite Telnet.

Diamo il comando 

helo hi

(helo è giusto con una 'elle' sola) 

In seguito

mail from: <qualcosa@qualcosa.com>

e

rcpt to: <indirizzodatestare@providerchestiamotestando.com>

seguiti da invio.

Ad esempio, coerentemente con i precedenti:

mail from: fittizio@testando.com
rcpt to: aldorossi@gmail.com

Passo 5

Il server risponderà a quest'ultima nostra richiesta dicendoci se l'indirizzo esiste o meno.

Se il server MX risponderà con "OK" o "Recipient OK", significa che la verifica dell'email è andata a buon fine e che quindi l'indirizzo indicato esiste.
Altrimenti verrà restituito un messaggio d'errore (ad esempio "sorry, no mailbox").

 

Riepilogo

Tutti i passi in un terminale (esatto, anche da terminale di linux o mac è possibile eseguire gli stessi steps):

undefined

Come verificare la sicurezza dei certificati installati in Windows

Sigcheck è un utile tool rilasciato gratuitamente da Microsoft per verificare che nel proprio computer non siano presenti certificati digitali malevoli.

Potete scaricarlo dal sito Ms-TechNet.

Come si usa

Una volta scaricato il tool ed estratto lo .zip, apriamo una finestra di prompt sulla cartella
(premendo il tasto MAIUSC e cliccando con il tasto destro su un'area vuota all'interno della cartella).

undefined

Nella finestra di prompt che appare inserire il comando:

sigcheck -tv

e premere INVIO.

Alla richiesta di autorizzazione alla scansione, premere I Agree.

Saranno così elencati i certificati rilevati nel computer e per ciascuno sarà indicata la sua validità.

Eliminare un certificato non valido

Nel caso avessimo trovato un certificato non valido, potremo eliminarlo dal computer aprendo la console di gestione certificati di Windows:

1- Cliccare con il tasto destro sul logo del menu start di Windows e aprire 'Esegui' (in alternativa, premere la combinazione Win+R)

2- Inserire ed eseguire il comando

certmgr.msc

3- Aprire la sezione "Autorità di certificazione radice attendibili" e in seguito aprire "Certificati".

4- Selezionare e rimuovere il certificato malevolo.

Altri usi

Il tool può essere usato anche per scansionare una cartella in cerca di file non firmati digitalmente.

Ad esempio con il comando

sigcheck -u -e c:\windows\system32

verrà scansionata la cartella system32 e verranno elencati i file firmati o meno.

Come leggere le partizioni in ext3 e ext4 da Windows

Nel caso avessimo bisogno di accedere a una partizione con file system ext2, ext3 o ext4 da Windows (magari perchè la abbiamo usata fino a quel momento con Linux), ci troveremo a dover ricorrere ad un piccolo trucchetto.

 undefined

MONTAGGIO TRAMITE SHELL

Chi preferisce non installare alcun software in Windows, può usare una distribuzione Linux LIVE (avviabile da chiavetta USB).

Consiglio Xubuntu 13.04 o successivo (xubuntu.org) che è una versione compatta derivata da Ubuntu Linux: per installarlo su una penna USB potete ricorrere ad utility come YUMI o SARDU.

Per montare una partizione ext3 o ext4, si potranno digitare da terminale i comandi:

sudo mkdir /mnt/hd1
sudo mount -t ext3 /dev/sdaXXX /mnt/hd1

DOVE: al posto di sdaXXX dovrà essere specificato l'identificativo della partizione da montare.


Per ottenere informazioni sulle partizioni:

sudo apt-get install parted
sudo parted -l

 

ACCEDERE TRAMITE GUI

Nel caso volessimo ricorrere ad un software apposito, con interfaccia grafica, potremmo optare per:

DiskInternals Linux Reader - www.diskinternals.com 

oppure

Paragon ExtFS - www.paragon-software.com

Utilizzando questi software, sarà possibile collegare un hard disk contenente partizioni Linux ad un sistema Windows usando un connettore SATA libero oppure un adattatore USB-SATA.

Come rimuovere il contrassegno di partizione attiva in sistemi Windows

Se vi siete trovati nella condizione di gestire i dischi e le partizioni in un sistema Windows (XP-->10), avrete sicuramente usato il tool di sistema 'Gestione Disco'.

undefined

In particolare, quando creiamo o modifichiamo partizioni di sistema (quelle dove è presente un sistema operativo), abbiamo la necessità di contrassegnarle come 'attive'.
Questa operazione non è difficile, basta cliccare con il destro sulla partizione e andare su 'Contrassegna come attiva'.

Si nota subito però che non esiste un comando tipo 'rimuovi contrassegno attivo'.

Come fare per rimuovere un contrassegno (active mark in inglese)?

1.
Aprire il prompt dei comandi come amministratore.
(Start>Esegui>cmd su 7 | click destro su logo windows su 8.1/10)

2. Dare il comando

diskpart

3. Si aprirà il tool, eseguire

list disksf

per visualizzare la lista dei dischi,

select disk NUMERO

per aprire un disco (vedi nota in fondo),

list partition

per visualizzare la lista delle partizioni del disco scelto,

select partition NUMERO

per aprire la gestione della partizione scelta

4. Infine eseguire

inactive

per contrassegnarla come 'non attiva'.

Se a questo punto controllate sul tool 'gestione disco' il mark 'attivo' sarà rimosso dagli attributi della partizione.

 

NOTA
Al momento della selezione disco/partizioni potreste essere in difficoltà perché non trovate i nomi delle partizioni.
Per capire su quale partizione eseguire la procedura, controllate il numero disco e il numero partizione (confrontando anche le dimensioni di questi) dal tool 'gestione disco' (i numeri corrispondono anche sul tool da cmd).

Twitter: un override per modificare automaticamente l'altezza del widget

Se avete embeddato il widget di Twitter in una vostra pagina avrete notato che l'altezza è fissa e non si adatta automaticamente con la pagina.

Se avete la necessità che si ridimensioni automaticamente aggiungete questo script alla fine della pagina web.

 

<script>
    $(document).ready(function () {
        detectFr();
    });
    function detectFr() {
        if ($("#twitter-widget-0").length > 0) {
            setTimeout(function () {
                setH();
            }, 250);
        } else {
            setTimeout(function () {
                detectFr();
            }, 500);
        }
    }
var panningBottom = 100; //<< INSERIRE IL VALORE CHE PIU' SI ADATTA AL VOSTRO HEADER
    function setH(){
        $('.twitter-timeline, .twitter-timeline-rendered').css('height', window.innerHeight-panningBottom);
    }
</script>

In questo modo, al caricamento, lo script andrà a cercare l'iframe in cui viene caricato il widget da Twitter, e ne imposterà l'altezza in base a quella della pagina madre.

Se avete un header più o meno alto, potete aumentare o meno il valore di panning-bottom per evitare che l'altezza impostata sia troppo lunga.

Ovviamente per funzionare, lo script ha bisogno dell'embed di jQuery.

 

Come cambiare l'indirizzo MAC alla scheda di rete su Windows

L'indirizzo MAC (o MAC Address) viene usato dalle schede di rete per identificarsi nell'interscambio di informazioni.

MAC è l'acronimo di Media Access Control ed è costituito da un codice lungo 6 byte (48 bit).
Viene assegnato dal produttore della scheda al momento della sua creazione ed è univoco per ogni scheda.
I primi 3 byte sono l'identificativo della azienda produttrice, gli ultimi 3 rappresentano uno specifico sotto-indirizzo univoco.

undefined

L'IEEE (Institute of Electrical and Electronics Engineers) ha creato questo indirizzo prevedendone la saturazione intorno al 2100 (poiché sono disponibili 281.400 miliardi di diverse combinazioni).

Poiché ogni scheda di rete ha memorizzato un proprio indirizzo MAC, nei nostri computer equipaggiati con wifi-Bluetooth-ecc.. avremo più indirizzi. (per scoprire quali sono, salta al punto 'Verifica')

Se avessimo la necessità di cambiare il MAC di una specifica scheda di rete (per svariati motivi, come ad esempio per aggirare un filtro nel nostro router), dovremmo procedere come segue.

 

Cambiamo

Apriamo proprietà del sistema

undefined


Andiamo su Gestione Dispositivi

undefined


Cerchiamo la scheda a cui vogliamo modificare il MAC e andiamo sulle sue proprietà

undefined


Cerchiamo, da avanzate "Servizio di rete" o ("Network address")

undefined

Selezioniamo il campo vuoto e inseriamo (SENZA - o : o .) l'indirizzo MAC che vogliamo compaia.

Ad es. se vogliamo come nuovo MAC 08-00-27-00-E0-4D, mettiamo 08002700E04D.

Una volta inserito, diamo OK e RIAVVIAMO il sistema.

 

Come scegliere il MAC

Possiamo inserire praticamente qualsiasi combinazione: ecco la lista ufficiale per chiarire di cosa parlo. 

Strumenti utili

Se siamo in possesso di un indirizzo MAC del quale vogliamo maggiori dettagli, come il nome del produttore, andiamo su questo sito.

 

Verifica

Per verificare quali sono gli indirizzi MAC delle nostre schede di rete:

-apriamo il prompt come amministratori (start>cerchiamo 'cmd'>click destro>esegui come amministratore)

-diamo il comando

 undefined

 

NOTA:

come scritto all'inizio, il MAC viene memorizzato dalle case a livello firmware nei chip delle schede di rete, e non è alterabile permanentemente.

La nostra modifica sarà 'virtuale', cioè il nostro sistema 'simulerà' il MAC immesso come reale, ma non verrà alterato il MAC memorizzato nell'hardware. Il che vuol dire che a seguito di disinstallazioni driver/aggiornamenti anche del sistema, potremmo dover eseguire di nuovo la procedura.

 

Ripristinare Windows in seguito ad un errore driver o ad un update fallito

Una breve guida per aiutare a resuscitare il PC in caso non si riesca più ad avviare a seguito di aggiornamenti driver dannosi.

NOTA:

questa guida si applica anche nel caso di errore dovuto a installazione driver non compatibili con il sistema.

Errore Blue Bcreen: CRITICAL_SERVICE_FAILED.

 

undefined

 

Se siete nella condizione di non poter usare il desktop a causa della schermata blu, quello che dovete fare è accedere alla console di ripristino, possono presentarsi tre casi:

  • L'avvio risulta bloccato o su schermata blu, inserite il disco di installazione di Windows e riavviate il computer (in caso forzate lo spegnimento tenendo premuto il pulsante di accensione). Proseguire poi con le procedure sotto.
  • All'avvio del sistema si presenterà automaticamente la schermata di recovery, in tal caso proseguire direttamente con le procedure sotto.
    undefined
  • Il sistema parte solo in modalità provvisoria. In realtà siete già a buon punto perché avete comunque accesso a tutte le impostazioni. Potete avviare il prompt da lì. Se volete comunque aprire la console di ripristino, andate sul menu charm e su 'Riavvia il sistema' tenendo premuto il tasto 'Shift'.

 NOTA:

 è possibile riavviare anche il computer in modalità di 'avvio avanzato' con il comando (tramite prompt dei comandi cmd.exe)

 shutdown.exe /r /o /f /t 0

 

Una volta in modalità ripristino avrete questa schermata, andate su risoluzione dei problemi

undefined

Andate su opzioni avanzate

undefined

Il menu sarà questo

undefined

 Adesso possiamo passare al ripristino vero e proprio, da questa fase è possibile:

  • Avviare un ripristino configurazione di sistema, utilizzando un punto di ripristino precedente, nel caso questo non risolvesse il vostro problema passate al punto successivo
  • Ripristinare un immagine di sistema (che dovete aver precedentemente salvato da qualche parte), nel caso non l'abbiate fatta passate al punto successivo
  • Tentare un ripristino automatico per l'avvio di Windows. Questo non sempre funziona, soprattutto con problemi driver.
  • Usare il prompt dei comandi.

 

Usare il prompt per ripristinare

NOTA: è possibile dare questi comandi, oltre che da console di ripristino, anche da prompt a Windows avviato o da prompt in modalità provvisoria.

Una volta aperto il prompt di ripristino, noterete che state agendo sulla lettera di unità X:

Dobbiamo passare alla vera unità dove risiede il sistema operativo (X: è il montaggio della console di ripristino), ecco una sequenza di comandi per passare alla lettera corretta

X:\windows\system32>
X:\windows\system32>cd..
X:\windows>cd..
X:\>D:
D:\>

siamo passati a D: perché molte volte il sistema viene montato lì. Ma potrebbe essere anche C: o E:, per verificare di essere veramente nella partizione di sistema basta dare il comando dir

D:\>dir

apparirà una lista di cartelle, se corrispondono a quelle della radice Windows (program files, program files (x86), Windows, ecc..) allora siamo nella lettera corretta.

Adesso dobbiamo riportarci dentro a system32

D:\>cd Windows\system32
D:\windows\system32>

In questo modo possiamo accedere ai file di sistema.

Per disinstallare un update manualmente, dobbiamo conoscerne il codice (KBxxxyyy), possiamo elencare gli update installati con

wmic qfe list brief

nota: possiamo anche salvare una copia su file con i comandi

wmic qfe list brief /format:htable > "%USERPROFILE%\hotfix.html"
wmic qfe list brief /format:texttablewsys > "%USERPROFILE%\hotfix.txt"

che produrranno rispettivamente un file html o un file txt e lo salveranno nella cartella dell'utente.

In ogni caso la lista completa dei comandi WMIC è reperibile qui.

 

L'output a video sarà simile al seguente:

 undefined


Adesso possiamo procedere alla disinstallazione selettiva degli ultimi update. Scorrere l'elenco e segnarsi i codici dei KB per i quali il sistema sembra essere andato in crash.

Procedere alla rimozione selettiva (ROLLBACK):

wusa /uninstall /kb:{update ID}
esempio: wusa /uninstall /kb:980311

L'update sarà disinstallato (è possibile rimuovere tutti quelli che vogliamo).

Adesso provare a riavviare il PC e vedere se l'errore è stato corretto. (chiudere il prompt)


Alternative

Nel caso venisse ancora la schermata blu all'avvio, tornare sul prompt di ripristino, e provare ad eseguire uno scannow:

D:\windows\system32>sfc /scannow

per fare eseguire un check totale di file danneggiati/di dati corrotti o che impediscono il corretto funzionamento del sistema.

 

Se neanche questo funziona è possibile provare ad affidarsi ad uno scandisk completo (stavolta da X:)

X:\windows\system32>chkdsk D: /f /r /x

scandisk con opzione di ripristino settori danneggiati, e con forzato smontaggio dell'unità.

NOTA: inserire la lettera di unità in cui è realmente il sistema operativo, seguendo le prime fasi di questa guida.

 

Se il sistema non parte neanche dopo queste ultime procedure, credo che rimanga solamente l'opzione della formattazione e installazione pulita dell'intero sistema. Dopo ovviamente aver fatto un backup dei propri dati (seguire le guide apposite).

Come creare una cartella condivisa su Linux in pochi passi

Una semplice guida per creare una cartella condivisa accessibile e scrivibile da qualunque dispositivo in rete locale.

Valida per Ubuntu, Debian, RaspberryPi, ecc..

Attenzione: questa è una delle procedure più semplici e brevi; per creare cartelle con utenti e password la procedura si complica di non poco.

1. installare samba

sudo apt-get install libcupsys2 samba samba-common

2. creare cartella e permessi

mkdir -p /home/samba-share/allusers
chmod –R a+rwx /home/samba-share/allusers

3. editare il file di configurazione

vi /etc/samba/smb.conf

 nota:     per scrivere nel file premere “i”, per cancellare “canc”

 per salvare premere: “esc” e digitare “:wq” (che corrisponde a :writequit)

Modificare nel file:

security=user con security=share (in caso togliere il simbolo di commento)

Inserire nel file (in fondo):

[SHARED]
comment = PMS files
path = /home/samba-share/allusers
browseable = yes
guest account = nobody
guest ok = yes
write ok = yes
writable=yes
read only=no

4. riavviare il servizio

sudo /etc/init.d/samba restart

5. creare un link sul desktop (scrivania)

sudo su
cd /home/pi/Desktop
ln –s /home/samba-share/allusers

 

La cartella sarà ora visibile in LAN con permessi di Lettura/Scrittura per tutti gli utenti (cartella pubblica).

Su Spaceclick.com troverai anche una guida per installare e configurare da zero il tuo RaspberryPi.

Home