Archives For Database

Avevamo già parlato di ServiceDesk Plus e tuning qualche tempo fa, quando la piattaforma principale girava su MySQL (se la usavi già da qualche tempo), ormai andato completamente fuori supporto secondo lo sviluppatore del software (è stato richiesto il passaggio a PostgreSQL per continuare a ottenere supporto):

Pulizia e Tuning di ServiceDesk Plus (MySQL)

Cosa cambia dal punto di vista del tuning dell’installazione con PgSQL?

Tuning di ServiceDesk Plus (PostgreSQL)

Nulla a livello di Wrapper Java, almeno rispetto alla precedente volta quando si parlava di modifica per macchine con almeno (o più) di 4 GB di RAM, che è poi lo stesso concetto di base che riguarda l’ulteriore modifica del file di configurazione del Postgres suggerito sempre all’interno della community del prodotto (ServiceDesk, nda).

Ferma il servizio di ServiceDesk prima di continuare ed effettua un backup dei tuoi attuali dati (consigliato uno Snaphost della macchina, se virtuale).

Ti ripropongo ora il passaggio relativo al Wrapper del precedente articolo:

Il file di configurazione del Wrapper Java è quello che trovi in C:\ManageEngine\ServiceDesk\server\default\conf\wrapper.conf, da ritoccare sui due valori suggeriti:

# Initial Java Heap Size (in MB)
wrapper.java.initmemory=128

# Maximum Java Heap Size (in MB)
wrapper.java.maxmemory=256

a (nel caso della mia macchina con più di 4GB di RAM, occhio quindi alla tua):

# Initial Java Heap Size (in MB)
wrapper.java.initmemory=256

# Maximum Java Heap Size (in MB)
wrapper.java.maxmemory=1024

[…]

Ciò che stavolta cambia è il file di configurazione relativo al database. Sto parlando del postgres_ext.conf che dovresti poter trovare già nella cartella ManageEngine\ServiceDesk\pgsql\data. Probabilmente al suo interno potresti già trovare qualche specifica, per esempio:

wal_level = archive
archive_command = 'IF EXIST archive.bat (archive.bat "%p" "%f")'
archive_mode = on

Ciò che tu devi fare, è semplicemente dare un colpo di invio e aggiungerne qualcuna in più, per includere nuovi parametri entro i quali Postgres può continuare a riservare memoria per sé. Sto parlando di questi:

shared_buffers = 512MB
maintenance_work_mem = 100MB
effective_cache_size = 512MB
work_mem = 12MB

che, rispettivamente:

  • shared_buffers: corrisponde generalmente al 25% della memoria di sistema. Su Windows, 512 MB può essere il valore massimo.
  • maintenance_work_mem: corrisponde circa il 5% della memoria di sistema, ma senza superare mai i 512 MB.
  • effective cache size: si aggira approssimativamente sul 50% della memoria fisica disponibile, ho personalmente continuato a indicare 512 MB anche se avrei potuto tenerlo più alto.
  • work_mem: riporta un valore ragionevole che si attesta tipicamente tra i 4 e i 64 MB.

Il riferimento sulla community di ManageEngine, seppur riferito a SupportCenter, è questo: pitstop.manageengine.com/portal/community/topic/supportcenterplus-optimize-postgresql

Puoi riavviare ora il servizio di ServiceDesk per verificare se la modifica alla configurazione appena operata ha portato i benefici sperati (risposta positiva nel mio caso).


Condividi l'articolo con i tuoi contatti:

Rispondo a una domanda abbastanza comune che viene generalmente rivolta a mezzo mail o tra una chiacchiera e l’altra quando ci si trova con conoscenti che muovono passi autonomi sul web. WordPress è meraviglioso, è adatto a qualsiasi tipo di sito web e sì, può contare su una miriade di temi e plugin disponibili gratuitamente e a pagamento.

Quali sono però i 5 passi comuni per evitare che qualcosa vada storto esponendosi a un attacco dall’esterno? Provo a darti una base –spero– solida.

WordPress: 5 step per la sua (e tua) sicurezza

Questo nuovo articolo va a riprendere (parzialmente) e fare coppia con uno più vecchio, che trovi ancora qui. Cominciamo?

Occhio a username e password

Che vuol dire tutto e nulla.

WordPress: 5 step per la sua (e tua) sicurezza 3

