domenica 10 luglio 2022

Proteggere la password (in un applicazione desktop)

 Per vedere un esempio in C# di un "virus" che catturi i valori immessi con la tastiera si può visitare questa pagina di Microsoft https://docs.microsoft.com/en-us/archive/blogs/toub/low-level-keyboard-hook-in-c . Usando il codice scritto qui  ,  possiamo verificare che l'applicazione legge ogni carattere digitato ,l'esempio si limita a stampare  con la Console.WriteLine ma un keylogger potrebbe salvare i caratteri digitati permettendo di appropriarsi anche delle password digitate .Modifichiamo la riga 40 dell'esempio così : 

Console.WriteLine("premuto carattere: " + (Keys)vkCode ); 

eseguiamo il programma(anche solo in debug) e digitiamo qualche carattere sulla tastiera :

                                        

  Ho digitato i caratteri "p,a,s,s,w,o,r,d" e premuto il tasto "Stamp" ed il keylogger ha registrato l'attività della tastiera. Proviamo ad utilizzare la tastiera virtuale di windows ottenibile premendo la combinazione di tasti "Ctrl + Win + o" :


ho digitato i caratteri "q,w,e,r,t,y" sulla tastiera virtuale di windows ed il key logger li ha catturati senza problemi , se quindi vogliamo che dati importanti , quali ad esempio una password inserita in un textbox di un applicazione , siano più protetti , possiamo scrivere poche righe di codice per utilizzare una nostra tastiera virtuale con cui scrivere la "password" e passarla all'indirizzo del textbox che normalmente valorizziamo direttamente premendo i tasti sulla tastiera ,indispensabile comunque l'uso di un buon antivirus sul pc. 

 Per trovare l'indirizzo del box ,a cui assegneremo il valore della password digitata con la tastiera virtuale, possiamo utilizzare , ad esempio, WinSpy o WinSpy ++ (la versione attuale di Visual Studio 2022 ha sotto la voce del menu "Strumenti" Spy++)  :

                                                       


usiamo il finder tool (WinSpy) :




nella finestra Handle troviamo l'indirizzo della textbox selezionata.

Creiamo un applicazione dove gestiamo per brevità solo le password numeriche ,questo è solo un esempio , potete modificarlo ed aggiungere i caratteri alfabetici maiuscoli e minuscoli ed i caratteri speciali ,segue il form dell'applicazione, si tratta di un applicazione Windows Forms scritta in C#:


Tastiera virtuale


       
    segue il codice riferito al form soprastante :

     public partial class Form1 : Form
    {
        [DllImport("user32.dll", CharSet = CharSet.Unicode)]
        private static extern int SendMessage(IntPtr hWnd, int uMsg, int wParam, string lParam);
        const int WM_SETTEXT = 0X000C;
        public Form1()
        {  
           InitializeComponent();
        }

        private void SendMessageToTextBox(IntPtr ptr, string testo)
        {
            SendMessage(ptr, WM_SETTEXT, 0, testo);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string memoryAddress = this.textBox1.Text;
            string textBoxPasswordValue = this.textBox2.Text;
            string hex_value = memoryAddress;
            //convert from hex to integer
            int int_value = Convert.ToInt32(hex_value, 16);
                        
            IntPtr p1 = new IntPtr(int_value);
            
            this.SendMessageToTextBox(p1,textBoxPasswordValue);
        }

        private void button1_Click_1(object sender, EventArgs e)
        {
            string current=this.textBox2.Text;
            this.textBox2.Text = current + "1";
        }

        private void button2_Click(object sender, EventArgs e)
        {
            string current = this.textBox2.Text;
            this.textBox2.Text = current + "2";
        }

        private void button3_Click(object sender, EventArgs e)
        {
            string current = this.textBox2.Text;
            this.textBox2.Text = current + "3";
        }

        private void button4_Click(object sender, EventArgs e)
        {
            string current = this.textBox2.Text;
            this.textBox2.Text = current + "4";
        }

        private void button5_Click(object sender, EventArgs e)
        {
            string current = this.textBox2.Text;
            this.textBox2.Text = current + "5";
        }

        private void button6_Click(object sender, EventArgs e)
        {
            string current = this.textBox2.Text;
            this.textBox2.Text = current + "6";
        }

        private void button7_Click(object sender, EventArgs e)
        {
            string current = this.textBox2.Text;
            this.textBox2.Text = current + "7";
        }

        private void button8_Click(object sender, EventArgs e)
        {
            string current = this.textBox2.Text;
            this.textBox2.Text = current + "8";
        }

        private void button9_Click(object sender, EventArgs e)
        {
            string current = this.textBox2.Text;
            this.textBox2.Text = current + "9";
        }

        private void button10_Click(object sender, EventArgs e)
        {
            string current = this.textBox2.Text;
            this.textBox2.Text = current + "0";
        }

    }