Ciò che intendo è, per esempio, non utilizzare l’account amministrativo di default (che va quanto prima degradato a semplice utente, se non addirittura eliminato), in favore di un nuovo account da te appositamente realizzato, amministrativo, con username non facilmente indovinabile e con una password complessa (parleremo anche di password robuste quanto prima, ma ti porto a questa vignetta, che tanto spiega in merito). Non utilizzare la stessa password che hai già usato in passato per altri servizi. Fatti aiutare da un buon password manager se ti serve.

Inutile dire che l’autenticazione e due fattori è ormai una cosa fondamentale. Dai un’occhiata qui per capire di cosa sto parlando: gioxx.org/2016/09/01/wordpress-e-authy-autenticazione-onetouch.

Verifica i plugin installati

Che si traduce con:

  • utilizza dei plugin costantemente mantenuti, che non superino (se possibile) i 6 mesi dall’ultima data di aggiornamento;
  • cancella quelli non più utilizzati, che non ti servono, non pensare che un domani possano tornarti utili ancora, perché si fa sempre in tempo a ricercarli nuovamente e reinstallarli;
  • cerca di rimanere informato in merito ai loro cambiamenti, perché è facile che un attacco possa sfruttare falle in loro integrate (oppure in servizi a cui si appoggiano).

Capisco che spesso non è cosa semplice, però potrai sempre chiedere un aiuto alle community di condivisione e assistenza sul mondo WordPress in giro per il web, già più approcciabile per chiunque.

Aggiorna WordPress

Ma anche i plugin, che poi potrebbe ricadere nella voce precedente.

WordPress: 5 step per la sua (e tua) sicurezza 2

Tenere aggiornato ogni sistema (non solo operativo) è fondamentale per tappare falle scoperte e dichiarate, prima che qualcuno le sfrutti nella peggior maniera possibile. Quando viene pubblicata una nuova versione di WordPress, questa va a correggere problemi e anomalie generalmente importanti, che ti permettono di dormire sonni tranquilli. Per fortuna, salvo problemi o limitazioni imposte, WordPress aggiorna automaticamente ogni minor release, lasciando a te l’onere di pensare alle major.

Aggiornare costa solo un paio di clic, ma prima di farlo ricorda di verificare che non ci sia del codice personalizzato che possa smettere di funzionare in seguito all’operazione (chiedi aiuto al tuo sviluppatore nel caso non sia tu direttamente a occuparti del tuo blog).

Tieni sempre un backup aggiornato

WordPress: 5 step per la sua (e tua) sicurezza 4

Sia del database, sia dei file salvati sullo spazio disco del server. Se i secondi cambiano forse meno spesso (occhio però alle immagini e più in generale ai media caricati online), il primo è in costante crescita e modifica. Avere una copia di backup aggiornata è fondamentale per evitare di incorrere in possibili disastri (causati da te, dal tuo provider o da qualcuno di completamente estraneo).

Per portare a termine questa operazione esistono decine di plugin, sia gratuiti che a pagamento. Io ho scelto di affidarmi a BackUpWordPress della Human Made.

BackUpWordPress
BackUpWordPress
Price: Free

Comodo, molto personalizzabile e disponibile anche in versione gratuita limitata (io uso questa), lasciando fare poi a SyncBack il lavoro sporco (quello del download totale di tutti i file, backup compresi). Ce ne sono anche altri (di plugin, intendo), magari prova a dare un’occhiata a questo articolo di ThemeTrust pubblicato qualche tempo fa: themetrust.com/wordpress-backup-plugins (e provali sempre in ambiente di test, mai di produzione!)

Utilizza un plugin di sicurezza

WordPress: 5 step per la sua (e tua) sicurezza 1

Che sembra una sciocchezza, forse, ma non lo è. Un plugin di sicurezza ti aiuta a prenderti cura della tua installazione WordPress, suggerendoti dove mettere mano per evitare sgradite sorprese. Ne esistono di ogni tipo, e generalmente sono tutti in grado di suggerire buone strategie di protezione della propria area amministrativa, fare scansioni alla ricerca di possibili anomalie (sfruttabili dall’esterno), limitare gli accessi di ogni utente conosciuto (e non, soprattutto).

Io utilizzo da tempo iThemes Security (ex Better WP Security). Ne ho parlato in maniera approfondita in un precedente articolo disponibile qui:

Proteggere WordPress da login non autorizzati

Tutto chiaro? Al solito: per consigli, suggerimenti e critiche costruttive, l’area commenti è a tua totale disposizione, sempre ben felice di leggere cose nuove e interessanti! Per il supporto, invece, vi rimando al forum di ogni singolo plugin, o genericamente al forum della community italiana di WordPress.

Buon lavoro!

Condividi l'articolo con i tuoi contatti:

Stavo facendo regolare manutenzione della macchina di HelpDesk (quella che in ufficio fa girare un’installazione di ServiceDesk Plus, te ne ho già parlato in passato) e mi sono accorto che nel database, la tabella relativa ai log di errore, era cresciuta fino a toccare quota 5,5 GB circa. Dato che con la migrazione a Windows 2012 Server ci siamo portati dietro lo storico di quanto operato fino a quel momento, ho contato nell’errorlog qualcosa come 200.000 eventi e più, circa 6 anni di onorato servizio. Era arrivato il momento di fare un po’ di pulizia.

ServiceDesk: una toolbar personalizzata sempre in vista 1

Per farla breve: utilizzare la GUI in questo caso è impossibile. Gli eventi sono troppi, il software di HelpDesk non è in grado di navigare correttamente tra le tab del log. È quindi consigliato operare direttamente sul database, dopo aver eseguito un backup dello stesso (non si sa mai, fallo senza pensarci due volte e mettiti al sicuro). L’operazione richiederà un rapido fermo dei servizi (immediatamente riavviabili) e non dovrebbe impattare troppo sull’attività dei tecnici e degli utenti, ammesso che il server che ospita l’applicazione abbia sufficiente RAM e CPU a disposizione per tenere a bada i consumi del motore SQL (nel mio caso MySQL) e Java.

Per effettuare una buona pulizia, sono stato anche costretto a un rapido tuning dell’applicativo, andando a modificare alcuni parametri consigliati da Manage Engine. Mettiti “comodo” (si fa per dire) e preparati a fare qualche ritocco sotto al cofano.

Pulizia e Tuning di sistema

Volendo tenere gli ultimi 60 giorni di log e quindi buttare via tutto il resto, sarà necessario dare alla macchina un attimo più di sprint, questo è necessario nel caso in cui quella tabella sia troppo ricca di eventi (puoi vederlo tu stesso con un semplice clic su Community (l’icona del supporto, nelle ultime versioni di ServiceDesk Plus) → System Log Viewer:

Pulizia e Tuning di ServiceDesk Plus

Come detto prima, quel numero “of 2368” superava i 200.000!

Una volta connesso al DB MySQL, l’operazione di pulizia fallirà quasi certamente a causa del buffer InnoDB “troppo stretto“. Puoi controllare tu stesso. Per connetterti al MySQL che sta girando sulla macchina dovrai aprire un prompt dei comandi, quindi andare in C:\ManageEngine\ServiceDesk\mysql\bin, ammesso che tu abbia installato tutto nel disco principale del server (altrimenti sostituisci C:\ con la lettera del drive all’interno del quale si trova ServiceDesk Plus).

Se anche il tuo ServiceDesk Plus utilizza MySQL, continua la lettura delle istruzioni di seguito, in caso contrario dovrai modificare il metodo di collegamento (consulta questa risposta sul forum ufficiale: forums.manageengine.com/topic/how-to-delete-all-log-files#49000007368489):

mysql.exe -u root -P 33366 servicedesk

Una volta connesso, lancia la cancellazione dell’intervallo desiderato (nell’esempio, ho mantenuto 60 giorni di storico, tu puoi ovviamente modificarlo aumentandolo o diminuendolo a piacere), l’istruzione di seguito è valida per MySQL:

delete from errorlog  WHERE DATEDIFF(NOW(),FROM_UNIXTIME(OCCURREDTIME/1000))  >60;

Quasi certamente arriverai a vedere l’errore 1206, causato dall’elevato numero di lock rispetto allo spazio a disposizione in tabella. Per verificare il perché, prova a lanciare uno show global variables like 'innodb_buffer%':

Pulizia e Tuning di ServiceDesk Plus 1

Quel valore (8,388,608 espresso in byte) è basso, è circa l’equivalente di 8MB, non è sufficiente. Per questo motivo sarai costretto a modificare il batch che si occupa di lanciare il motore SQL di ServiceDesk Plus, in base alla RAM a tua disposizione sul server, secondo quanto suggerito nel forum del prodotto: forums.manageengine.com/topic/manage-engine-supportcenter-plus-slowness-and-takes-ages-to-load-the-request-screen. La mia macchina ha più di 4GB di RAM, per questo motivo ho aperto C:\ManageEngine\ServiceDesk\bin\startDB.bat e ho inserito i vari parametri suggeriti:

@start "MySQL" /B "%DB_HOME%\bin\mysqld-nt" --standalone --lower-case-table-names=1 --basedir="%DB_HOME%" --port=%DB_PORT% --datadir="%DB_HOME%\data" --default-character-set=utf8 --set-variable=query-cache-type=2 --read_buffer_size=128K --read_rnd_buffer_size=2M --sort_buffer_size=4M --myisam_sort_buffer_size=8M --key_buffer_size=64M --innodb_buffer_pool_size=750M --bulk_insert_buffer_size=16M --table_cache=1024M --innodb_flush_log_at_trx_commit=0 --low-priority-updates

Stessa sorte toccata al file di configurazione del Wrapper Java, quello che trovi in C:\ManageEngine\ServiceDesk\server\default\conf\wrapper.conf, modificato alla stessa maniera e ritoccato sui due valori suggeriti, da:

# Initial Java Heap Size (in MB)
wrapper.java.initmemory=128

# Maximum Java Heap Size (in MB)
wrapper.java.maxmemory=256

a (nel caso della mia macchina con più di 4GB di RAM, occhio quindi alla tua):

# Initial Java Heap Size (in MB)
wrapper.java.initmemory=256

# Maximum Java Heap Size (in MB)
wrapper.java.maxmemory=1024

A questo punto potrai fermare e avviare nuovamente il tuo ServiceDesk Plus. Così facendo, collegandoti nuovamente al database, dovresti poter notare che il valore di innodb_buffer_pool_size è aumentato fino a toccare la quota richiesta dalla tua modifica nel file batch (startDB):

Pulizia e Tuning di ServiceDesk Plus 2

Ora potrai finalmente lanciare la pulizia, che non dovrebbe più bloccarsi, e che dovrebbe pulire quanto richiesto entro qualche minuto di lavoro al massimo:

Pulizia e Tuning di ServiceDesk Plus 3

Ora finalmente potrai navigare il System Log da interfaccia grafica di ServiceDesk Plus, avrai reso più rapidi i backup da eseguire quando si lancia un upgrade di prodotto e avrai risparmiato un po’ di spazio su disco, il tutto condito da una maggiore velocità di avvio della piattaforma.

Non male, vero? :-)

Condividi l'articolo con i tuoi contatti:

Non è certo una rarità, può capitare che un utente possa perdere l’accesso al proprio PC, che dimentichi o che non sia mai stato messo a conoscenza della password di amministratore locale di sistema. Esistono diversi modi per intervenire (a esclusione del volo del PC dalla finestra, nda), quello più alla portata di chiunque è intervenire con un’immagine di sistema live e andare a ritoccare il database SAM, che conserva le informazioni riguardanti i login degli utenti locali di Windows (qui maggiori informazioni).

Manutenzione Windows

Nulla di complesso, occorre esclusivamente fare attenzione alle operazioni che si va a compiere, avere una buona conoscenza del BIOS e del boot è certamente un plus (che servirà, giusto per anticiparvelo). Ciò che davvero serve avere a disposizione è Chntpw, il vecchio (e sempre sia lodato) Offline NT Password & Registry Editor, disponibile gratuitamente su chntpw.com/download.

Due le possibili strade: utilizzare l’immagine messa a disposizione dal sito web ufficiale del progetto oppure passare da una immagine live di Ubuntu. La prima è certamente quella più veloce e consigliata, ma potrebbe anche non funzionare al primo colpo. Dipende da quanto il vostro PC sarà disposto a digerire questa soluzione senza andare in Kernel Panic. La seconda è un’ancora di salvataggio che invece pare funzionare sempre (ma richiede più passaggi).

Live di Chntpw

Scaricate il file ISO dalla pagina chntpw.com/download. A oggi la versione disponibile è la 140201 (link diretto: pogostick.net/~pnh/ntpasswd/cd140201.zip), salvate il file sul Desktop (o altra cartella, non importa) e scompattatelo per ottenere il file ISO.

Procuratevi una chiave USB da destinare al boot, sulla quale caricare la ISO del software, e seguite quanto spiegato nel mio articolo “WinSetupFromUSB: installare un sistema operativo da chiave“, si tratta ovviamente di un’immagine di tipo “Linux ISO/Other Grub4dos compatibile ISO”. Una volta pronta, inserite la chiave USB nel sistema sul quale dovete recuperare l’accesso amministrativo, avviatelo da chiave e seguite ogni schermata proposta in questa galleria, vi guido passo passo (fate clic sulla prima immagine per far partire la galleria con descrizione, poi scorrete ogni schermata fino al termine!):

Per chi dovesse avere problemi con la galleria, ripropongo qui i passaggi chiave:

  • Boot da chiave, confermate semplicemente con INVIO.
  • Chntpw individua il disco sul quale è installato Windows. Confermatelo anche voi inserendo il numero corrispondente al disco e premete INVIO.
  • Fate partire una richiesta di modifica del database SAM (potete premere direttamente INVIO).
  • Premendo direttamente INVIO accederete alla modifica degli utenti locali del database (e relative password).
  • Individuate l’amministratore locale, prendete nota del suo RID e riportatelo quando richiesto.
  • Se il RID è corretto (assicuratevene tramite controllo del programma stesso) procedete con la richiesta di cancellazione password (1 – Clear user password).
  • Chntpw effettuerà il reset e verificherà immediatamente lo stato dell’account, dando conferma a video (e chiedendo di usare password vuota al prossimo accesso a Windows con l’utente administrator).
  • Uscite dal programma con “q” al prompt.
  • SALVATE le impostazioni modificate nel database SAM. Senza questo passaggio tutto sarà stato inutile!
  • Dovreste ottenere conferma di modifica salvata (EDIT COMPLETE), a questo punto potrete uscire definitivamente dal programma (con “n” al prompt) e riavviare la macchina (togliendo la chiave USB per evitare che riparta).

Salvo errori, al successivo avvio di Windows dovrete finalmente riuscire a entrare con l’utente Administrator, lasciando la password vuota. Potrete ora andare a modificare la password secondo vostro piacimento, possibilmente evitando di dimenticarla ancora ;-)