catturiamo l'indirizzo del textbox come sopra , nel frattempo ho riavviato l'applicazione "destinataria" e quindi è cambiato l'indirizzo del textbox  :




inseriamo i valori della password e l'indirizzo del textbox nell'applicazione che invia il valore della password al textbox :  



premiamo il bottone "Aggiungi" e troveremo il textbox "destinazione" valorizzato con la nostra password senza passare dalla tastiera ed evitando i possibili keylogger

  


Per scrivere questa brevissima applicazione potete usare Visual Studio 2022 Community . In Visual Studio come tipo di progetto scegliete "App Windows Forms" . 


sabato 9 aprile 2022

BackUp , definizioni ,programmi e consigli pratici

 BackUp è il procedimento di copia dei dati che permette di conservarli in un luogo sicuro e ripristinarli all'occorrenza.

In genere si considerano 3 tipi di backup:

-completo : questo tipo di backup consiste nel fare copia di tutti i dati. Se per qualche motivo avessimo perso dei dati potremo effettuare il recupero .Questo tipo di back è dispendioso sia in termini di tempo per la sua esecuzione che di spazio su disco. Dato l'ingombro questo tipo di backup è eseguito generalmente con una cadenza non elevata.

-incrementale : con questo tipo di backup copiamo solamente i dati che sono cambiati rispetto al precedente backup ,si tratta della modalità che richiede meno spazio  

-differenziale : si salvano tutti i dati che sono cambiati rispetto all'ultimo backup completo,ogni volta si salveranno tutte le differenze rispetto al backup completo

Il ripristino : con il backup completo l'operazione è semplice in quanto basterà ripristinare l'ultimo back up completo per ripristinare i dati , con il backup incrementale il ripristino sarà più complicato in quanto dovremo ripristinare tutti i salvataggi incrementali per recuperare tutti i dati.

Oltre al back di file c'è il backup di partizioni :

il primo consiste del salvare file o cartelle di file in una delle modalità sopra descritte , il backup di partizioni permette invece di salvare (copiare) intere partizioni o dischi .

Esistono numerosi software che permettono di effettuare il backup dei dati ,di seguito ne analizzaremo alcuni freeware od opensource.

Iniziamo con Comodo BackUp ,si tratta di un software prodotto dalla Comodo ,software house nota già da molto tempo per il suo firewall freeware :

l'interfaccia è molto intuitiva e ci permette di fare delle scelte ovvero possiamo scegliere il tipo di backup e quali dischi o partizioni ed addirittura il MBR (Master Boot Record)


Possiamo scegliere quale tipo di file utilizzare per creare gli archivi , se non avete esigenze particolari consiglierei di utilizzare il formato zip.



Molto pratico anche il form dell'applicazione per gestire la schedulazione del backup :


c'è la possibilità di scegliere anche il run mode :




-Un altro software interessante è Duplicati 2.0 (beta) : si tratta di un software freeware ed opensource sotto licenza lgpl , il linguaggio maggiormente utilizzato nel progetto è c# (84.8%) , il programma è molto configurabile ( https://duplicati.readthedocs.io/en/latest/)

-Altro software opensource per il backup è Areca ( https://sourceforge.net/projects/areca/ ) ,tra le caratteristiche backup differenziale,incrementale,compressione dei dati , crittografia .

-AOMAI Backupper Standard (gratis) : qui le caratteristiche https://www.ubackup.com/it/download.html , interessante poter scegliere dopo quanti backup incrementali farne uno completo , manca in questa versione gratuita il backup differenziale.

- Paragon BackUp and Recovery CE (community edition) : permette di impostare delle strategy relative al backup ovvero si può impostare dopo quanti backup differenziali od incrementali fare un backup completo:





facile e completa la possibilità di schedulazione :



E' consigliabile eseguire il backup utilizzando un disco esterno , in questo caso nel caso si abbia una rottura hardware dovremmo poter recuperare ugualmente i nostri file. 

Per effettuare i backup ,se non si hanno problemi di tempo,consiglio di utilizzare dischi hdd e non SSD questo perchè i dischi SSD hanno una durata limitata di cicli di scrittura, ad esempio un disco di 1 tera ssd può in genere durare,approssimativamente, fino a 400 tera di scrittura , oltre questo limite il disco ,gradualmente,non funzionerà più mentre il disco "meccanico" non ha questi limiti perentori.  


giovedì 7 aprile 2022

Un sito di programmi freeware , ProgrammiFree.com

 Un sito rilevante dedicato ai programmi freeware è programmifree.com , sul sito sono recensiti molti programmi divisi per categorie ed in genere con una valutazione . A mio avviso sono particolarmente interessanti le prove comparative come quella relativa agli antivirus  che potete trovare qui https://programmifree.com/confronti/confronto-antivirus-2022.htm :  a differenza di alcune delle comparazioni che si trovano su internet qui viene fatta una prova concreta caricando un disco di virus che viene poi  analizzato dai singoli antivirus trovando la percentuale di virus rilevati.

Altra prova comparativa degna di nota è quella dei software (freeware) per eseguire il backup https://www.programmifree.com/confronti/confronto-backup.htm  , purtroppo la prova risale a qualche hanno fà ma in linea di massima le caratteristiche prese in considerazione per il confronto sono tutt'ora valide . La tabella comparativa delle caratteristiche supportate dai singoli programmi di backup rende immediato verificare la presenza delle funzioni di nostro interesse .


martedì 5 aprile 2022

Come testare ADSL e fibra

 Se ti sembra che la tua connessione ad internet sia lenta puoi utilizzare siti online che verificano quale sia la tua velocità in download ed in upload . Puoi anche usare applicazioni installate localmente sul tuo pc per recuperare i dati relativi alla connessione. Alcune regole generali possono permetterci di valutare meglio le capacità effettive della nostra connessione: 

 1) usare un cavo ethernet per collegare il computer al modem , questa soluzione è preferibile rispetto al wi-fi poiché con quest'ultimo potrebbe esserci una connessione che risente di relativi problemi di trasmissione per la presenza di muri od altri ostacoli tra il modem ed il vostro pc .


2) Non effettuare upload o download di file durante l'esecuzione del test ,verificare che non siano in corso aggiornamenti di sistema nella loro fase di download ,evitare anche la navigazione del web durante il test. Per quanto riguarda le applicazioni installabili localmente sul tuo pc windows puoi scaricare SpeedTest by Ookla qui il link,questo software rappresenta un punto di riferimento nell'ambito della valutazione della velocità delle connessioni ,esso permette di ottenere la velocità massima in download e in upload . Eseguiamo il software che si presenta così :


premiamo “Vai” ed otteniamo i risultati:


se eseguiamo più test possiamo poi andare e recuperarli cliccando sull'icona in alto a destra ,se invece clicchiamo sul nome del server, in questo caso “Uania” ,accediamo ad un ricca lista di server tra i quali poter scegliere per il nostro test:

segue la cronologia dei test :


 la lista dei server a cui connettersi per effettuare il test :


Passiamo ai tool fruibili online : questi tool presentano il vantaggio di poter raggiungere lo scopo senza installare applicazioni sul nostro pc , d'altra parte ci permettono una cronologia dei rilevamenti della velocità solo in alcuni casi ed a volte solo creando un account,quest'ultimo è il caso di Ookla che offre il suo servizio sia attraverso un applicazione web sia per mezzo dell'applicazione desktop che abbiamo sopra commentato.Ecco la versione online di Ookla :


Attualmente è disponibile una versione del servizio online di Ookla che non necessita del FlashPlayer installato e la trovate qui https://beta.speedtest.net/?noflash=1 , si tratta ,come si evince dal nome , di una versione beta ,ovvero si tratta di una versione non definitiva ma già preliminarmente testata  

-Altro web tool per misurare la velocità è M-Lab ,se si digita in google “test di velocità in internet” il primo risultato tornato dal motore di ricerca è ,ad oggi, M-Lab ,cliccando sul bottone “Esegui test della velocità” proposto da Google otteniamo :


cliccando su “scopri di più” veniamo reidirizzati ad una pagina che fornisce la spiegazione di alcuni termini utilizzati nell'ambito delle connessioni internet ,se si possiede una connessione particolarmente veloce ad esempio 1 gigabit bisogna utilizzare un altro tool poiché M-Lab supporta per ora connessioni fino a 700 megabit , da segnalare che purtroppo non è possibile scegliere il server a cui connettersi . Chi volesse approfondire questo progetto , “patrocinato" anche da Google, può visitare il sito di M-Lab https://www.measurementlab.net/ , cit. da https://speed.measurementlab.net/#/ : “Measurement Lab (M-Lab) provides the largest collection of open Internet performance data on the planet. As a consortium of research, industry, and public-interest partners, M-Lab is dedicated to providing an ecosystem for the open, verifiable measurement of global network performance. ” , inoltre i tool di misurazione di M-Lab sono opensource e questo favorisce la trasparenza del servizio.  

- SpeedOf.me : questo servizio fornisce un interfaccia che contiene le variazioni delle velocità rispetto al tempo,il massimo ed i valori medi oltre al nostro indirizzo ip su internet ed alla nostra geolocalizzazione tramite ip :


speedof.me non permette di scegliere il server a cui connettersi ma mantiene una cronologia dei risultati senza creare un account,i dati di questa cronologia sono salvati nella memoria locale del browser e sono persi qualora cancellassimo i cookie , è possibile scaricare i dati dei test di navigazione in un file csv che è apribile da Excel oppure dai corrispondenti software delle suite OpenOffice e LibreOffice .  

- TestMy.Net: si tratta di un ulteriore servizio di calcolo della velocità della nostra connessione, non è molto immediato nell'uso ma di contro ci permette diverse configurazioni possiamo scegliere il server da utilizzare e la quantità di dati da utilizzare per il test,si può anche aprire un account con il quale accedere ad un forum relativo al servizio stesso . Nel caso abbiate una connessione a consumo potrebbe proprio fare al caso vostro TestMy.Net poiché il servizio permette di scegliere la quantità di dati con cui fare il test , ovviamente se scegliete una quantità di dati molto piccola il risultato potrebbe essere meno significativo.

-Fast.Com : forse il più semplice in assoluto ,il test parte appena si visualizza la home page di Fast.Com :  



Tutti i servizi fin qui citati sono adeguati a soddisfare la nostra curiosità ed ad effettuare una verifica della velocità della nostra connessione ma se ci serve una misurazione che abbia valore legale rispetto alla velocità di connessione dobbiamo rivolgerci ad un altro strumento : 

Ne.Me.Sys. :si tratta di un tool fornito da AGCOM (Autorità per le Garanzie nelle teleCOMunicazioni) , il programma è gratuito ed opensource.Il nome stà per Network Measurement System , il programma ( qui le caratteristiche ) permette di ottenere un certificato (un pdf) alla fine della misurazione che consente di conoscere la qualità della nostra connessione ad internet ,il certificato ha valore legale e con esso possiamo fare un reclamo al nostro provider per chiedere che venga rispettata la velocità prevista dal contratto oppure dopo una seconda misurazione con NeMeSys ,che attesti ulteriormente una velocità di tramissione inferiore a quanto previsto, possiamo utilizzare il suddetto certificato per recedere dal contratto senza pagare penali (qui i dettagli delle procedure di reclamo o di recesso).

Sul sito https://misurainternet.it/misura-speedtest/ troviamo un ulteriore speedtest online semplicissimo da utilizzare, basta cliccare su “Inizia”.

Per chi non fosse soddisfatto delle soluzioni fin qui espresse potrebbe forse essere interessante il programma a riga di comando SpeedTest.Cli che potete trovare qui GitHub - sivel/speedtest-cli: Command line interface for testing internet bandwidth using speedtest.net .

 Alcuni termini di cui può essere utile conoscere il significato un pò più formalmente:

-download : questo termine ,riferito alle reti di computer, è il processo di ricezione dati da un server remoto,il termine è utilizzato anche per indicare un determinato file che è stato scaricato da un server remoto, ad esempio da un web server (remoto) potete scaricate una pagina sul vostro pc

-upload : è il processo con cui un file viene caricato su un server da un client ,ad esempio è un processo di upload il caricamento di un file dal nostro browser,ad esempio un video ad un server remoto (es. youtube)

-internet : è definito come la reti delle reti , ed in effetti può essere visto così , i computer (od altri dispositivi) che ne fanno parte comunicano utilizzando il protocollo tcp/ip ,detto anche“Internet protocol suite”, TCP è l'acronimo di “Transmission Control Protocol” mentre IP è l'acronimo di “Internet Protocol” ,il funzionamento stesso di internet è regolato da questi due protocolli 

-ping: il comando ping serve a quantificare (in millisecondi) il tempo di risposta di un server remoto(ed anche la sua non raggiungibilità) ,in pratica vengono inviati alcuni pacchetti e viene misurato il tempo di risposta dal computer remoto :



-Jitter di pacchetti: quantifica la variazione del ritardo di ricezione tra i pacchetti , se il ritardo è costante la rete non ha jitter , maggiore è il jitter e peggiore è la qualità della connessione ,valori fino 20-30 ms sono accettabili .

-Il protocollo HTTP : si tratta di un acronimo il cui significato è Hyper Text Transfer Protocol ovvero protocollo di trasmissione di un ipertesto , si tratta del principale protocollo di trasmissione dati sul web utilizzato quindi su un architettura “client server” , la navigazione sul web può essere vista come il susseguirsi di request-response tra il client ed il server . Il protocollo http si caratterizza dal fatto di essere stateless ovvero la connessione viene chiusa ogni volta che il client ha ricevuto la risorsa richiesta ,se è necessario mantenere dai dati tra una chiamata e l'altra generalmente si usano i cookie .

Passiamo al protocollo HTTPS: quest ' acronimo significa Hyper Text Transfer Protocol over Secure Socket Layer , la S stà quindi per Secure. ed infatti nel caso di HTTPS ,i dati vengono trasmessi usando HTTP all'interno di una connessione crittografata e questo garantisce che un terzo che volesse impadronirsi dei nostri dati intercettando la nostra connessione (“Man-in-the-Middle attack”) non può risalire ai dati in chiaro perchè protetti dalla crittografia.

- ADSL : l'acronimo significa “Asymmetric Digital Subscriber Line” ovvero linea asimmetrica di collegamento digitale. La linea ADSL è una connessione a banda larga , essa è asimmetrica permettendo una velocità in download superiore a quella in upload andando in contro alla più comune fruizione del web che consiste ,generalmente, più nello scaricare risorse (pagine,programmi) che nel caricare file verso i server internet . 

-Attualmente le connessioni veloci sono basate su fibra e la tecnologia ADSL è stata superata, il suo successo derivò anche dal fatto che sfrutta l'apparato telefonico senza bisogno di modifiche , con l'adsl la centrale è collegata all'armadio stradale da un cavo di rame e sempre da un cavo di rame(il doppino telefonico) dall'armadio stradale alla singola utenza ,l'adsl può quindi essere utilizzata nelle zone che non sono ancora raggiunte dalla fibra,

-Le connessioni che utilizzano fibra si possono distinguere in alcune categorie ben precise che possono servirci per valutare concretamente le diverse offerte delle compagnie telefoniche :

1)FTTC (Fiber To The Cabinet) : in questo caso la trasmissione è su fibra dalla centrale fino all'armadio stradale (cabinet) e su doppino dall'armadio fino all'utenza .Per questo tipo di connessione la massima velocità è di 300 Mbps, la velocità degrada all'aumentare della lunghezza del tratto in rame.

2)FTTB (Fiber To The Building) : per questo tipo di connessione la fibra arriva fino all'edificio ,l'ultimo tratto ,fino al singolo appartamento è in rame.Per questo tipo di connessione la velocità massima teorica è di 1 Gigabit/s

3)FTTH (Fiber To The Home) : con questa tipologia di struttura la connessione dalla centrale fino all'edificio è su fibra e la connessione dall'edificio fino alla singola abitazione è su fibra.La velocità massima è superiore ad 1 Gigabit/s .

venerdì 1 aprile 2022

Come recuperare file cancellati

 Può capitare di cancellare per errore dei file che invece ci sarebbero ancora utili ,per risolvere il problema possiamo utilizzare software specifici per recuperare i dati , questo è possibile se i file cancellati non sono stati sovrascritti . Anche la formattazione porta alla perdita definitiva dei dati quando viene eseguita in modalità completa da Windows Vista in poi (https://docs.microsoft.com/en-US/troubleshoot/windows-server/backup-and-storage/format-command-not-write-zeros-to-disk) mentre è possibile che i dati siano recuperabili nel caso sia eseguita quella veloce. La possibilità di una rottura fisica di un hard disk deve farci prendere in considerazione di attuare delle politiche di backup efficaci .

Un software per il recupero dei dati è PhotoRec , un software freeware ed opensource, 


è scaricabile in coppia con TestDisk( qua la pagina wiki dedicata a TestDisk) qui la pagina wiki di PhotoRec sicuramente da leggere per conoscere le interessanti potenzialità del programma, segue il link per il download dei due software https://www.cgsecurity.org/wiki/TestDisk_Download

trattandosi di due software opensource potete andare a scaricare il codice da qui "https://www.cgsecurity.org/testdisk-7.2-WIP.tar.bz2"  . Photorec permette di recuperare file anche da fotocamere digitali,smartphone memory cards ,cd rom ,compact flash ed altri supporti di memorizzazione

Un altro software adatto allo scopo è Recuva , si tratta di un software prodotto da CCleaner , azienda che ha prodotto anche CCleaner uno dei più noti software per la pulizia del registro, è possibile scaricare da qui  il programma d'installazione .

Clicchiamo sull'installer



Il license agreement è in italiano End User License Agreement (ccleaner.com) , clicchiamo su install ed otteniamo 


 clicchiamo su "Run Recuva" e visualizziamo 


clicchiamo su next e verrà aperto il wizard dove ci viene chiesto di che tipo sono i file da recuperare :


scegliamo documents poichè abbiamo cancellato per test un file con estensione .odt creato con OpenOffice ,clicchiamo next ed otteniamo 



Il software ci permette di scegliere dove era il file che abbiamo cancellato,se non lo ricordiamo selezioniamo la prima opzione ,per provare l'applicazione selezioniamo la prima opzione e clicchiamo Next : 

quest'ultima schermata dello wizard ci preannuncia il risultato che otterremo.



selezioniamo il file:

 clicchiamo su Recover scegliamo dove salvare il file recuperato ed abbiamo raggiungo il nostro scopo .

Abbiamo utilizzato la versione free di Recuva.

Un ulteriore software utile a recuperare i file cancellati è EaseUs Data Recovery Wizard possiamo scaricarlo da qui : https://it.easeus.com/data-recovery-software/data-recovery-wizard-free.html  ,segue la prima schermata:
se abbiamo scelto il disco C: ci verrà proposta 


Abbiamo eliminato un file "file_da_cancellare.txt" mandandolo nel cestino ,abbiamo poi eliminato il file dopo averlo individuato all'interno del cestino,il sistema ci ha chiesto conferma dicendo che il file sarebbe stato eliminato permanentemente ,abbiamo proseguito con la cancellazione. Ora abbiamo individuato il file cercandolo per nome attraverso un interfaccia intuitiva :

dobbiamo solo premere Recupera e scegliere la directory in cui il file recuperato verrà salvato .
Nella cartella da noi indicata viene creata una sottodirectory di nome Recovered la quale al suo interno ha una cartella di nome Create dentro questa directory troveremo il nostro file recuperato . 
Il programma ci avverte  che abbiamo ancora la possibilità di scaricare 511.99 MB di recupero file, si possono recuperare solo 512 MB di file nella versione freeware

mercoledì 30 marzo 2022

Come creare una password sicura

 Per creare una password sicura possiamo affidarci a :

-generatori online 

-applicazioni in esecuzione sul nostro pc

- oppure possiamo costruirla sommando caratteri che derivano dalle varie possibilità di cui sopra

  vediamole una categoria alla volta :

I generatori online  : esistono diversi siti che offrono di generare una password forte :

a) https://passwordsgenerator.net/  sito di uso immediato permette di fare parecchie scelte,dalla lunghezza della password ai tipi di caratteri da utilizzare,si può scegliere di non farsi trasmettere la password su internet ed invece generarla sul nostro dispositivo (flaggare checkbox "Generate On Your Device") , la connessione è comunque in httpS (quindi Sicura)


b) https://www.lastpass.com/it/features/password-generator : altro sito molto ben fatto ed immediato

    


si può scegliere la lunghezza della password, dopo si può scegliere un radio botton con 3 scelte:

Facile da dire: evita i numeri ed i caratteri speciali 

Facile da leggere: evita i caratteri ambigui : ad esempio 1 ed l oppure 0 ed O

Tutti i caratteri : in questo caso vengono utilizzati tutti i caratteri compresi quelli ambigui , i numeri, i simboli e tutti i caratteri compresi quelli maiuscoli e quelli minuscoli 

in seguito si può scegliere tra i check box quali insiemi di caratteri selezionare tra :

        Lettere maiuscole

        Lettere minuscole

        Numeri

        Simboli

c)   https://www.nexcess.net/web-tools/secure-password-generator/

     



Questo sito offre oltre alle password classiche anche le word based password in cui si scelgono quante parole devono comporre la password e quanti numeri devono essere presenti. Purtroppo il servizio è in sola lingua inglese quindi le parole "casuali" sono inglesi :-( .


Le applicazioni locali per generare password:  

a)Free password generator ,si tratta di un applicazione per windows 


Quest'applicazione ha il pregio di essere eseguita sul nostro computer localmente il che visto che si tratta di password magari "delicate", non guasta.

b) Un'altra applicazione gratuita è Advanced Password generator , 
     permette di generare una sola password alla volta
    

ma scorrendo sulla barra possiamo aggiornare la password alla lunghezza scelta e scorrendo avanti ed indietro le password sono sempre nuove , interessanti le "password options" che ci permettono anche di creare un insieme customizzato dei caratteri da usare per la costruzione delle password    


Ora che abbiamo visto alcune applicazioni web ed alcune applicazioni installabili sul nostro pc vediamo alcune tecniche per craccare le password in modo da essere consapevoli quando scegliamo una password rispetto alla possibilità che venga individuata.

-Attacco "Brute Force" : l' attacco di forza bruta esegue tutte le permutazioni possibili fino a trovare la password "giusta", in realtà questo tipo di attacco non è spesso utilizzato poichè una password robusta potrebbe richiedere secoli e secoli di cpu al 100% prima di trovare la password giusta , questo attacco è inefficace nel caso ci siano più parole ,oltre a caratteri casuali, che aumentino la "massa" della password

-Attacco dizionario: in questo caso l'attaccante dispone di un dizionario composto da un elenco di parole possibili e le prova,questo tipo di attacco è inefficace nel caso in cui facciano parte della password anche un pò di caratteri casuali 

Questi sono due tipi di attacco diretti , che cercano di trovare ognuno a sua modo la password . Se ad una password di 16 caratteri casuali aggiungiamo anche un paio di parole "casuali" (ad esempio "pizza4stagioni") magari inserendole dopo il terzo carattere (uno a caso va comunque bene ovviamente)  abbiamo una password praticamente inattaccabile con un attacco di forza bruta ed altrettanto resistente ad un attacco dizionario .

 Le parole servono a renderci più facile ricordare la password che non se fosse tutta di caratteri casuali, dobbiamo però evitare di usare scorciatoie che ci permettano di ricordare facilmente la password ma che siano a conoscenza anche di altri , un esempio: la data di nascita . 

In ogni caso è meglio cambiare la password spesso , al massimo ogni due-tre mesi.

Altra regola sempre valida non usare la stessa password per diversi siti-applicazioni poichè nel caso uno di questi ultimi fosse crackato sarebbero in pericolo anche gli altri nostri servizi che condividono quella password , i quali magari per l'accesso chiedono l'email oltre alla password e l'email è a volte molto facile da reperire.

Ovviamente fate attenzione alle cosiddette tecniche di social engineering : tra queste le più comuni consistono nel farsi dire dalla vittima le credenziali chiedendole tramite email o sms, potete avere una password "perfetta" ma se la consegnate ad un hacker serve a poco . 

Altro problema è dove custodire in sicurezza le password : 

una risposta a questa domanda possono essere i password manager : questo tipo di programmi salvano in modo crittografato le password che noi inseriamo utilizzando una password da noi impostata (detta generalmente master password) e le riportano in chiaro quando re-inseriamo la password.

Andiamo ad analizzare KeePass  password manager(https://keepass.info/):

 si tratta di un programma gratuito ed opensource(linguaggio c#) :  permette di utilizzare come algoritmo di cifratura AES-256 (https://it.wikipedia.org/wiki/Advanced_Encryption_Standard ),si tratta di un algoritmo di crittografia simmetrica quindi viene utilizzata la stessa password sia per crittografare che per decrittografare. I dati vengono salvati in locale sul nostro pc , è quindi fondamentale che il nostro disco non venga danneggiato per evitare di perdere tutto, è meglio aggiungere il backup del database di KeePass "nomefile.kdbx" ai nostri backup fatti su  un disco diverso , può andar bene anche una pendrive per salvare il db anche se i dischi sono generalmente meno soggetti a rottura rispetto alle pendrive. Fondamentale ricordare la master password ,se la dimentichiamo non possiano recuperare l'elenco di password che abbiamo inserito. Quando impostiamo la master password il programma può produrre un pdf da stampare su sui salvare locazione della copia di backup e master password : 


 Il pdf soprastante deve essere letto completamente ed una volta compilato deve essere riposto in un luogo sicuro come specifica il documento stesso.

L'interfaccia del programma è piuttosto    semplice.All'indirizzo https://keepass.info/help/base/index.html trovate l'help ed i numerosi link portano a puntuali help specifici  ,ad esempio KeePass può importare/esportare elenchi di password da altri gestori di password https://keepass.info/help/base/importexport.html oppure da file csv 


KeePass consente di compilare i form di login trascinando username e password salvate nei suoi elenchi, qui un immagine d'esempio: https://keepass.info/help/base/usingpws.html#dragdrop , usando questa comoda utilità evitiamo inoltre che un possibile keylogger possa memorizzare i caratteri immessi da tastiera. 

Questo software ha anche un sofisticato generatore di password :

per quanto io conosca è il miglior software per gestire le password in locale gratuito ed opensource.





Crittografia e WCF per passare una password ( od una qualsiasi altra stringa (xml,json, etc.etc.) ) da un applicazione ad un' altra in sicurezza

 Il codice che segue è da considerarsi in alpha e da non utilizzare in un ambiente di produzione , qui potete trovare il  "progetto...