Live di Ubuntu

Il primo passo-passo ha portato a un nulla di fatto, c’è qualcosa che non ha funzionato e voi vi trovate nella stessa condizione di prima. Per poter aggirare l’ostacolo ho utilizzato un’immagine Live di Ubuntu che ho portato su chiave USB di boot, esattamente come fatto con la live di Chntpw. Per poter scaricare Ubuntu (32 o 64 bit, in base alla vostra configurazione hardware e di Windows) potete andare all’indirizzo ubuntu-it.org/download.

In entrambi i casi si tratta di scaricare circa 1GB di dati. Una volta ottenuta la ISO desiderata, procedete con il caricarla su chiave USB di boot (vedi ancora una volta: “WinSetupFromUSB: installare un sistema operativo da chiave“, anche stavolta si tratta di una immagine di tipo “Linux ISO/Other Grub4dos compatibile ISO“).

Inserite la supporto di memoria USB nel PC sul quale effettuare il lavoro e avviatelo da chiave. A questo punto riproducete questi passaggi:

Dalle impostazioni di sistema relative al software e agli aggiornamenti, andate ad attivare il repository Universal, quello popolato dalla community:

Chntpw: cambiare password all'amministratore di Windows 10

HINT: Selezionare l’icona impostazioni / spegnimento (a forma di ingranaggio, in alto a destra nella schermata di Ubuntu), Impostazioni di sistema, quindi Software e aggiornamenti.

Lasciate che il sistema aggiorni la cache e la disponibilità dei pacchetti. Aprite ora un Terminale e portate a bordo chntpw tramite apt-get:

sudo apt-get install chntpw

Chntpw: cambiare password all'amministratore di Windows 11

In un’immagine Live, il disco contenente l’installazione di Windows viene generalmente caricato e messo a disposizione dell’utente per poter essere esplorato e modificato. Il database SAM si trova sempre sotto “\Windows\System32\config“, ed è proprio lì che dovrete puntare tramite Terminale. Inserisco un paio di screenshot catturati sulla live in inglese per meglio comprendere:

Per chi dovesse avere problemi con la galleria, ripropongo qui il primo passaggio chiave: spostatevi nel disco di Windows tramite comando cd /media/ seguito da un colpo di tabulatore fino a trovare una sigla esadecimale che generalmente lo identifica), quindi proseguire con /Windows/System32/config.

Una volta all’interno della cartella che contiene il DB SAM (nella prima immagine: /media/200A8DA2…/WINDOWS/system32/config) potrete lanciare chntpw, puntandolo direttamente all’Administrator locale di Windows:

sudo chntpw -u Administrator SAM

Da qui in poi potrete seguire le stesse istruzioni suggerite nel primo paragrafo, d’altronde il software è sempre lo stesso :-)

Attenzione: tutti gli screenshot di questo paragrafo sono stati catturati da Ubuntu 15.10, le voci non dovrebbero cambiare di molto anche in futuro, ma sappiate che non c’è mai garanzia alcuna.

Salvo errori, al successivo avvio di Windows dovrete finalmente riuscire a entrare con l’utente Administrator, lasciando la password vuota. Potrete ora andare a modificare la password secondo vostro piacimento, possibilmente evitando di dimenticarla ancora ;-)

Siete riusciti a ottenere indietro il vostro sistema? Lasciate un commento qui di seguito (anche commentando da ospiti, senza necessità di registrazione) per suggerire metodi alternativi o richiedere assistenza in base a quanto riportato nell’articolo!

Condividi l'articolo con i tuoi contatti:

Keepass Database BackupKeepass è un ottimo strumento per salvaguardare e conservare in un unico posto tutte le proprie password scegliendone una (o una diversa combinazione di autenticazione) molto più complessa che funga da Passepartout. Lo uso da diversi anni con molta soddisfazione e ultimamente ho anche reso il mio iPhone capace di leggere e scrivere nello stesso database tenuto in copia su Dropbox per averlo sempre con me.

Quello di cui vi parlo oggi è la sicurezza del database in se, come file soggetto a backup nel mare delle informazioni contenute nel PC. E’ importante che abbiate sempre una copia di sicurezza del DB, magari soggetta anche a versioning per evitare scherzi dovuti a distrazioni da parte nostra. Per fare questo basta un semplice plugin contenuto nella pagina dello stesso sito ufficiale: keepass.info/plugins.html.

Si chiama DatabaseBackup e potete scaricarlo facendo clic su keepass.info/lugins.html#databasebackup. Con Keepass chiuso estraete il file dbBackup.plgx all’interno della cartella Plugins del programma (generalmente C:\Program Files\KeePass Password Safe 2\Plugins) quindi aprite nuovamente Keepass che vi chiederà conferma per l’installazione del plugin.

A questo punto manca la configurazione, accessibile dal menu “Tools” / “DB Backup plug-in“. Scegliete la destinazione e aggiungetela, il numero di versioni del database da tenere, quindi modificate la data / ora se necessario:

Keepass: DB Backup plug-in

Salvate la configurazione e chiudete questa finestra. Ogni volta che salverete il database in seguito ad una modifica, il plugin provvederà a crearne una versione conservandola nella directory precedentemente specificata. Diversamente potrete costringerlo a farlo senza alcuna modifica al DB semplicemente da Tools / DB Backup plug-in / Backup DB NOW !

E su iPhone?

Kypass iOSHo scelto KyPass. L’applicazione è disponibile su AppStore e costa poco meno di 5€ (4,49, ndr), un investimento che vi permetterà di accedere in qualsiasi momento al database accessi ovunque voi siate, sia online che offline. Grazie alla possibilità di sfruttare Dropbox (o Google Drive se preferite!) potrete collegarvi ad una specifica cartella dove tenere i file KDBX (Keepass Database), Kypass scaricherà una versione del database che potrà essere aperta e modificata.

Se c’è copertura rete le modifiche verranno applicate al DB online, in caso contrario alla prima occasione verranno caricate le modifiche fatte precedentemente offline, molto comodo. Sfortunatamente non esiste una versione free limitata di questa applicazione e (almeno fino a qualche giorno fa) non ho trovato niente che possa sostituire egregiamente la mia scelta. Non resta quindi che lasciarvi provare e sperimentare con il vostro Keepass e Kypass su iPhone / iPad :-)

Buon lavoro!

Condividi l'articolo con i tuoi contatti: